Thursday, March 30, 2006
Wow. I haven't cracked a book in nearly a month. This is only my second blog entry for March. Robots and Eggs has even fallen from grace with the Egg Waxing Savage Monkeys who used to hang out here. Ok, I did do laundry once and mow the grass, now green thanks to days in the 70's and some rain. Where have I been and what have I been doing?
Generally I've been absorbed in writing software again. Something I have not done much of since last June, when my last big project wrapped up. I wanted write some more code before the seven month hiatus turned into a year and my brain got stale. So I'm writing a small utility for a Semi-Addictive Turn Based Online Game - Strategy that I've been playing, called UltraCorps instead of SATBOGS. SATBOGS? This is why I write code instead of wearing dark socks and doing marketing. The UltraCorps link is on the right.
Programming for me is like falling down a deep well full of Krispey Kremes, and eating my way to back to the top, only without the bloated feeling, listlessness, hyperactivity, and short term coma that come after. It's nice to have large blocks of uninterrupted time to get fully immersed in what you're doing (think about the doughnut analogy again), enjoy the process (warm with sprinkles) and really have accomplished something when you're done (yummm).
It's important to pick a project where you're not fully in charge of the requirements. If you define the problem yourself, there's the temptation to avoid things that are tedious, very complicated, or are otherwise unappealing. (Unlike doughnuts.) That takes away from the challenge, and you don't learn much by doing things you already understand. It's also nice to be in control of all phases of the project from start to finish.
First you pick a project, define generally what you want it to do, and set some vague goals for the other phases. Then you figure out how you're going to solve the main problems and model your solution. Next you write some code, refine your model, and if you're lucky expand your initial goals to include lots of cool things that didn't occur to you when the project was new. Then you refine the code, clean up the once-in-a-blue-moon bugs, and add all the stuff that seperates the good software from the marginally useful. Things like GUI usability testing, tool tips, elegant error handling, and open file formats can all help the software be more of a tool than an obstacle.
It's reassuring to know that I've still got it, and that I still like it. We're moving back to Chapel Hill in the fall, and I'll be fully participating in our economy once more.
I like my tools. My desk, my old swivel chair from the Mind Tools days, my 19" ViewSonic LCD, my big white board (another Mind Tools artifact) are all things I rely on without having to think about. Office supplies keep getting better. I especially like the low-oder, funky colored white board markers they sell now. It's popular to bash MS Windows, but my homemade PC with the skull-and-crossbones covered vent in the top has been up for (checks systeminfo) 18 days, 17 hours, 3 minutes, 8 seconds. I think that's the last time the power went out, and the UPS beeping was driving me nuts. The wired and wireless network works. I can use my handmedown laptop into the back yard for the 45 mins or so it takes to drain the battery. I can even plug it into the home theater amp reciever downstairs and blast Jimmy Buffett , A Prairie Home Companion , or just shuffle all of my ripped CDs (accessed through simple file sharing, no streaming required) and see what comes out.
Life is good.