|
|
|
|
|
by revelation
5006 days ago
|
|
I think the lecture is broader here. Frustration is really at the core of programming. And whenever you're frustrated, thats a wonderful lession ahead of you in understanding what makes the systems tick that you take for granted. I've recently had the pleasure to drill down (from C) to single machine instructions in my quest to understand why a conditional branch was seemingly having no effect, on an architecture that I couldn't debug on. As it turns out, the compiler would sometimes use a memory addressing scheme that wasn't supported on this particular architecture. I had to work around this bug by writing assembly that correctly accesses the memory. It's incredibly frustrating when you end up at a point where the only abstraction (and seemingly faulty) layer below you is nanometer-sized transistors. And all the more rewarding when you reveal the actual problem and get to extend your knowledge. (Of course, this doesn't really apply to all the ridiculous pain points that annoy us by design. Things like browser compatibility come to mind.) |
|
A recent example would be when I was trying to set up my local environment with virtualenv, whose whole purpose is to make that easy. Everything seems fine but pip (Python package manager) was throwing errors. The culprit was that virtualenv creates Python scripts in the local directory with a hashbang for a local version of Python. The thing, it turned out, is that hashbangs don't work when there's a space in the path. And there was a space in my path because I wanted to use Box's sync folder which (stupidly I must say) is called "Box Documents". Now I know.
Long story short, the point is that I wasn't trying to debug virtualenv but had to dig deeper than I wanted into it just to get started on the problems I created. :)
Though you're right: just recalling this, I have a feeling of victory over the problem.