Dec 292009

How many times have you heard something like this?  You know the drill:

Stakeholder: “We need to fix sort order.  Let’s make sure that results we can’t show an image for are deprioritized.”

Developer: “Can do.”

Time passes.  Software is written.  Then:

Developer: “I’m finished.  The results without photos are at the end of the list.”

Stakeholder: “I don’t understand.  Why are they showing at the end of the list?  Shouldn’t they be in their usual places in the list, but greyed out, like we talked about?”

Gadzooks, we’ve fallen into that trap… AGAIN!  It’s the mother lode of assumptions:

When we agree to something, that something we’ve agreed to is the same thing for you as it is for me.

“One good analogy is worth three hours discussion.”

– James T Mccay

The problem of creating a shared concept crops up all over software development, from requirements, through testing, implementation, documentation, and on out the door into the hands (and minds) of users.  The problem pops up between stakeholders and developers, developer and other developers, between accounting and customer support and users themselves.  It’s stamped all over everything.

I won’t delve too deeply into the metaphysics of this problem, but trust me, just below the surface seethes a pit of linguistics, semiotics, ontology, questions about quantum mechanics, psychology and the nature of the mind.  Nifty stuff, if you’re philosophically inclined.

“An idea is a feat of association, and the height of it is a good metaphor.”
– Robert Frost

I’ll try to stick to the more pragmatic concerns, here, and start with the notion of a mental model.  Without thinking hard about it, make a note of the very first thing you think of when you read this word:  Apple.

Ok, which was it?  A red fruit?  The computer company?  A particular computer, perhaps the one you’re using right now?  Or was it a particular apple, the one you shared on the grade school steps after school was over with that blonde girl that you had a crush on?

You have a notion of what “apple” means.  I might have a different notion.  That notion – the set of associations, memories, ideas, and so on, we call a mental model.  It’s mental because it’s in your head, and it’s a model because it isn’t the thing itself.  So, it’s a mental construct, a mind-thing that represents some slice of the “real world”.  Without even being aware of it, we construct and use mental models all the time, to help us function in the world.  They provide us with information about how something in the world will behave.  What we can expect as we interact with it.  They’re mind tools that help us understand phenomena, make inferences, and experience events by proxy.

You might view a mental model as a graph.  I imagine it as a web of connections between some notion and a set of associated notions.  For me, apple connects to “fruit”, “red”, “an apple a day”, etc.  Apple also connects to experiences, memories, emotions, and so on.  Some of those connections are strong and some aren’t so strong.  I label this graph as the “apple” graph – my mental model of “apple”.

“The world is emblematic. Parts of speech are metaphors because the whole of nature is a metaphor of the human mind.”
–Ralph Waldo Emerson

I won’t delve too much into why our mental models differ (my “apple” isn’t the same as yours) in the first place.  Instead, I’m intrigued by the problem of how to get the models running around in different people’s heads to refer more-or-less to the same thing.  One cause of that problem is that mental models they’re transmitted across a very lossy medium – human expression via language, be it visual, spoken, etc.

Here’s where meaning comes in.  When I tell you about “apple”, I am trying to move a copy of the “apple” in my head into yours.  I do that by trying to create the same set of connections in my head into yours.  I do this by trying to convey connections between my “apple” and your “apple” by relating my “apple” and its associations to your “apple” and your associations.  That act of linking bits of experiences and thoughts and sensations and emotions (ie., models) to one another is called meaning.  When I say, “This is apple: …”, I am trying to upload a small piece of my internal representation of the universe into your mind.

Meaning is heavy stuff.  And, as it turns out, difficult to transmit using language.  Why?  Because language (words) sits one level of indirection away from the models themselves.  Follow me, here.

We have the thing itself.  We’ll stick with “apple”.  Out there, somewhere, is the apple we’re talking about.  Then, one level removed from that, are the sensory experiences associated with that apple.  (Level of indirection: 1).  Aggregated in your head is that sensory input, memories, associations, etc — the mental model of that apple.  (Indirection now 2.)  Then there is the word I slap onto that model – “apple”.  Note that the word represents the model, but isn’t the model itself.  (Indirection: 3.)  Phew.  We’re three hops from the damn piece of fruit, and just getting rolling…

Now I try to talk about the apple.  I use the word apple, and a bunch of other words that are intended to connect the dots – make the same associations for your version of “apple” as I have attached to mine.  Again, add a level of indirection.  (4.)  You aggregate into your “apple” model.  (5.)  You slap the word “apple” on that model.  (6.)

Yep.  That’s lossy.  Your copy of the “apple” model that I’ve tried to convey to you sits about 6 hops away from the thing itself.  Maybe more, I’m not sure.  And there are no checksums.

If you want to make meaning-making work for you, use this tool called storytelling.

The art of transmitting mental models – of creating meaning – is storytelling.  Narrative, if you prefer.  Storytelling is the best practices way of moving a mental model from my head into yours, because it leverages biologically and culturally preset and reinforced mental models.  Stories have a well-known structure (think of XML).  They have conventions of characters and plot.  (Think REST HTTP verbs).  They are easy to persist, which makes them effective at moving mental models.

Which brings us to metaphor.  Compress a story down to its smallest, most compact and elemental form, and you will produce a metaphor.

A metaphor is a zip’d story.  (And, yes, for those of you still paying attention, that last sentence was a metaphor itself, but probably only useful to geeks.)

“But the greatest thing by far is to have a command of metaphor. This alone cannot be imparted by another; it is the mark of genius, for to make good metaphors implies an eye for resemblances.”

– Aristotle

Which returns us to that pesky problem of “I thought you meant…”.  At our disposal lie a wide array of tools for creating shared mental models: whiteboard diagrams hung in shared spaces, mockups and wireframes, requirements docs, etc.  But if you want to be really effective, use stories and metaphors.  Be shameless in assigning names and personalities to the actors, systems, modules and machines.  Give them personalities.  Talk about what they know and like.  Get to know them as a group.

Then, invent a defining, central story.  A system metaphor captures the essence of the system in the most effective communication tool we have – the story.

“The system metaphor is a story that everyone – customers, programmers, and managers - can tell about how the system works.” 
– Kent Beck, Extreme Programming Explained, p. 179.

 

Dec 202009

 

 

 

Charlottesville Downtown Mall At Night

Charlottesville Downtown Mall At Night

As CTO, I seem to be getting the recurring question, “Can you (hotelicopter) find the tech-savvy talent you need in Charlottesville?”  It’s a valid question.  Long gone are the days of Kesmai, EA, Mr. Goodbucks, and the beloved Value America.  These days, we have influx of spooks, a smattering of biotech companies, and in the IT/Internet world… a whole buncha nothin’.

 

Usually I give a good new / bad news kind of answer to this question.  I’ll run through the good part first so we can get to the juicy bad part.

The good news is that you can do alot more cool stuff with a whole lot fewer people than you used to.  And even though we’ll be quintupling the size of the tech staff at hotelicopter, in absolute numbers, it’s still a very small number of people.  Armed with the right package of cash compensation, equity, benefits, a really cool place to work, and seriously fun stuff to work on, I’m very confident we can find the team we want.

The bad news, though, is that once we’re done cherry picking the local talent, all that’s left will be tumbleweeds.  (And bookstores and coffee shops.)

I recently had it put to me that Charlottesville stands at a crossroads.  On the one side, the ‘Ville could evolve into the next Austin.  You know, the cool Austin: vibrant arts and music scene, burgeoning tech mecca, nifty atmosphere, lots of fusion restaurants.  Sounds pretty good to me.

Or… Our beloved city could turn into Aspen.  You know, frigid Aspen.  The Aspen where private jets land to deliver out of towners and transplants to their ostentatious homes, and everyone who actually works lives… somewhere else.  Somewhere cheaper.  Like Waynesboro, Nelson County, Greene and Orange.  Let’s face it, Charlottesville’s already looking alot more like Aspen than Austin.  We have a sharp housing gap (the current downturn in home prices not withstanding), a widening income gulf, and with each passing decade, a sharp decline in local industry… of any kind.  At the current pace we’ll be left with just fancy restaurants, coffee shops and riding tack boutiques.

Aspen… Great place if you can afford it.

Dec 142009

In system design, generally I believe there’s no such thing as “premature optimization“, but life in a startup demands profound thought into exactly when we implement our optimizations.  Spending time and money up front on making things fast (and/or scalable) comes with a hefty little price tag we like to call “opportunity cost.”  We live in a world where stopping apparent forward motion for a few weeks may have deep implications on market positioning, traction / uptake, and ultimately, our ability to raise capital and execute on our strategic plan.

Partly this situation is a byproduct of having a tiny R&D team, and the ‘ole “10 pounds of shit in a 5 pound sack” problem.  With access to more resources, we could make progress on multiple fronts.  But, even if we had an army of developers, startup life throws optimization into a stark light.

Wait too long, and we piss off customers and hurt uptake.  Too soon, and we’ve missed out on implementing features that hurt uptake and also cause us to miss our window for strategic positioning.

As is often the case in the CTO’s role, if I get the answer right, no one will notice.  I’m reminded of the Tao Te Ching:

The Master doesn’t talk, he acts.
When his work is done,
the people say, “Amazing:
we did it, all by ourselves!”

Dec 132009

We’re currently investigating a spectrum of new technologies in the NoSQL realm, including Tokyo Tyrant, MongoDB, Amazon’s SDB, CouchDB, Voldemort, and more.  Tis’ a dizzying mix, and things are popping in the space.  From my point of view, they all end up relatively close to one another in terms of utility and applicability to the problems we need to solve at hotelicopter.com.  I’m waiting to see which one gains the most momentum — the sum being greater than the total parts of corporate sponsorship, commercial support, market traction, and a thriving community of developers.

Jun 272008

So like many others, I am developing iphone applications.  If it didn’t already seem perfectly clear to you that we technology people are just as lemming-like as say, commodities traders, or art collectors, well, I hate to break it to you.

Yeah, so I’ve gotten sucked into the iphone hype too.  Frankly, I can’t wait to get my hands on one, even if lil’ ole Charlottesville lags piteously behind the rest of the world with no 3G network.

I’ve been noodling about what location really means, especially in a user-pull application environment like the iphone. (I’m with the crowd that says, “Thank God iphone apps won’t run in the background – and dry out my battery in 15 minutes flat.”)

Rather than trying to come up with some New New Thing by smooshing together social networks, location and a handwave at a business model that involves trying to convince businesses to advertise “on the spot” sales to iphone users  (ummmm, nrme, anyone?)… I’m wondering instead, “What things are truly location dependent?”  I guess I mean something beyond just “Where’s the closest Starbucks?”

A few things have come to mind:

Hmmmm…. more ruminating is called for.

May 302008

My client needs to put up scalable and extensible social networking sites for his clients.  I need to suss out which platform is the current best of breed.  Heretofore, their choice has been Drupal, which has certainly been good enough.  I’ve half a mind to say “If it ain’t broke, don’t fix it,” but I hear anecdotal evidence that scaling Drupal is, ahem… challenging.

I’ve no experience firsthand with building Drupal sites, but the platform seems to have lots of community support, and appears to be evolving at a reasonable rate.

Questions to answer about each platform:

  • How hard is it to scale to 5E6 pageviews/month?
  • How hard is it to extend the platform?
  • Suitability of platform to CMS?
  • Suitability of platform to social networking?
  • Extensibility?
  • Ease of integration of 3rd parties; Flickr, YouTube, OpenSocial.
  • Suitability to hosting via EC2/S3.

Candidates so far include Drupal (PHP), Mephisto (Rails), SocialSpring (Rails), Joomla (PHP), OpenSocial, Typo3 (PHP),
All this begs a question for me, which probably misses the mark for my client’s clients… but… Why is anyone trying to build social networks anymore?  Don’t they realize that they should be building social networking applications, which ride on top of existing (now more-or-less open) networks?  (Eg., OpenSocial.)

Dec 172007

As reported in the inestimable International Herald Tribune (a good non-US perspective I like to keep tabs on), global food reserves are running low.  The green revolution not withstanding, the news troubles me.  Throw in global warming, the moves by multinational agri-conglomerates like ADM and Montsanto (in the US, this translates to the farm bill and NAIS), and the news seems even more ominous.

Nov 072007

IMG_1977 Wow. We’ve been riding the whirlwind. Today Lynsie gave two interviews. Rowena Morrel of In The Kitchen came to visit us at home to talk about Perfect Flavor, and Lynsie made chocolate ice cream. The beat just goes on and on.

I finally put up our first cut at a press kit, and designed our first-ever print ad. I have no idea how one is really supposed to do that, but as they say, fake it ’till you make it.

Oct 162007

When we tell people about our business (Perfect Flavor), we tell them that our goal is sustainability. In its simplest definition, sustainability refers to the long-term longevity of a human enterprise. Sustainability encompasses several overlapping concerns: the environment, social systems, and economic systems. One widely employed definition states that sustainable development:

“meets the needs of the present without compromising the ability of future generations to meet their own needs.”

With respect to the environment, one definition of sustainability means that all of the things a business takes from the Earth – the inputs like energy, fuel, and raw materials – must eventually be returned to the Earth in such a way that they can be used again.

We, like others involved with sustainable businesses, struggle with these definitions and labels. Although the terminology provides context, it can be confusing and limiting. In part, the problem lies with its Platonic “either/or” duality. We find it more useful and practical to consider things along a continuum from “less sustainable” to “more sustainable”.

The problem gets even more complex, because even the idealized notion of sustainability changes over time. Sustainability isn’t a place – it isn’t a singular and fixed destination. Like us, it evolves, as our understanding of the planet Earth and our species’ place thereon evolves. Sustainability is a process – a point of view that demands thinking, exploring, and questioning the status quo.

In that spirit, and encouraged by the notion that transparency matters, we offer a list of things we know that Perfect Flavor can improve upon. We hope that this disclosure will help our customers understand what we do, and the challenges we face. On some issues, we have had little or no choice on how to proceed because regulatory requirements are very stringent. On other issues, we have chosen to compromise because we are a small Mom & Pop business, and have insufficient capital to pursue other options.

Startup

  • Building Materials: We used commonly-available materials, including concrete, pine stud framing, wallboard and so on. The Commonwealth of Virginia and federal requirements on Dairy Processing Facilities dictate many of these choices, particularly in the rooms used for the actual making of ice cream.
  • Furnishings And Equipment: Our pasteurizer, batch freezer, coolers and freezers are all industry standard units. Again, due to regulatory requirements and a dearth of sustainably-manufactured units that meet those compliance criteria, we have no other choices at this time.

Ongoing

  • Electricity:We strongly considered the possibility of using active-solar technology to meet some of the electrical demands of the Perfect Flavor Kitchen, but due to the startup costs, we can’t afford to do so at this time. Although we’d like to buy green power, Dominion Virginia Power does not offer any, and PEPCO, which offers a green power product to residential customers in Dominion’s service area, doesn’t do so for commercial accounts. Our only option is to purchase carbon offset credits.
  • Water: The Perfect Flavor Kitchen has moderate water demands, and we are currently using water and sewer services provided by the City of Waynesboro. In the upcoming year, we will explore using rainwater harvesting for flushing the toilet at our facility.
  • Transportation:Currently, all of our packaging and other raw materials come and go from the Perfect Flavor Kitchen on automobiles, using standard gasoline or diesel fuel. In the future, we hope to be able to use a more sustainable alternative, such as a bio-diesel or electric-powered delivery vehicle.

When we look at this list, we feel challenged to improve the myriad ways our business impacts the environment. The stark nature of this list illustrates just how far we are from our goal, but it heartens us to pursue the dream with passion.

Sep 062007

I learned this lesson early on in my involvement with startups: Ideas Are Cheap. Dirt cheap, really. The hard part is execution. The easiest way to spot a very green entrepreneur is to ask them to tell you their idea. Smart and/or experienced entrepreneurs will grin and expound at length. They’re not afraid of you stealing that brilliant idea. They want you to understand, and to buy into the idea, and to do that, they have to tell you what it is.
The folks that clam up and ask you to sign an NDA, or say, “I can’t tell you, it’s too easy to steal,” are the ones that need a few hard knocks.