As a software developer, I deal principally with the stuff of nether. What I build can be neither felt nor smelled and exists in some strange dimension experienceable only through the viewport of a computer. Sometimes this leads me to believe the code I obsess over, pour myself into, is an imaginary container of no intrinsic worth. To illustrate what I mean, let me confide in you a true story. Oftentimes I think about the looming zombie apocalypse. The police officers and ex-military will be useful as first defenders, the engineers will build sophisticated traps to destroy the ravenous zombies, what will Computer Science majors do? What will I do? I could write those nasty zombies a pretty gnarly Python script? Maybe blow their minds with some outdated Perl code? We could have a stimulating discussion of classical inheritance vs. prototypal inheritance? I'm sure you see my point. Code has no value without an intermediary, a middle man. Computers are the small, creepy, seance from the Poltergeist that let you talk to the "spirits" (programs). Well, this week I decided to take a break from programming the ghost whisperer and instead decided to build something that would stand up in a zombie hell. No, I didn't create a crossbow. I created the next best thing: a coffee table.
There's something to be said for the smell of wood and the ache of muscles after a day of carpentry. When building a program, I tend to find the distribution of my development time works out to something like: 10% brainstorming, 40% coding, 49% debugging the code I just wrote, and 1% feeling a sense of pride in my newly working code before moving on to the next project or block of code. However, while creating the table I found my dev time being distributed very differently. It worked out to approximately: 5% creating blueprint and buying material, 75% building, and 20% putting a combination of finishing touches (stain, finish, brass plugs, etc.) on and feeling a sense of pride. What does this mean? Well, for me it means that building a table is far simpler then building a program. While a table has some planning required and some verification necessary (making sure the surface is level, sturdy, etc.), it doesn't even begin to compare to the time required for verification of a program (in fact, it's a paradigm of software development that for many programs, proving correctness is impossible and testing exists only to expose bugs). Could you imagine if this was the case for a table? If you could never see if a table was actually level but only if it was not? It would take FOREVER to build a "correct" table and it would be so, so, so incredibly aggravating to try. Welcome to the magical land of programming, where 100% correct is a fairytale on par with unicorns and Sasquatch.
I took a few things away from my experience building the salvation of mankind, protector of the realm, and primary defense against the looming zombie emergence. First, I reaffirmed to myself that building is my passion. Although I've chosen a career path which has me building virtual constructs rather then tables and cabinets, I don't think I've chosen poorly because the route I'm going will allow me to reach out to millions of people. I'll build apps and tools for them with the programming equivalent to the hammer and chisel. I'll create things which may improve their life or at the very least their day. Heck, maybe I'll even do my part when the infection starts and code Skynet 2.0 to save the human race rather then destroy it.
For those interested, below I've added a day-by-day timeline detailing the table's construction a.k.a Operation Zombie Fortress:
Day 1
Created the original plans for the table and bought material. These changed significantly as I strove to create a more zombie-proof design.
Created the original plans for the table and bought material. These changed significantly as I strove to create a more zombie-proof design.
the original blueprint |
Created the mortise and tenon joints for the table ends. I had to hand chisel these.
top view of a mortise |
one of the mortises |
table ends |
Created the joints for the long rails of the table frame.
Long rail mortise |
artistic long rail mortise |
completed top of the table frame |
Well that ends this weeks riveting entry. My coercive compatriots, if my fingers haven't been ripped from their sockets and eaten like Hors d'oeuvres by the 1% zombies, I'll see you next week.
Bobby