Origins of an idiot programmer
My first desktop
I remember getting my very first desktop machine at the start of 8th grade. Before that, I had mostly used a UNIX with a UI (don’t remember which one) at my father’s office. The situation at school was slightly different - 2 old computers in the computer lab were good enough to run Windows XP, and there was always a race to call dibs on those. The rest of the machines still ran Windows 98. If you got stuck with one of those, you just accepted your fate and pretended to be productive while the lucky kids actually got things done.
So, someone getting a desktop machine with a dual core processor and Windows XP loaded on it could make a big name for themselves. Strange times. I was basically a celebrity in my friend circle. Kids would come over just to witness the dual core in action. Did it make any noticeable difference for the things we did? Absolutely not. Did we feel superior? Absolutely yes.
The early years of me getting a PC were marked with folks in my circle trying to get PCs for themselves. Most of the time, many of us would pool together and exchange CDs of games, programs, music and later, movies as well, with a pinch of some MS Office document work. The great CD exchange network of the 2000s - we were basically running a peer-to-peer network before we knew what that meant.
First acquaintance with programming
I was quite a fan of playing NFS Most Wanted 2005 on my PC. And once every while, the game would minimize after playing too long, and I had to click ‘OK’ on a large number of spawning DirectX error message boxes. Click. Click. Click. Click. About 47 of them. And after finally clicking on them all, I could resume my game for another glorious 20 minutes before the cycle repeated.
The proper course to rectify this problem would have been to search the internet for that error message, follow the steps advised and cheer once the problem was gone. Update DirectX. Reinstall the game. Check the forums. You know, normal troubleshooting.
Instead, my 8th-grade brain thought: “What if I could write a program that clicks these buttons FOR me?”
I searched for ways to automatically click on error messages on Windows and found the AutoIt homepage.
And that’s how AutoIt became the very first programming language for me. Not because I wanted to build something cool. Not because I had grand visions of becoming a software engineer. But because I was too lazy to click 47 error message boxes and too stubborn to actually fix the underlying problem.
Looking back, this might be the most programmer origin story ever.
The chosen path
I’m certain that it was my fascination with programming and laziness that drove me to pursue a career in computer science. The beautiful realization that you could spend 4 hours automating a task that takes 5 minutes - that’s when I knew I had found my calling.
And after 10 years, here I am. I wonder what I would’ve been if not for that? A dentist, perhaps. Though knowing me, I probably would’ve tried to automate tooth extractions somehow.
The development story
Today I came across an old program I wrote in 2011 - I intended for it to customize (then upcoming) Windows 8 installation media, inspired by Dino Nuhagic’s nLite (for Windows XP and below) and vLite (for Vista, 7). And AutoIt was gonna be my tool of choice.
So, I got down to work during the summer vacations, and I finally made a tool in a month (with a lot of features lacking, however) and tested it against Windows 7 installation media. The UI was completely inspired from nLite. And I had added some more tweaks I had learned from a community that specialized in tinkering with Windows installation media - https://msfn.org/
My purpose for developing the tool was merely for learning AutoIt and to see how far I could push myself. I didn’t follow any UX guidelines, nor did I know how to write maintainable clean code for that matter.
Mistakes were made
Oh, the glorious mistakes of a self-taught teenage programmer:
The monolith: I coded the entire program in a single 400KB file. No modules. No separation of concerns. Just one beautiful, terrifying scroll that went on forever. Finding a bug meant playing “Where’s Waldo” with 10,000 lines of spaghetti code.
Copy-paste driven development: Why write a function when you can copy the same 50 lines of code 17 times? Each slightly different because you “fixed” something in one place but forgot about the others. Debugging was an adventure.
Variable naming conventions: $var1, $temp, $thing, $asdfg (when I got frustrated), and my personal favorite - $x for literally everything. Future me had no idea what past me was thinking. Present me still doesn’t.
The logo situation: I made the logos using MS Paint. The icon with the guy holding the globe? Picked up from Google Image Search. Zero consideration for licensing. I was one cease-and-desist letter away from a very educational experience.
No version control: What’s Git? I just kept making copies of the folder. project_final, project_final_v2, project_final_v2_actually_final, project_FINAL_USE_THIS_ONE. You know the drill.
Comments: What are those? The code should be self-documenting, right? (Narrator: It was not.)
Once I confirmed it working with Windows 7, I was quite satisfied with my work and that was it. Summer vacations ended, the year passed, then another 2 years, and finally, once I started college, I got my laptop. I made a point of transferring all my important content from the desktop machine to my new Windows 8 laptop, but I totally forgot about this program, until I came across it today.
Testing the program (9 years later)
I’m wiser than I was 9-10 years ago. I have better working knowledge of computers and programming languages and years of coding have also improved my overall skills. I now know what a function is. I use version control. I even write comments sometimes.
The entire world is on a lockdown owing to COVID-19, and I am slowly running out of things to do. So here I am, having spent the entire day finally testing my program against a Windows 8.1 Installation Media (it’s the only one I have, sorry), I’m proud to report that most of the features work.
Wait, what?
I opened the code expecting to cringe into oblivion. And I did cringe. Hard. But then I ran it, and… it worked? Microsoft obviously changed a few bits of the underlying OS, but I tried building the installation media and booting to it, and everything just works.
My terrible, uncommented, single-file monstrosity of a program from 2011 still functions in 2020. I don’t know if I should be proud or concerned about the state of software engineering.
Show me the damn thing
Well here you all go:
-
img-00.png -
img-01.png -
img-02.png -
img-03.png -
img-04.png -
img-05.png -
img-06.png -
img-07.png -
img-08.png -
img-09.png -
img-10.png -
img-11.png -
img-12.png -
img-00.png -
img-01.png -
img-02.png -
img-03.png -
img-04.png -
img-05.png -
img-06.png -
img-07.png -
img-08.png -
img-09.png -
img-10.png -
img-11.png -
img-12.png
Lessons learnt
My code works, but it’s still very poorly written. It’s like finding out your childhood drawing actually looks decent from far away, but up close it’s still a mess of crayon outside the lines.
MS Paint is not a design tool. I would use my iPad today. Or, you know, hire someone with actual design skills. The bar was underground back then.
UI improvements/refinements - Clearly, a lot of them can be done. Although I do admit I’ve lost touch with UI design (I never had it in the first place). My UIs have always had that “functional but deeply upsetting” aesthetic.
I could’ve released the next cool Windows installation remastering tool. Dino Nuhagic was my life-goals at that time (the guy got a job at Microsoft, and I kind of wanted to work there, though I eventually outgrew this passion). But I was a teenager who got distracted by the next shiny thing. Probably a new game. Probably NFS.
Write. Things. Down. I have no documentation. No notes. No README. Just vibes and prayers.
The legend nobody will ever know
So, I wrote software to customize Windows 8, written before Windows 8 was actually released, that still works on Windows 8.1. Nobody will ever know. That’s a legend now. A legend buried in a folder called old_stuff_dont_delete on a backup drive somewhere.
I am grateful that I came across wonderful people like Dino Nuhagic (nuhi) and the people at MSFN, Vishal Gupta, the folks at AutoIt forums, the ResHacker community and its author(s), Bootland Forums and Ryan VanderMeulen. Thank you for placing me on the path that I’m on today, and for showing countless people that computers and programming are indeed, a truly beautiful art.
And to that 8th grader who refused to just fix the DirectX error properly - thanks for being stubborn, I guess. It worked out.