Xyzzy, Plugh, and Plover

If you truly want to understand me, you need know only one word: XYZZY.

My father was a Signal Corps officer in the US Army.  I really had no idea what this meant when we deployed to Germany in the early 80’s but I do recall the day that I got to go to work with my dad for the first time.  He was a busy man so my day at work with him largely entailed me sitting by myself with the occasional soldier checking in on me to see if I wanted something from a vending machine or knew where the restrooms were.

My father placed me in front of a dumb terminal that tied into the ARPAnet, the precursor to the Internet for the uninitiated.  Were you to see it then you would know that it was the barest of base metal frameworks as compared to the lustrous and lavish trappings it now maintains.  The Major, Dad, gave me some instructions about how to execute programs and he gave me a list of executables he recommended for somebody looking to while away their day at work with their father by poking around the world’s largest, and seemingly most secure, computer network.

I sat there staring at the terminal prompt, an irridescent green smallness in a sea of CRT blackness, infinite in its potential but equally impossible to comprehend.  I looked around at the “room” in which I sat, which was, in fact, a massive camouflage-painted trailer that could be hauled by a semi-truck.  The walls were a sour sort of greenish white and the neon overheads leeched life from the very air itself.  Sterile, crowded with equipment, and a pervasive hum of generators faintly vibrated all around.

I did not know then that this vessel would become the womb of my future.

I tapped those first tentative strokes.  Soon, I began to get my sea legs, trying commands, scanning the manual, looking at the list of programs, whatever that meant, that my father had given me.  One of those executables was called ADVENT.  So I decided to give it a whirl.  And when I ran ADVENT, my life was transformed.  Appropriately named, eh?

In fact, the program’s full name was Adventure, but owing to the limitation of the Operating System I was using, it had to be abbreviated to the six characters inscribed so firmly in my psyche.

And so I spent the day exploring the magical (albeit textual) world of what would one day become known as the Colossal Cave, an interactive text game (an interactive fiction as they are known today), based on the geography of the Mammoth Cave system sprinkled with a few puzzles and some Tolkien-inspired fantasy.  The game presents you with some text describing your environment and the things that populate it, and you then interact with the environment by typing commands, which, ideally, inspire the program to reply with new text moving the game forward, but often simply thwarting you with its limited understanding of the english language.

As it happened I was both enamored of the english language and of all things fantastic and speculative, such as Tolkien-inspired material.  I had recently been introduced to Gary Gygax’s Dungeons and Dragons role-playing game, but, because my four brothers were all disinclined to spend hours at a time on a perfectly good weekend inside at a table talking about doing things when they could be outside actually doing them, I seldom had anyone to play with.

This game, which I spent the remainder of the day playing and would subsequently finagle trips to work with my father for the expressed purpose of completing my quest, introduced me to what so many others would discover about the power of computer gaming.  Like a book, a game could transport you into another world, but this book was interactive.

And so I went home and thought about what I had experienced and had an idea.  I could use a casette recorder to describe an environment and present several options to the listener.  Then the listener could fast-forward or rewind to the a specified value on the player’s counter, press play from that point and receive new descriptions and new options based on their choices.  I set about scripting my story, describing rooms, and planning out how much tape I would need to capture the descriptions and at what point on the counter the player would need to be to begin describing text.  I recorded the text and began testing my idea.

It was difficult, it never really worked.  But I had so much fun doing it.

Evidently my passion was fairly obvious to my father who, that Christmas, gave the family a personal computer by the name of Commodore 64.  I had only just seen an IBM PC a month or so before and had been astounded, not only at its utility, but its price.  I thought there was no way we could ever afford such a thing.  But Commodore changed all of that.  And my dad gave the family its first computer.  It went more or less straight to my room and I was effectively the only person who ever used it.

And how, did I use it.

Duran Duran, Depeche Mode, a Flock of Seagulls, and more blared for hours on end as I taught myself to code in BASIC and began converting my ideas from the cassette player approach over to the C64.  It was around that time that I got my hands on a copy of Infocom’s Zork and realized that my capabilities to write text parsers were somewhat lacking.  But, again, I loved doing it.  How I couldn’t wait to get the next copy of BYTE, Popular Computing, or COMPUTE!’s  Gazette so I could rush to the type-in programs and start learning more.

It never occurred to me then that my passion would, some years later, put me in front of a computer professionally, starting with a stint in the military as a systems automation specialist followed by what is now decades worth of software development adventures.  The art of software development, the craft, has changed in so many ways since then, but then in some very simple ways remains identical.  I didn’t know that when I was using my cassette recorder with the intent to create interactive games I was, in essence, programming and, more importantly, working to create an experience for users.

So, the Adventure continues.  My quest is to capture some of the genuine joy I felt at discovering what Adventure had in store for me back then and bake that into the software products that I develop today.

I’ve never lost the love I cultivated back then, but still, every now and again, I wish I could say a magic word and go back to that little room in Germany and see the world-changing events beginning to unfold and experience the headlong rush into destiny that I experienced then.

XYZZY!

The Wide-eyed Storytellers

I’m a fairly avid Netflix user.  Several years in China without access to the voluminous amount of television programming available in the US, coupled with an ever-growing backlog of films I have yet to see (although RottenTomatoes is helping in that area as I refuse to watch anything that scored less than 70%), has put me well behind the television viewer power curve.  So I gave up and stopped watching it altogether and stuck with my Netflix DVD queue.  Cable man, get behind me.

Enter technical innovation in the form of Netflix’s Instant Watch feature and viewing on demand has truly set me free.  I now have commercial-free access to a large library of television and film on my terms at my times.  Sure, it’s not a complete library, but I don’t have enough time for that to matter.

I generally spend about an hour a day watching some great late 2000’s television (Arrested Development, Better Off Ted, Lie to Me, etc. and remember, I’m three years behind the television temporal continuum).  That’s just enough to satisfy my desire to veg on the couch but not enough to make me feel like I’ve deprived myself of the experiences life holds just beyond the front door’s threshold.  On the weekends, however, I try to shorten that backlog of film, I am an avid film fan, and allow for a couple of hours to watch a movie.  There is a long list in my queue.

Occasionally I scan the new arrivals to see if there’s something that has arrived which would trump the top-most item in the list, another benefit of the on-demand video.  I can delay my choice to the last moment to maximize the value of my time.  So satisfying.

Last night just such an optimization occurred.  I discovered that a title called The Pixar Story was now available.  It was rated four stars (actually 4.2 for me personally, according to the Netflix algorithm, and I won’t watch less than four) and, owing to my present circumstances (I recently took a job with a company who now occupies Pixar’s original Point Richmond facilities), I felt one of those curious Paulo Coehlo moments; the universe seemed to be conspiring on my behalf.  So I let her take me where she willed and fired up The Pixar Story.

I’m glad I did.  Here are some observations:

It’s interesting to see how close to failing Pixar came in their first ten years of existence and what a tremendous success they are, against all the odds. Their story is fascinating.  I love do or die moments in the trenches with great teams working on difficult (and hence interesting) problems.  An organization needs hills to conquer and Pixar took on a mountain.  Steve Jobs points out just how much investment of time, energy, and money went into the company (at a loss) before they finally were rewarded.  Not an overnight success and underscores the need for conviction and commitment to achieve your dreams.

You see the offices in which I presently work repeatedly from minutes 38 through 60.  There’s a kind of bonhomie, and a bit of reverence, I feel just treading in the footsteps of those guys so it’s pretty cool to see them filled with such creativity, joy, and industry.  I am beginning to understand where our management (who used to work with Pixar) are coming from.  I am definitely on-board with the kind of unbridled productivity, and commitment that it requires, that Pixar clearly has as a culture.  They mention in the film how they see their work environment as an expression unto itself and you’ll be happy to know that the current residents feel the same way.

The main players at Pixar are embodiments of the sorts of things I value, wide-eyed kids having fun making things.  I spent the first thirteen years of my life in Tampa, Florida.  We frequently went to Disney World, I was at the opening of EPCOT, and I am so thankful for those memories because they instilled in me an unending fascination with and curiosity concerning creating environments with such depth of texture, completeness, and seeming veracity that they take on a whole unto themselves.  You are part of a story that propels you away from the mundane and into a state of joy.

Disney’s Imagineers immediately come to mind (although they are not mentioned in the film), tasked with the mission of creating artful experiences by using technical innovation.  I think this is why I got into software development.  Creative opportunity without limit and there are always interesting technical challenges out there waiting to be solved with innovation.  That’s a huge part of Pixar’s success.

Repeatedly throughout the story references are made to the employees at Pixar and how their success hinged on the talents and collaboration of people.  Smart people, effective collaboration, and a willingness to dream and innovate.  That’s powerful.  My best friends are all people I have spent many hours with in high-pressure situations delivering quality solutions to problems.  I love people who can work together to deliver products.  And you can see that love in the people at Pixar.

Another theme of the film: it’s the story that matters.  I have marveled at how consistently Pixar has delivered films that are critically and popularly successful and they nail the reason why.  It’s their commitment to telling great stories and a willingness to risk everything to make certain that they tell the best stories they can.  If you didn’t cry in the fifteenth minute of Pixar’s Up, you’re lying.  That kind of ability to influence the emotions and intellect of others, that’s pure, story-telling prowess.  It’s vulnerable and genuine and it expands people.  This may sound silly, but I think the ability to relate stories to others, to formulate meaningful experiences and share them with others, is the single greatest skill a person can possess.

Finally, the movie relates something many pundits out there like Seth Godin have been saying of late, the best businesses and most effective people are undeterred by the prospect of failure.  Even when Pixar had an easy out at the top of their game with Disney, all their chips just sitting on the table waiting to be cashed out, they pursued their path for their own reasons.  And it can easily be argued that the company, and movie-goers, are better for it today.  Faith in the face of fear.  A willingness to accept the prospect of failure and to press forward.  Sure, maybe they also saw more money in going their own way but when you see the movie, you’ll know, these guys believe.

At one point Pixar’s Brad Bird, when talking to his team on The Incredibles production, exclaims to the team, “Film is forever.  Pain is temporary.”

How I hope I can spend the rest of my life living into the meaning of that statement.  What you make, what you leave behind is what’s important.  Life is scary, sometimes it hurts, and, yes, sometimes you even fail to achieve your hopes and dreams.  But failure passes and the pain fades with time.  And as long as you have time, you have a chance to make something lasting, something genuine, something that inspires people to want to do the same.  Go get wide-eyed and make something good happen.

Microsoft/Apple Dissociative Disorder and the Runner

I am writing this post on a MacBook Pro that I purchased in June of 2009, the first Mac I’ve purchased for myself. It is a wonderful computer. I knew just short moments after I heard that startup “chime” that I would be changed forever. It’s hard to describe. As I watch many of my friends make their first MacBook purchases this year, I inquire as to how they like the change? They love it. Why? They can’t really say. If these weren’t dyed-in-the-wool software development types, I might chalk it up to users who just need access to the Internet. But these guys are venerable and opinionated and curmudgeons. (INTJs all, if you follow MBTI) I love you, guys.

But they light up in gradiant fills and get all curvey around their edges when they attempt to enumerate the reasons for their Mac-love. It just works. It does what I want it to when I want it to. I feel more powerful when I use it. Enablement? Yes.

As the two year mark approaches on any technology I own, I begin to evaluate the level of satisfaction it gives versus the promise of “the next thing”. It is a kind of long, slow denouement in which we know the end is drawing close. The ever-growing demands of our tools and our own consumption, and even the desire to stay on the bleeding edge, cause us to begin to look less fondly on the acquisition we simply had to have less than two short years ago.

As I sat down today in front of my silvery-smooth, unibody carapace, contemplating the waxing and the waning of my many moons, I realized that my Mac’s inception date has long past, its palm flower crystal is beginning to turn black, I find that, unlike the numerous HPs, Dells, and Compaqs I have owned over the years, I feel complete and whole with this rig.  My past hardware experiences never produced such a sense.  My appetites were so unappeased in the past that I even leased equipment from Dell at one point because I knew I would retire it immediately at the two year mark.

I have no such feelings about this Mac.

To give you a sense of how I use my MacBook, and a clue as to the title of this post, I’ll tell you that at the same time I purchased the laptop, I also purchased Parallels Desktop. For the past couple years, and variously over the last eighteen, I have been intimately involved with Microsoft applications development. When I wasn’t using Microsoft tools and technologies to build web applications, I was using Sun’s Java stack and a variety of different tools all of which ran just fine on Windows. In fact, as a kind of irony, to this day I have not written an application that natively targetted an Apple device of any kind (although I have dithered quite a bit with iOS). Yes, yes, I had my dilitations with Flash and Flex as well. I even went down the Ruby/RAILs road, but I was in an experimental phase and I didn’t inhale … And in any case all of their tools typically target both OS X and Windows. Point is, I didn’t need the MacBook to pursue my profession and passion.

On the one hand I need a workman’s desktop for Microsoft development so that I can pay the bills. On the other, I want to delight in riding the wave of technical change that propels the entire span of my life and my passions.

It would seem that my bread and butter is Microsoft, but my marmalade is Apple.

I should go ahead and let you know that I am not a Windows 7 user. I’ve heard wonderful things. But a strange twist of fate had my work computer requiring that I use Windows XP, sufficient but hardly inspiring, and I am the less-than-proud licensed owner of Vista. And I simply can’t bring myself to plunk down $180 to purchase an operating system upgrade. That money was spent on the premium for the MacBook! Oh, and Snow Leopard only cost me $60.

So I spend a lot of time in a VM instance of Vista working with Visual Studio 2010, Expressions Blend, and even Adobe’s CS3 suite for which I have the windows license while I do pretty much everything else on native OS X software.

If you’re wondering if there are moments when I agonize over this arrangement, if the performance of the VM is brutal and I tear up as I watch a Rebuild All grinding away while I sip a cup of coffee and pet the dog, the answer is yes. Such is the plight of the journeyman. It seems unlikely that Microsoft will lose its grip on applications development given its slate of exceptionally good development technologies (Silverlight, ASP.NET MVC, even the C# language in its fourth iteration) and its continued willingness to employ an embrace and adapt approach to technical trends.

The Mac/Windows compromise is worth making for the time being, even if I do occasionally feel waves of Dissociation lapping at the shore of my computing consciousness.   Perhaps when we reach the two year mark this time, rather than morosely accepting my technical obsolescence and moving on in the great Carousel ritual, maybe this time, MacBook Pro in hand, I will Run, just like Logan before me.

And besides, I keep telling myself I am poised for my millions-selling App store wonder. Any day now. Perhaps when my latest marathon compilation in VS2010 is done …

HTML5 - It’s the New Style?

There is nothing new under the sun, right?  History repeats time and again.  It’s iterative, like some sort of Agile approach.  While it is tempting to challenge this notion when it comes to something as cutting edge as the craft of Software Development where marketeers would have you believing that we are on the cusp of revolution and that the truly new is just around the bend, fact is even software is constrained by the fundamentals of physics.  Interestingly, after eighteen years in the software industry, in the very midst of the promise of the new, it’s pretty easy to see how someone might arrive at the conclusion  that old is new.  And just like Agile development and its iterative nature, life seems to turn in cycles.  Just as with that much-vaunted SDLC delivery pattern, we can only hope that we improve the quality and completeness of the things we are working on or through.  The beginning of 2011 finds us very much in the next iteration.

I came to web development in 1995 while working in the Product Development group at CompuServe.  The company as a culture had taken to the web with a passion in the couple years prior, but none of us had really seen it as a serious threat to the health of the business itself.  We were, in many respects, the original online service.  My group was responsible for supporting an utterly proprietary set of server software and protocols (anyone remember HMI?) which were consumed by thick clients running on the desktop.  Our highly curated content was accessible at a premium and only via our network.

This whole “web thing” was free and completely out of control.  How could it possibly represent a threat to our finely manicured for-profit eco-systems?  In 1995, somewhere in the long dim corridors of upper management, someone must have seen a change.  AOL, our chief competitor, had been keen to integrate their service with the web by implementing a browser in their client application.  We began to notice a loss of membership.

With seeming impending irrelevance in the face of Mr. Berners-Lee, the game was afoot.  The Product Development group was given the mandate to grab a web technology and make something cool happen.  At the time I was largely a Visual Basic and C developer responsible for tools implementations, reporting, training, and carrying a pager as third-tier support (the usual Junior Developer stuff) and at the time Flaming Text was pretty cool, so I decided the logical place to start was with HTML since whipping up reports seemed like a no-brainer and we had this beta product from Microsoft called Active Server Pages.

I remember the frustration I experienced at the hands of the two erstwhile techs.  Coding HTML by hand was a total mental shift from the WYSIWYG of Visual Studio and writing VBScript, a nightmare to debug, felt like the worst kind of rinse/repeat troubleshooting as you tweaked and tweaked to get your scripts to run without the benefit of a strongly typed compiler and handy IDE.  I began to grow suspicious of my choice as I watched my good friend and fellow CompuServer David Hays get to play with this nifty Java programming language and something called an Applet, which looked very much like the forms development I had come to know and love.

As history will testify, CompuServe never did pull out of its hubris-driven nose dive, with AOL cleaning our clocks and then coming in to buy us out and clean house in 1997.  But David and I, and many people like us, did go on to enjoy the rest of the bubble years, sinking into the luxuriant recesses of many a candidate technology and framework.  ASP, which should have died, flourished.  Applets, not so much.  But Java soared as it began to reign supreme on the server-side and Microsoft continued to operate their “embrace and extend” approach to the Internet.

But all the while HTML formed the basis of movement forward even if browsers could never quite get their implementations lined up.  Actually, this was such a tremendous nuisance as developers were forced to spin browser checks and conditional code and formatting.  So much so that entire technologies such as Shockwave, Flash, and even SVG sought to standardize the browser experience into a single, stationary target.  Even Microsoft seemed to sense the opportunity to wrest control of browser development away from the likes of HTML and its myriad “standard” implementations by bringing Silverlight into the mix (an absolute joy to work with, BTW).

But how things have changed.  There are calls for the death of the Java programming language as (gasps) scripting languages and DLRs shove aside our beloved standbys, JavaScript is being given full language status after its inauspicious rise from multiple personality disorder, Microsoft finally came round to a web applications development platform that actually works like a web applications development platform (ASP.NET MVC2 for the curious), wars rage over the fates of Flash and Silverlight in the face of a resurgent … HTML?

Well, HTML5.  But how can this be?  How many hours of development time have been given over to so many different presentation technologies in lieu of the mire of the HTML standard implementations across all those browsers?

Enter iOS and Android and a level of crack-happiness unparalleled in the history of gadgetry.  Imagine the power of a movement that can take fifteen years of evolution in the client software of the web and simply call a halt.  And in the stead of so many candidates, these mobile platforms would posit that HTML5, a specification that won’t even enter its recommendation status for another year or more, will be the preferred content format.  It seems to me that web apps have just suffered the most massive hard reboot in Internet history.  But even Microsoft, that leviathan of technology purveyors, has, in the face of their having just launched their own client development technology, acknowledged the dominance of HTML5 on the mobile client.

And here I am in 1995 again …  So, perhaps I am no longer a Junior Developer but only a fool operates in ignorance of the currents of their craft.  And this current is very strong indeed. I cracked a book on HTML5.

Actually, I added several promising titles to my O’Reilly Safari favorites (oh, to think of the thousands of dollars I paid for technical books in the ’90s) as well as some very good videos.  I highly recommend HTML5 Mobile Web Development by Jake Carter.  It is a grand survey of the HTML5 promise in solid fifteen to thirty minute chunks with lots of sample code that actually works.

My initial thoughts regarding HTML5 is that the moniker is misleading.  There are some fairly consequential additions in the elements department (especially the “audio” and “video” elements) and a few deprecations.  Some trimming of the fat on attributes and general streamlining of mark-up and some nifty in-built formatting and validation capabilities.  Geo-location support is massive as well if you’re concern is to establish presence-specific content.  And, of course, having local storage (cookies on crack) is a big deal as well.  But the major additions in terms of rendering User Interfaces come in the form of the “canvas” element and the inclusion of the SVG and CSS3 specifications under its implementation umbrella.

HTML is a declarative approach to rendering User Interfaces in a web browser.  SVG is also a declarative approach to rendering a User Interface, albeit in the form of vectors, for the purposes of creating graphically compelling presentations that use animation extensively (like Flash or Silverlight).  And I love SVG.  I used the technology extensively, along with JavaScript, in a 2002 project for a mobile phone company that allowed their advertising department to generate marketing campaigns, upload ad layouts and approved customizable content, which in turn could be edited online (enter SVG) by their franchisee users and subsequently generate print-quality custom advertising for each of their retail locations, on-the-fly, via the web.  No biggie now, but relatively untouched territory nine years ago.  All thanks to SVG and the Adobe plug-in, which they abandoned after they acquired Macromedia in favor of Flash.

My point is, however, that SVG was its own spec and has been languishing on the periphery since its initial release.  Its inclusion in the HTML5 specification seems like a coups for its adherents but those numbers are tiny in comparison to Flash’s or even Silverlight’s developer base.  And it seems that the browser implementations are fairly flakey in comparison to even Adobe’s now aging implementation.  And no one, and I mean no one, is even talking about the inclusion of SVG in the standard for commercial considerations.  It is very much in the domain of science departments and visualization projects the institutional world over.

An argument could be made that, as an applications development platform, SVG rounds out the many new ways in which HTML5 deals with its elements (formatting, validation, etc.), by providing for visually rich experiences using vector graphics and I would certainly join the throng in saying so.  But no one is.  Case in point, the excellent video series I mentioned above makes practically no, indeed I think none at all, mention of SVG as it conducts its HTML5 tour de force.

For all of SVG’s lack of traction in the HTML5 vanguard there is an equal amount of buzz around the new “canvas” element.  Which I could (and likely will) write an entire post on unto itself.  And here, as with SVG, it is imperative that you be a JavaScript development practitioner and, unlike with SVG, have a strong understanding of immediate mode 2D graphics concepts (which are nothing new under the sun but certainly go far afield of declarative software development) and, while better performing than SVG (scene-graph based), still performs somewhat underwhelmingly on mobile devices.

It is important to note how essential Javascript has become to web applications development.  jQuery, AJAX, and their ilk opened the door to language legitimacy for Javascript, HTML5 will propel the language to new levels of DLR respect as long, again, as browser implementations are consistent and performant.  And this is a continuing trend that HTML5 does not resolve adequately, IMO.  It really only exacerbates the browser flavor problem by bringing the web applications development everything and the kitchen sink in under the auspices of browser implementations.  Inconsistency will continue to rule as far as I can tell, with browsers implementing different Javascript engines and inconsistently implementing both canvas and SVG features.

So, now, rather than choosing your preferred plug-in to write standardized code across a variety of platforms in the vein of Flash or Silverlight, we will now need to select a specific browser to target and we are once again at the whim of consumers and their buy-in to particular browsers rather than their willingness to wait the fifteen seconds it takes to install a plug-in.

Now don’t get me wrong.  I’ve been to the mountain and I love the idea of a standards-based approach to web application development, which is ultimately the intent of the group that originally posited the HTML5 specification.  I’ve been at this game too long to not recognize the promise.  And I fully intend to get cracking on a new round of apps targeting mobile platforms but even then, as things stand, you can only get native performance from using native coding tools and environments which puts us back in the problem space HTML and the many technologies it spawned sought to propel us away from.  HTML5 is a reset to be certain even if it goes far beyond the scope of its namesake and is inappropriately named.  But it seems that, yet again, in the words of the Bard, “what’s past is prologue”.

Curse You, Myers-Briggs Type Indicator!

What follows was pulled from my e-mail archives and I thought, hey, somebody reading my blog, if ever there is such a someone, might be interested in the deeply flawed aspects of my personality.  I could find no better post to enlighten you than this (tongue-in-cheek) missive from early 2010.  Enjoy!

What do you do when you discover you’re in the wrong career?

I took an MBTI temperament sorter the other day as part of work.  I continued a trend I noticed after a year in China.  Where I used to routinely score ENTJ before I went to China (the Chief), I now score ENFJ/ENFP, the Mentor/Teacher/Advocate.  I guess I am to take from this that my time in China made me more in touch with my Feelings and those of others as well and also made me a little less certain, decisive, and judging (J).

I’ve been doing a leadership class at work (good conversation about that - can leaders be taught?) and as a result have had my team take the test and I’ve been studying the results.  I even graphed them in order to demonstrate the degree of my nerdiness.  On that graph there is a nice tight grouping of INTJ and ISTJ.  My only real problem with that is, if you know anything about MBTI, all the opinions and constant bickering.  These guys are hard to lead because they get paid to have these opinions and frequently distrust the opinions of others.  But that, too, is another post.  This is about me and I used to score steadily in the ENTJ area which allowed me to leverage my E to great advantage in engineering circles.  Irony of ironies, even our Trainer/BA is an INTJ and I am now the outlier, the wild hair data point, the ENFJ in ENTJ’s clothing …

As I begin to feel mildly nauseated at this turn of events, my whole Jungian world hanging in the balance, I turn to the online world to understand who it is I really am.  You can imagine the staggering revelation I experienced when I discovered the following blurb on the ENFJ’s DISFAVORED CAREERS (careers for which my personality type is not suited for general happiness):

race car driver : This I can live with.  I’m not much into fast cars.  I don’t even like Driving games.  The fastest car I ever had was a ‘94 Ford Taurus (white with crimson interior).

scientist : I’m not going to weep over this one.  While I do posit a good many things, anyone who knows me knows I am not the most rigorous thinker.  I still believe we are all simply numbers.  But late nights, drunk at a Perkins diner, a laboratory setting does not make.  Even my very stringent use of Wikipedia seems to fall short of the discipline.

computer specialist : Huh?  Hmmmm.  Oh yeah, they mean hardware nerds.  Nah, never been into hardware.  Strictly software for me.  I’ve never built my own box and wouldn’t know which end to use on a soldering gun (I’m told it’s the end without the cord but I still don’t know what that means).

airline pilot : I gave up on this dream long ago but it wasn’t easy.  I spent many an hour on Flight Simulator but my dream sort of disintegrated with the twin towers.  That is to say that I was going to get my private pilot certification until we got attacked by guys who trained at the facility I was also going to train at and the Bush administration shut them down for two years.  By the time they opened up again something had just turned off inside of me, sort of like the right to due process that we used to enjoy in these United States, apparently also a victim to terrorists.

computer programmer : What?!?! Huh?!?!?  This is core.  Fabric.  This is my life for the last eighteen years.  Nay.  Since I was thirteen I have tickled keys feverishly, puzzled many a circuitous thread of logic, lived in obsequity, in homage to the great Compiler, built layer upon layer of bit-wise detritus, weaving it, no, whipping it into a frothy ball of leaky memory.  This postulation tears at the very heart of who I believe myself to be. It is the first broken link in the chain of my identity …  But perhaps it is a fluke.  Surely, I am not merely a “computer programmer”.  No.  I am a Software Designer.  Or a Web Designer.  Yes, that’s it.  I am not mere programmer.  THAT is why this profile suggests I would be unhappy.  I have clawed my way up the food chain and out of so nasty an existence.  I am on a higher plane of software development.  Of course I would be unhappy as so mere a thing as a programmer …

financial manager : I could have guessed this.  I take no joy from watching my debt pile up.  That much is certain.  Perhaps, if it was somebody else’s money … wait, it is somebody else’s.  Well, if I got paid to mismanage my money maybe I could, like all those other investment houses, mismanage other people’s.  Perhaps that would make it worth it.  But I don’t think so.

epidemiologist : Now here is a possibility that, on paper, makes me a bit wistful for potentials.  Perhaps in some other universe I am diligently working to fight Trichispondophyllangial Dungitis (a disease commonly associated with navel-gazing activities like obsessing over MBTI scores).  Saving the world from sure destruction, one petri dish at a time.  But alas, it shall never be in this particular wrinkle in the fabric of time and space.  I do indeed lack the stuff needful of such pursuit.

truck driver : While I did date a truck driver in college, I do not see myself carting cattle out of Texas like she did, my lonesome (although never lonely) be-halter-topped cowgirl.  I must admit, I have thought about what might make long hours of tedium on the country’s highways and by-ways palatable and considered that, with a good laptop and speech recognition software, I could contract code or perhaps even write a novel in the vein of Jack Burton, the hero of Chinatown.  But alas, I am no longer meant to be a Computer Programmer, which does leave that other most difficult of conceptual endeavors, Writing novels or screenplays about truck drivers who save the world from wizard kings from the era of the Three Kingdoms.

electrical engineer : This I never understood.  Who in their right mind would pursue such a thing. I never knew my Ohm from my impedance mismatch.  And who could?  Well, other than you, Jack, I mean.  Besides I’m more into meditational mantra and activities of the impudent sort.  I cannot kowtow to circuitry in the way my mind can work with a runtime interfacing with an abstraction of an OS which in turn is layered on a kernel, like the nth layers of heaven’s
progression from the hell that is physical reality (and circuits through which we progress as little impulses of electrons) to the nirvana of a perfectly abstracted library of infinite programming potential and goodness.  And besides all that, I would never have graduated.  I would have been the gelatinous mass of fetal writhing, under the desk at the back of the Calculus lecture hall screaming “drop, drop, drop” over and over.  Ohm, he calmly intones.

software designer : Gadzooks!!!  May I say it again?  Gadzooks!!!  If I have not been this, if I have not been fulfilled by the endless hours spent in this endeavor, all those nights at 3 in the morning, foreswearing my wife, with my compatriots (Dusty, the fixer, Andrew Thomas, the comedian, and our gun-toting ex-commando client, or perhaps with Frank as we shared a single cube between the two of us and he kindly let me sit close to the door so I could hang my withering, purple, stockinged foot out after a soccer injury nearly crippled me, or perhaps with Jack trying to get continuous integration to accept the build night after night as we introduced one after another unrealistic feature into the product for YET ANOTHER PIVOTAL DEAL-MAKING DEMO, or perhaps it was the lost sleep in service to the client who insisted that adding features was a mere matter of moving slices of imagery around on a screen (”I don’t understand why you can’t just move it from here to there and call it this and make it work in a completely different manner in one day.”)) and I MUST work on the software toiling over the numerous bugs I had managed to introduce into the code base, all those UI mock-ups referred to as often as not as “cat puke”, sequence diagrams no one reads, requirements poured over in confused contemplation as more effort went into the TOC than the actual use case, I ask you, if not for all this, what have I toiled for but to be a software designer?  Simply to have that moniker embedded amongst all of the acronyms for various and sundry technologies that might get my resume hits on Dice that I may enjoy a higher than average income?  Hmmm.  Well perhaps it was about the money.

web designer : If the previous entry was a barrage of jabs throwing me off-balance and onto the ropes, this is right hook that brings the stars (or the tweety birds if you prefer).  Where the E in my ENTJ used to distinguish me as a social butterfly among ogres (no offense, guys) this was, perhaps, my only other distinguishing talent.  Where the INTJ turns toward her models, her domain languages, her APIs and business objects implemented in lovingly structured, pattern-based purity, I would turn my attentions to User Interface.  Where Dusty would try using every single control from the tool palette in one form of infinite length and function in the earnest desire to satisfy the requirement and get back to his architecture, I would tease out the subtleties of dimension, lay-out, weight, and alignment, ease of use and elegance implemented in the visage of a technology.  My designs would make use of colors that would turn a construction company on their head (where they would want Red, I would see Salmon).  And oh the joy of seeing users beguiled by the dynamic update of colorful circles dancing around maps and statuses updating in real-time.  Or that perfect wizard-based process that stepped the user so assuredly through all manner of convoluted logic.  Or that time, dare I refer to it twice, at the Insurance company where I designed a mock-up for an insurance estimation tool that was compared to “cat puke?”  To see this taken from me as a job I would find disagreeable.  Oh, I am truly reeling in the corner, on the ropes and about to go down …

business consultant : Pah!  What is business but a set of constraints to be managed?  I scoff at anyone who suggests it is otherwise.

DJ : And now I am down.  I am kissing the canvas, spittle trailing on the mat away from my broken lip.  My eyes reel wildly in their sockets as I try to make sense of the world now spinning violently about me. Can I tell you how much I love music and sharing it with others?  Can I tell of you of the countless mixed-tape masterpieces I have shared with women in the earnest desire to … er, broaden their musical spectrum?  Dare I mention the many times I have compiled CDs to be screeched out in dashboard pounding performances while my kids groan on in the back seat of a long, long car adventure?  Oh, cruel, cruel world, do not take my Radio Voice!

bookseller : Sniff.  I had a job in college at B. Dalton’s Booksellers.  That job was HARD!  I did get a discount on books though, which is nice.

And so, there you have it.  The writing is on the digital wall.  In a matter of a couple short years my life’s effort from 13 to 40 has been invalidated in the continuing and long-trending genesis of Craig McWherter’s Jungian distillment.  In my sudden and wrenching exodus out of ENTJ and into ENFJ, from the Chief to the Mentor, from the Field-marshal to the Teacher I find myself in the uncanny valley where the reality of my predicament seems to warp into something not quite right.

Am I to be culled from algorithmic herd?  Is my previous life’s hard work at an end and I find that my rewards lay somewhere out there along a different thread of execution?

On Deck, New Languages, Web Dev Frameworks, Game Rules and the Cloud

I’ve decided to start discussing the things that I’m actively working on (most of which will unlikely be related to my day job).  It seems the best hooks for this sort of thing are those open applications I find on my desktop each morning, remnants of the night before.

Today I find that I have the NetBeans IDE open to an ERb file I’ve been reviewing.  I say reviewing because it was auto-generated using the Rails framework rather than having issued forth as instructions from my own conceptions.  I’ve begun working with Ruby and Rails (gee, I’m only six years late to the party) in an effort to expand my understanding of the latest and greatest (yes, irony) in development tools out there.  I came to Ruby because Martin Fowler suggested it as a viable alternative to my old stand-byes: Java and C#.  In a past life I found myself alternating every three to nine months between the two programming language behemoths as a result of my day job.  Ruby had been mentioned to me by an employee as something I should look into but I chalked it up to his 23 years of age (way too sexy and unproven) and kept on with my Java product development.  As it turned out, the product source was purchased, shelved, and rewritten in C#, an example of the predation of enterprise software development.  Sort of like that snake that is eating itself in an infinite and recursive loop of a meal.

In any event, all things come round full circle.  Case in point, I actually received a job offer of sorts from this former employee who is now heading up a major product development effort of his own (has it really only been four years?) and it must have been his return to my life from my own personal BC (Before China) that caused Ruby to resurface.  He actually wanted me to come work with PHP, another interpreted language I failed to learn (although I did dabble with Python if that gets me any cred).

Ruby and Rails began to seriously intrigue me because, as I worked through the inevitable Hello, Indifferent Spheroid, I found myself deeply impressed by the level of ease and degree of productivity welling up before me.  I’ve also been dabbling with “the Cloud” and discovered Heroku, a fantastic service that sits atop Amazon Web Services and makes deployment into the cloud a, wait for it, breeze.  I think I have found my prototyping tool of choice for web applications.  More on that when more of it makes it to my desktop.

I also find I have the Homesteaders rule book open.  The Homesteaders is a board game in the vein of Puerto Rico but with an auction element and some other neat little twists.  I played it last week with some old gamer friends of mine and found it very enjoyable.  But that’s not why it’s open.  I realized over time that I have read many more game rules than actually played games.  Reading game rules is sort of my thing.  I have to believe it has something to do with my love of story coupled with a strong compulsion to see systems in everything.  In rules books I find a distillation of  a universe into, ideally, a balanced set of codifications that facilitate the ultimate in education, play.  So I read them to see how designers boil concepts down into expressions that can be engaged in.  In particular, I am reading these because I have been toying around with natural language parsing and domain specific languages (another reason to be interested in Ruby) and these concise documents remind me very much of software specifications.  I also have a PDF of a design document for a semi-popular Text Adventure authoring tool’s framework open.  The framework allows for the authoring of text adventures along the lines of Zork all in a robust and very natural language.  Perhaps you have a glimmer of the arc of my thinking.  More when I am ready.

The Thoughtworks Anthology from The Pragmatic Programmers is also open.  I read this collection of articles at the beginning of 2009 and I recalled a particular article on Ruby DSLs that I thought might be helpful.  As often happens, I found myself wander off to another topic (Project Vital Signs, a going concern for me these days) and, in any event, the article on Ruby DSLs was a bit too involved for me at the moment.  I’ll have to circle back after I have my Ruby sea legs.

Man, I must be in a Thoughtworks frame of mind because a friend forwarded to me their 2010 Technology Radar report and that is also on my desktop.  I wish he had forwarded it before I started this Ruby voyage.  While Thoughtworks are true believers in Ruby there is only one mention of it in the whole document (referencing the rspec and Cucumber test gems) while C# 4.0 actually gets recommendations.  This while I investigate Ruby and begin to become disappointed with the .NET Framework in general.  Impeccable instinct, eh?

The good news though is that the final document on my desktop is a Scala tutorial.  Because learning one new language and web development framework is not enough.  In my investigation into Rails I discovered the LIFT framework which lead to ravings regarding Scala.  In fact, there’s a reason I said “prototype” in reference to Ruby on Rails.  It turns out that there are performance reasons for considering alternatives.  Even Twitter arrived at the moment I happened on by happy coincidence.  A quick look at Google App Engine boards and I discover that there is a recommended alternative to Ruby on Rails.  So I will continue with Ruby and then move on to Scala and LIFT in order to make my comparisons.  Look for more on that as the war between Ruby, Rails, and Amazon Web Services versus Scala, LIFT, and Google App Engine heats up.  It will all hang on the ease of development and productivity comparison.  I suspect I will end up with a hybrid approach to my long-term plan for world domination.

A Purpose for Professional Life

What if what people pursue when they describe a professional life with purpose is in reality pursuing the thing they love?  Truly successful professionals, those who can sustain the kind of energy and devotion necessary to continue the good fight, do so by unchaining the gifts that they possess and expanding the lives of others by sharing their love.  And by love I mean affection, friendship, passion, and charity.  Friendship and charity, in particular, are the kinds of love we need to incorporate into our professional pursuits in order to give them a sense of purpose.

Look at the joy that people bring to your life.  I bet you they bear it upon a love, a passion that cannot be denied. That is the kind of thing I mean here.  Build a professional community on friendship and give freely of your knowledge, experience, and emotions, the best kind of charity.  It is good because it is real, it is you, and it is done with love.

Daily we are making decisions that, ultimately, are influenced by security or the lack thereof, by the fear of uncertainty, by doubt, by an earnest desire to achieve our full capacity (to be recognized as the best at what we do), to enjoy what we do with our lives and to not have to feel like we are simply filling the days in pursuit of stability, the status quo.

The beautiful thing is that, setting death aside, there is nothing done that cannot be undone with the love that exists in your purpose and there is no act, which has as its basis the love of its enactor, that will not warmly be received by somebody somewhere.  Love gives purpose and acting on that purpose amplifies in others and there is where real change, reality-altering change, resides.

Do the thing you love and forget the rest.  That’s what I plan on doing.

More Than Interesting

I think the best way to start out is with a quote:

“When you write a book, you need to have more than an interesting story. You need to have a desire to tell the story. You need to be personally invested in some way. If you’re going to live with something for two years, three years, the rest of your life, you need to care about it.”

—Malcolm Gladwell, author (from A Few Thin Slices of Malcolm Gladwell)

I love Malcolm.  Yes, I know you might think his science is suspect.  But he makes me think and even if we don’t draw the same conclusions or have differing opinions, thinking is a good thing in general.

No categories
  • Disciplines

    Get Product Management Posts Get Story-related Posts Get Posts on the Study of Language Get Simulation-related Posts
  • On My Bookshelf @ LibraryThing

  • Categories


Warning: exec() [function.exec]: Unable to fork [/usr/local/bin/curl -k -D "" -H "User-Agent: Twitter Tools http://alexking.org/projects/wordpress" -H "Host: twitter.com:80" -H "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*" -H "Cookie: guest_id=v1%3A140679137560373990" -H "Authorization: BASIC aXNhY3JhaWc6aW5maW5pdGU=" "https://twitter.com/statuses/user_timeline.json"] in \\NAWINFS02\home\users\web\b776\rh.mcwherter\wp-includes\class-snoopy.php on line 1009

Warning: exec() [function.exec]: Unable to fork [/usr/local/bin/curl -k -D "" -H "User-Agent: Twitter Tools http://alexking.org/projects/wordpress" -H "Host: twitter.com:80" -H "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*" -H "Cookie: guest_id=v1%3A140679137560373990" -H "Authorization: BASIC aXNhY3JhaWc6aW5maW5pdGU=" "https://twitter.com/statuses/user_timeline.json"] in \\NAWINFS02\home\users\web\b776\rh.mcwherter\wp-includes\class-snoopy.php on line 1009

Warning: exec() [function.exec]: Unable to fork [/usr/local/bin/curl -k -D "" -H "User-Agent: Twitter Tools http://alexking.org/projects/wordpress" -H "Host: twitter.com:80" -H "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*" -H "Cookie: guest_id=v1%3A140679137560373990" -H "Authorization: BASIC aXNhY3JhaWc6aW5maW5pdGU=" "https://twitter.com/statuses/user_timeline.json"] in \\NAWINFS02\home\users\web\b776\rh.mcwherter\wp-includes\class-snoopy.php on line 1009

Warning: exec() [function.exec]: Unable to fork [/usr/local/bin/curl -k -D "" -H "User-Agent: Twitter Tools http://alexking.org/projects/wordpress" -H "Host: twitter.com:80" -H "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*" -H "Cookie: guest_id=v1%3A140679137560373990" -H "Authorization: BASIC aXNhY3JhaWc6aW5maW5pdGU=" "https://twitter.com/statuses/user_timeline.json"] in \\NAWINFS02\home\users\web\b776\rh.mcwherter\wp-includes\class-snoopy.php on line 1009

Warning: exec() [function.exec]: Unable to fork [/usr/local/bin/curl -k -D "" -H "User-Agent: Twitter Tools http://alexking.org/projects/wordpress" -H "Host: twitter.com:80" -H "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*" -H "Cookie: guest_id=v1%3A140679137560373990" -H "Authorization: BASIC aXNhY3JhaWc6aW5maW5pdGU=" "https://twitter.com/statuses/user_timeline.json"] in \\NAWINFS02\home\users\web\b776\rh.mcwherter\wp-includes\class-snoopy.php on line 1009