Many faces of programming


I developed software for various computing devices during my lifetime. When I started I had a certain goal, or end game… if you will. These days I see a vastly different person in the mirror compared to when I started, and that got me thinking, “I wonder how everyone else sees me?” Hi, I’m Cliff. You’re here because you write code and nobody else truly understands what you do. I’m here because I share your story. The following is an abbreviated history of where I started my career and where I currently am. It attempts to capture how the people in my life view me and how those views evolved over the years.

frustration

As a software guy I have always been misunderstood. It’s hard to describe, in words, where the disconnect is. Take the following exchange as an example:

So my wife says, “Go to the supermarket and get me a gallon of milk and if they have eggs get 6.” When I came back she was furious with me asking, “why did you buy 6 gallons of milk??!!!”

I replied, “Because they had eggs!”

The problem exists in the different vantage points the people in my life have. In the beginning of my career I was all about backend work. It was mostly legacy AS/400 but then I got into SQL with DB2 and… well, here’s a decorated description:

(Disclaimer: The author has shamelessly linked to artwork from various corners of the internet to make a point. Any similarities with what you find here and real life scenarios is purely coincidental…)

 

The DB2 SQL Database Programmer

What my mother thinks I do

What the Starbucks barista listening to my conference call thinks I do

What I think I do

What my clients think I do

What I actually do

screenshot

 

 

 

 

 

I eventually moved into General desktop client/server programming. I felt the need to convey my career change to loved ones but I truly don’t think they understood where I was headed.

The General Desktop Programmer

What my grandparents think I do

What my uncle thinks I do

uncle-job-description

 

 

 

 

 

 

 

 

What my wife thinks I do

pacman_game

 

What my neighbor thinks I do

What I actually do

Eventually I moved into more modern technologies landing my first job working for a major dotcom company. I got my first Blackberry, then my first iPhone along with other cool mobile computing toys.

The Mobile Developer

What my older daughter thinks I do

What my younger daughter thinks I do

What my best friend thinks I do

What I think I do

What I actually do

 

…and finally I came to understand that not only do different vantage points color my perceived reality, also my choice of programming language has a huge impact on how I attack problems. The next illustration explains how various programming languages would shape ones overall college career.

Programming Languages in College

 

WindScript


A programming language for those who want to “Code like the wind!”

With WindScript you only need to use one of 2 recognized keys on your keyboard! See the sample enclosed in the root element of the XML document below.

<windscript>

</windscript>

How to Suck At Programming #739


Quickly create a patch for a single file edit using “svn diff” and then review the word wrapped command line noticing you forgot the file redirect operator “>” in the command so let’s put it in the first blank spot your eyes detect after the word “diff”…

svn diff my/complicated/path/to/the
/single/file.m > my-last-minute.patch

Becomes:

svn diff > my/complicated/path/to/the
/single/file.m > my-last-minute.patch

#Songsincode – It was fun while it lasted


Activity seems to have slowed significantly on the #songsincode trend on Twitter. It’s just as well since we all have day jobs and need a lot less distraction. I posted a few of my own. For those of you that didn’t figure them all out here’s the expanded list:

Take out the paper and the trash! Or you don’t get no spendin’ cash!
-(double) get {return getpaper && trash == taken_out ? spending_cash : nil} #songsincode

Stayin’ alive, staying alive! Ah-ah-ah-ah…
it=new Thread(go); try{it.start();} catch(InterruptedException e) {it.start(); out.println(”ah-ah-ah-ah” + it.isAlive());} #songsincode

Stayin’ alive, staying alive! Ah-ah-ah-ah…
foreverTask = new Thread(this); while(foreverTask.isAlive()) {System.out.println(”ah… ah… ah… ah…”);} #songsincode

Everybody dance now! Let the rythm take control, let the rythm move you
everybody.each { it.dance(new Date()); } rhythm.take(new Control()); rhythm.move(you); #songsincode

Whitney Houston: If I should stay,
I would only be in your way.
So I’ll go, but I know
I’ll think of you ev’ry step of the way.

if(i.shouldStay()) yourWay.contains(i); else { i.go(); for(eachStep : theWay) i.know(i.hasThoughtsOfYou); } #songsincode

Kriss Kross: some of them try to rhyme but they can’t rhyme like this 4x
4.times{ someOfThem.each { them -> assertFalse this.rhyme.compareTo(them.tryToRhyme()) : “can’t be done”} } #songsincode

Seal: I compare you to a kiss from the rose on the grey. Ooh, the more I get of you the stranger I feel… yeah!
[@”you” caseInsensativeCompare:@”a kiss from a rose on the grey”]; while([self get:@”you”]) {NSAssert([self feelStranger]);} #songsincode

Notorious B.I.G. If you got a gun up in your waist please don’t shoot up the place
Cause I see some ladies tonight who should be havin my baby

if(you.gunUpInYoWaist()) {please {shootUpthePlace(NO)} } else { ladies.each{ i.see it.canBeHavingMyBaby() } } #songsincode

Michael Jackson: C’mon with the force don’t stop! Don’t stop ’til you get enough!
MJ RIP: while(true) { if(you.getEnough()) break; else keepOnWith(THE_FORCE) } #songsincode

Bobby Brown: Every little step I take, you will be there every little step I make, we’ll be together…
2.times{ [1..99].step {assert you.willBeThere() && me.isTogetherWith(you)} } #songsincode

R. Kelly: I believe I can fly
I believe I can touch the sky
I think about it every night and day

thinkAboutIt = {i.setBelief({ assert i.canFly() && i.canTouch(getSky())})} nightsAndDays.each { thinkAboutIt() } #songsincode

How To Suck At Programming #392: Type your password into your AIM window


You’re on AIM blast. You’re having fun with your buddies, talking tech and shooting the breeze. You pack up to leave work early and run some errands. Just before signing off you can’t resist cracking one more dumb joke. “…and that’s why Budweiser employees don’t use Java!”, goes your reply to one of your AIM buddies. That triggers to one more round about Hibernate, Anheisuer Busch, and the stock market. Yes those are three topics that are totally unrelated but you don’t care. You tied them together in your twisted programmer humor-logic and made a funny. Good for you! Glancing at the clock in your Windows taskbar you notice you’re already ten minutes late! Windows Key+L locks your machine and you storm out of the building.

Arriving home after running back and forth across town to pick up odd items for your daughter’s 5th grade project, you have a chuckle at Judge Judy as she embarasses the plantiff just before awarding her the maximum amount of $5,000. That loosely reminds you of the last couple of tasks you neglected to finish before running home for the day. After firing up RDC (Remote Desktop Connection) on your Mac, you’re quickly greeted by the Windows desktop log in dialog to which your fingers instinctively dance over the letters spelling out your password. (This is, of course, the same password that you use for all of your online banking, bill payment, blogs, Twitter, and Facebook accounts.) A breif pause and the AIM outgoing message chimes. “That was unexpected!”, you mumble quietly in your skull. Your brain slowly pieces together the chain of events and colors the truth behind the chime. You weren’t sitting at your desk even though the Windows screen fooled your brain into believing you were. You were working remotely using RDC, a nifty program that can actually cache your log in password saving you the 8-12 characters that you’re too lazy to type if you don’t have to. You muscle memory just exposed your one-size-fits-all password to all of your buddies on the AIM blast that you never signed out of. Good job. You just saved over 8 key presses at the expense of the 80,000+ it will take to reset all of your accounts, explain the finger fumble to the blast group and more.

So if you wanna suck at programming, type your password into your IM window. Not only will you expose your darker secret Flickr account to all, you will have a lifetime of sleepless nights wondering “did I ever reset my other other email account?”

HTSAP #473 Thief in the night


It’s 11pm. I’ve pretended to weight train in the basement for about an hour. My wife’s out of town. The kids have had dinner and are off to bed. I’ve killed twenty minutes or so fooling with YouTube and misc web articles and I’m now off in a development zone. The world disappears around me. Nothing exists except for the keyboard the Mac touch pad and my IDE.

Out of the blue my “Spidey Senses” grab hold of me to alert of an in-home intruder but it’s waay too late! Sneaking up from behind, I turn around to learn that the intruder is already on top of me. My heart drops, muscles lock. My internals drowned with adrenaline, I wanna leap up to defend myself but that would be unnecessary. This intruder is less than my shoulder height when sitting. Besides, my frozen, fatigued muscles leave me helpless in my seat while my brain trails to keep up with the action.

The body is way ahead of the brain as it already sees its death from the would-be 3 1/2 foot assailant. The internal organs have already moved from shock to shit stains while my grey matter performs what feels like a SQL Server deep index algorithm in the foreground. Using all the random pictures that my single threaded mental process could gather, I try to piece together pixel by pixel inside the unknown silhouette. I begin to feel a sense of familiarity with the figure. Still my body is stuck in fight or flight mode. Two mickey mouse circular shapes load up first as my linear search answers a series of sequential questions. “Mickey Mouse? No! Jerry, from Tom and Jerry? Not at 11pm! Chucky Cheese? Uh-uh!” Now its been 2 seconds that feel like 8 hours and my brain is convinced it knows the invader while my left arm is ready to throw a punch at the soon-to-be victim. “…Must …continue round 12 of Pictionary!” urges the sponge in my head. “Must… swing with full force”, my body fights back in disagreement.

As second three ticks away I’m finally able to defrag enough raw material in my skull to make out the picture of my 5 year old daughter who is now witnessing Daddy have a seizure. I fight to rescind the attack order from my left arm and replace with a hug order given to both arms. It’s too late. The damage is done. What could have been a warm greeting from daughter to Daddy has turned into the trail of tears as the adorable nighttime hoodlum weeps and informs she needs to go potty. Of course my under reaction to her presence disappoints as she obviously wanted to square up in a death match. I send her crying to the toilet while a sea of angry relief washes over me. If you wanna suck at programming have kids. Not only will you miss the opportunity to fix the double screen-drawing bug that will take the better part of the following day, but you’ll have lots of fun explaining… from the emergency room… to your spouse why your youngest child asked, no begged for an uppercut to the jaw.

(No children were harmed during or prior-to the writing of this post. However the author reserves the right to jab, kick, stab, and/or shoot random figures that suddenly appear within arm’s reach after 10pm regardless of age, height, stature, gender, or religious background.)