Anyways, I've actually gotten the lead out and gone back to work. I'm not quite where I would have liked to be this week, but I'm close. I have the timing resolution logic all mapped out (as predicted, it wasn't nearly as hard as I thought) and will actually start expressing all of this in code shortly.
Milton will have to wait another night, but I fully intend to get it publicly serving a "this server basically defunct while I party like an animal at E3 all week" page.
I noticed something interesting on this project. Now that there's actual code in an actual IDE, my whole feeling about the project has changed. Even though I still can't run the code and see stuff on the screen, each little step feels like real progress. I guess it's a lot more concrete now, in a lot of ways. I actually started thinking of some of my tweaks as "feature additions" and "bug fixes" even though the code has never even been compiled yet.
Thinking back, I've always kind of been like that on projects. When I first started out, I hated doing planning stuff (like paper designs) because it didn't involve code. I've long since learned that the actual typing of code is a relatively minor part of working on nontrivial projects, but some of that attitude sort of lingers. Poking keys and spelling weird magic words all over the monitor is just cool, and it sort of defines my connection to the craft of programming.
I remember back in the old days when games showed little diagnostic console messages when they were starting up. A lot of my projects in those days were laden with meaningless dummy screens that tried to mimic that effect. I remember even writing a little QuickBASIC app that would "probe your video hardware" by repeatedly trying to change the screen mode and seeing which modes raised runtime errors. It was utterly useless, but I had it spew a lot of technical-looking text and flashing numbers, and at the time I felt like the cutting-edge guru of all programming wizardry.
To some extent that sort of feeling has never really gone away. It's a sort of special feeling to sit down and spit out all of these cryptic, magical incantations, and conjure up working software on the screen. A selfish little scrap of my ego likes to try to show normal people (as in non-programmers) my code in a silly little attempt to impress them with my lore. I still like barfing out complicated and technical-sounding error messages, even when it is counterproductive to do so (ERROR 0x75b3 from SMTP service - incorrect delivery moniker is just so much more sexy than I don't recognize that email address).
Most of that ego has been buried under the realization that the magical incantations are largely irrelevant. The thinking that produces them is what matters, and once you are trained to do the thinking, the actual spell words don't really matter a whole lot. I've also kind of gotten fed up with other people's software giving crap error messages - such as the "Incorrect Version of DirectX" message I was getting from GTA2, which took me an hour of disassembly and hackery to track down to a missing DLL file... why couldn't they have just said "You need DMUSIC.DLL version Foo.48.27489 or later" and been done with it?
I've loved programming since I first discovered it, almost 15 years ago now (that's a very scary thought). I still do - in many ways, my appreciation has deepened the more I've learned. In other ways, that appreciation has shifted and changed. I see things much differently than I did when I first started out, and sometimes the changes are drastic enough that I don't quite understand them. I suppose that's to be expected, and probably a good sign, but it's still a little bittersweet.
Some days, it would be cool to be innocent again, and feel a sense of almost spiritual wonder while browsing through the pages of incomprehensible gibberish of an EXE file opened in DOS-EDIT.
Some days.
And Before that trying to make a text rpg via batch commands. Tears are brought to my eyes.