Monday, September 16, 2013

I done built a table (and a comparison of building physical objects vs. programs)

Hey all, been awhile since my last post so I apologize for that. I'm sure my legions of readers have been waiting with breath held for the past two weeks so I've come to say two things. One, I told you to yell at me if my posting became lackadaisical, so this is kind've your fault when you think about it. And two, breathe easy friends, the drought is over. Without further ado, let's dive into this weeks post.

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.
the original blueprint

Day 2
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

Day 3
Created the joints for the long rails of the table frame.
Long rail mortise
artistic long rail mortise
completed top of the table frame

Day 4
Added mortise and tenon joints for the bottom rails of the frame.
chiseling the mortises for the bottom rails
gimme gimme, more mortise
completed frame

Day 5
Glue time. And now we wait
gluing everything together

Day 6
Nailed on table surfaces, stained, and added brass plugs.
brass plugs for funsies

Day 7
Applied finish. And then was finished.
all done
all done from the side


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

Sunday, August 25, 2013

Getting A Job Was Supposed To Be The Easy Part!

Day 1: I'm home and have nothing at all I have to do! This is so great!
Day 3: There's food everywhere and I don't even have to do laundry?! I should just live here
Day 5: Okay, I'm starting to remember why I could never live here. The boredom. It's all consuming.
Day 7: Funemployment continues. I fear it will soon cease to be fun.
Day 7.5: Unemployment has begun. Get me out.

Maybe it's the whole living with my parents thing or maybe it's the fact that I swore on everything I held sacred that I would never move back home. Don't get me wrong, it's great seeing all my high school classmates who decided to graze in this tiny town like a herd of cattle, but I need to escape Alcatraz. Whatever the reason for my dismay, I need a job and I need it now.

As I plodded through my college career, there was one fact which I knew to be true and took for absolute granted: With a B.S in Computer Science, I would never fail to find a job. While my business and history major compatriots would search fruitlessly, I'd be sitting in a plush office chair with my feet on the desk and pockets bursting with gold and/or money. Probably money, but maybe a combo if I got into collecting jewelry. Oh and you know how the market fluctuates, gold might be safe. But man, it's so heavy and then I'd be all worried about like theft and stuff. So yeah probably mostly money, but back to my point. Job assurance. I'd be in demand while many of my fellow graduates would not.

However, to my dismay I'm finding that development jobs all seem to suffer from the same infuriating problem: The companies that hire for these positions are as hard to talk to as the stereotypical Computer Science student is. For example, recently I've become an avid user of an awesome site called AngelList. What they do is put you directly in touch with startups looking for new hires, all you do is browse their job directory, click on jobs you're interested in, and if the company clicked is also interested in you, the site sends both you and the company an email introducing the two parties to each other. Simple, right? Wrong. Having used the site now for about 2 weeks, I've had 11 of these introductions. Of those 11, I emailed three of my "matches," was emailed by five of my matches, and no communication was established between the remaining three matches. Okay, everything seems pretty much kosher so far. Moving on, of the five matches who emailed me, three responded to my reply email asking about next steps and only two set up a phone interview with me. Wtf? Why would a company email me about my interest then fail to respond when I'm interested? Rude, stupid, and infuriating, the trifecta. Anyways, to summarize, of the five who emailed me, only two resulted in any real outcome. Back to the three I emailed first. Not one answered my email. Not a single company out of the three. Literally do not have the words to express how aggravating this was/is. If you could see my face right now, you'd understand. All in all, this means of 11 introductions, only two amounted to any sort of tangible result. *facepalm*

So I lumber on down the road of unemployment. Flickers of opportunity drift in from off the path but slowly fade back into darkness. I will persevere. I will continue on. I won't stop until I have my 60k salary and my fully stocked fridge with Friday night outings and a stellar 401k. I will have my customized laptop and my foosball table and my own scooter which I'll use to ride freely through the office, hair blowing wildly behind me. I will have a job and I will move out, I must!


Monday, August 19, 2013

Layin' Down the Law: Bobby's Manifesto

Hey all! So this is my inaugural post and I feel like I should explain why I'm writing this blog, what it will be about, blah blah blah. First, my grammar, it will probably be bad, atrocious even. However, this is my blog and I'll do what I want to, sah1. Which brings me to my next point, I may or may not make up words in the course of writing my blog. If I do, I'll be sure to annotate said words so as not to completely lose you, my dear reader. Finally, this blog will be - how you say - eclectic. Posts will range in content from my current projects to my current peeves, from Game of Thrones to n00bs I pwn. Okay, there won't actually be anything about n00bs I pwn, what kind of monster do you think I am? I just needed to rhyme something with Thrones and I'm not very creative..

Now, onto the good stuff. Why have I suddenly been struck by the inspiration to pour my life into this electronic diary? I've never been much of a "I just have to share this with everyone" kind of guy. I did keep a journal once, but by keep I mean I wrote two entries in a journal given to me on my birthday then decided it was too much work and was stupid. I was an impatient kid, sah. Again. For some reason, I've decided to to give it another shot. I'm gonna step back up to the plate, try my hand again, give it a whirl, insert choice optimistic phrase here. But seriously, I will be trying to keep up with my blog posts. By all means, please yell at me if I start slacking.

So, there you have it. The first in a series of dull, un-interesting, posts. Are you not entertained?! <--- Gladiator reference for those of you who have no taste in movies. Stay tuned for my next entry.


Your Humble Servant,
Bobby



Definitions List:
1 Abbreviated version of "sorry"