March 12, 1975
Dear diary,
Today was a good day. I optimized a subroutine in 8080 code that shaves off 12 cycles per loop iteration! No compiler could ever dream of doing that. I bet my code could make even an IBM engineer shed a tear of joy. These folks keep talking about “maintainability” and “readability” — as if performance isn’t everything! Who needs readability when you can count every register move in your head?
Also, Mom called to check in. Am I ‘seeing someone?’ I told her optimizing assembly is a higher order calling. She didn’t laugh.
July 8, 1979
Dear diary,
Disaster struck. The manager, Frank, waltzed in, all giddy, and said we’re rewriting some components in C because it’s “portable.” Portable?! My Z80 tuned programming doesn’t need to be portable — it needs to be fast. These C programmers don’t even know what the stack pointer is doing half the time. They call printf() without even knowing how the “F” it prints things. Barbaric!
Then, out of the blue, Dave asked if I was attending the office picnic this weekend. I told him I had an important optimizations to finish. He sighed. I think he feels sorry for me.
Dave got an old Apple II. He keeps saying personal computers are the future. I told him real computers don’t come in plastic cases. He just laughed and said, “Just wait.” I am not paying for the interest (no pun intended!)
September 17, 1981
Alright, I’ll admit it. C isn’t completely useless. I converted all our library routines into C today and found it… tolerable. I still don’t trust compilers, though. I checked the generated machine code and oh boy, it was doing something ridiculous with push and pop. I rewrote a for loop in assembly and doubled its speed. Some things never change! Dave said it was smart of me to keep the assembly code for the loop in the C comments. At least he will remember to swap them out on the next recompile date. Only if the compiler had a way to let me put assembly blocks in between C, then I would not need to deal with this shit!
Lisa from HR congratulated me on my “big win” today. I didn’t have the heart to tell her that a compiler is just an overenthusiastic assistant who makes too many assumptions.
April 4, 1984
They put me on a Pascal project. Pascal! I didn’t sign up for this madness. It bloody rhymes with rascal! It doesn’t even have goto! How do you even write efficient code without goto?! Someone said “structured programming” is the future. I structured a death stare right at them.
That said, debugging this thing hasn’t been the nightmare I expected. I guess avoiding memory corruption does have its uses. Mark, from the modules team, seems unnaturally excited about “maintainability.” He even has a bumper sticker that says “Keep it Structured.” I think he’s beyond saving.
November 19, 1987
The kids in the department are talking about this thing called C++. “Object-oriented programming,” they say. “Encapsulation!” they say. I looked at some code, and I kid you not, they are passing function pointers around like it’s free candy.
I bet none of them even think about instruction cache locality. The other intern, keeps asking if we really need to worry about cache coherence. I told her we do. She looked skeptical. I feel old.
May 25, 1991
Dear Diary,
Some Finnish student named Linus Torvalds just posted about this “hobby OS” called Linux. I don’t see how it will go anywhere — who needs another UNIX?
In other news, I gave C++ a chance today. It is better than sitting around and analysing execution reports. I am sure this Linus guy was equally bored waiting for an interesting project. What I can say is, writing GUI code without manually juggling window procedures and state machines is, admittedly, less tedious. But I still hate these virtual function calls — slow and unpredictable. Tom, says “it’s just the way things are done now.” He wears sunglasses indoors and calls functions “functors.” I feel a deep sense of unease. That bit is the only constant since he joined.
August 15, 1993
Alright, now they’re saying Java is the future. “Runs everywhere,” they claim. “Memory management is automatic,” they say. Automatic?! What kind of programmer doesn’t want to manually manage memory? The same kind that doesn’t appreciate the smell of freshly debugged assembly at 3 AM, that’s who.
I asked them what Java compiles to, and they said something called “bytecode.” I asked them how it runs, and they said it runs in a “virtual machine.” I laughed so hard I nearly choked on my coffee. Raj, one of the younger engineers, didn’t laugh. He just nodded knowingly. I still don’t know what that nod meant.
January 3, 1997
I wrote my first Java program today. Don’t ask! I am on babysitting duty for the new team.
It didn’t segfault. I meant, the program didn’t segfault at all.
That was weird. I don’t know if I should feel relieved or deeply unsettled. Maybe I’ve grown too used to suffering.
Sarah, from my very first team, dropped me an email. She says she’s been working on Java applets. I didn’t reply. Some things are too painful to discuss.
June 30, 1999
Everyone is losing their minds over Y2K. Tom says the world might end, and Raj is stockpiling canned food. Meanwhile, I am still trying to beat GCC in code optimization. Priorities.
Why? Well… this new report that is circulating is intriguing as well as frustrating. It claims that modern compilers optimize code better than most humans. I tested some hand-written assembly against optimized C code using GCC. It beat me by 15%. Fifteen percent. Maybe it’s not a battle worth fighting anymore.
That doesn’t mean I have to like it, though. To top it all, James saw me doing this experiment and tried to comfort me by saying “it’s just progress.” I told him progress used to mean better code, not just easier code.
October 21, 2000
Dear Diary,
Today is my last day at work. I have decided to finally move to the farm and setup something meaningful there.
The junior devs just asked me what an interrupt vector is. I cried. Maybe the world isn’t ending after all. Just changing in ways I never imagined.
Still, late at night, when I stare at an optimized loop, I sometimes miss the raw power of the work I did. The elegance of a perfectly timed register swap. The satisfaction of squeezing performance from every cycle.
I ran into Sarah again last week. She laughed and reminded me how we used to scoff at C. Now here we are, pretending JavaScript is a real language. We had a drink, reminisced about debugging on hardware that barely had memory, and for the first time in a while, I felt like I wasn’t completely lost in all this progress.
Maybe progress isn’t about forgetting the past. Maybe it’s about knowing when to move on — while still keeping a mov instruction close to your heart.


Leave a comment