Today I uploaded our first release candidate, which means we’re (almost) ready to let people play Tidepool.  For weeks, I’ve been scrambling to complete the last Alpha 1 features, finding and fixing bugs and more bugs, like some demented game of whackamole.

Along the way, I’d think of a new idea.  “Hey people will love this.  It’ll only take a few hours.”  Days later it’s done, with now a fresh set of bugs to whack down.  Software’s just like that … a shifting amorphous mess with no master.  Change something here, now that doesn’t work.  As an industry, we’ve gotten better at making change safer over the years, but even now it’s often a crapshoot whether something will take hours or days to do, especially when your codebase has reached a certain size.

In the last few months, I’ve written roughly 44,000 lines of code, which printed out single-spaced would take almost 800 pages.  To do this, I’ve spent about 425 hours, not counting business development time.  Were I to charge a corporate client for this work, I’d be at $85,000 worth of billable time.  (Yes, that’s my wife Paula you hear moaning in the background.)

Yet here we are!   The foundation is complete and our first creative steps are before us.   All important now is to freeze features and fix bugs, letting things settle enough to be generally useful.  My “shakedown team” will be putting Tidepool through its paces in the next week.  We hope to announce the alpha soon.

I am personally exhausted, having worked perhaps the most intense hours of my professional career.   My body’s aching, my family misses me, the house is a mess … but I’m done!

I’ll now take some time to rest before doing this all again for Alpha 2.  Stay tuned.

This morning I woke with designs floating through my sleepy brain.  They first appeared as problems to solve, stumbling blocks on my way to the next Tidepool thing.  As short term solutions occurred, they mingled together to form something more general, more powerful.  Crystallizing from the depths of my subconscious came an old friend, the core of my Gravity architecture from the late eighties: the message.

Yes, the term is impossibly vague, and hardly new.  But 27 years ago, as I walked the top of the Alpine Palisades, writing in my design books, imaging a world of interconnected agents, the Gravity message was central to my designs and my life.  Everything hinged on agents sending messages to each other.  The very substance of change was encapsulated in these tiny commands.  I made up words for the core agent actions … IM (impression, input, receiving a message), MU (change, context, processing a message), EX (expression, output, sending a message).  Agents received, processed, and sent messages, which collectively I called IM-MU-EX-A, the name of my current company.

Over the years, messaging as a general concept has seen some success.  First with email (TOs,  FROMs,  SUBJECTs, bodies), then instant messaging (nicknames, channels, buddies, text), then the Web (headers, markup, requests, responses).  Through the veins of the Internet course little message packets from machine to machine, the very life blood of our civilization and culture.

This morning, as I woke further, as the emerging design became clearer and clearer, I began to remember all of it: the why behind messages and how they would help Tidepool.  I made coffee and began my ritual of pacing in the basement with my voice recorder, taping “Kismet 168″ for a good eighty minutes till I’d nailed down the design.

And now, just before typing “class SbMessage” for the first time, I imagine these little packets of change streaming their way from Tidepool to Storymill to Tidepool, from agent to agent around the world.  I envision a child in Rwanda changing the color of her illustrated dragon’s eyes, then a little message being made and sent through the Internet to another child’s machine in Vienna, who sees the color change and types, “Oh I like that”, a new message which gets sent back to Rwanda.

I could write about how my new (and old) message designs enable versioning, replication, infinite undo, timestreams, and more.  Instead, I’ll simply click “Publish,” imagining who might someday read this message (IM), who might be changed, if only a little (MU), and what they might say (EX).

Think of the last time you were frustrated with your phone or computer.  “Why is it doing that?  I don’t have time for this.”    You try something.  Doesn’t work.  You try something else.  No luck.  Maybe you ask a friend or IT.  Maybe you search online.

Since home computers were new, I’ve been one of Those Guys, the person you call when you’ve exhausted all options. I nearly always find a solution, often quickly.  My wife jokes that I just have to look at a computer and it’ll fix itself.  When problems last longer, she’s impressed with my patience, trying for hours, long after most would give up.  Being a software developer gives one a high tolerance for computer snags.  We spend our days fixing our own messes.  The minor glitches most people experience hardly phase us.

Occasionally I find a problem I just can’t solve.  We call this “falling into a hole,” and it’s NOT FUN.  For more than a week, I couldn’t get Tidepool talking to Storymill on Europa, our dedicated server.  I was using a technology called Enterprise JavaBeans, which was working fine on my machine, but not between machines.  I knew it was probably something simple, but after reading reams of forum posts and trying every nonsensical thing I could think of, it just wouldn’t work.

Being in a hole is its own kind of madness.  “Maybe this?”  (Nope)   “What about this?”  (Sorry dude)   Imagine clicking “run” with hope in your heart, over and over, six times an hour, for day after endless day.  This is the dark side of software development, the unsung trial-by-fire we all unfortunately experience from time to time.

In the end, the solution couldn’t have been simpler.  I simply had to move a single word from one line to the next in a text file on Europa.  So why did it take more than twenty hours to figure that out?  Good expletive question.

Hi Isabel,

This chapter is for you, or at least the future you.  April has been busy for both mom and myself.  We’re each very distracted by our separate all-consuming projects.  Mom’s production of Jesus Christ Superstar is opening this weekend, which means this is “tech week”: the week she gets the kinks out of the lighting, sound, staging, etc.  It’s also why she’s been home after bedtime each night.

I’ve been having my own tech week, preparing for our first Tidepool alpha release.  Though I’ve shown each new change to you and mom for weeks now, showing another 90 people is another matter.  I’m afraid what everyone will think, just like your mom.  We’re both scrambling through last minute details that most people won’t notice.

Throughout our distractions, you’ve been wonderfully self-entertained, playing made-up games, Minecraft, and occasionally Tidepool.  As I watch you play on the computer, I recognize the same determination that I use in my own work.  Many parents would restrict your “electronic time,” but not us.  As you narrate your actions like the YouTube screencasts you watch, as you build zoos and traps and underwater lairs, as you learn about mods and tricks … you’re learning about *learning*, which is arguably more important than anything you’ll learn in a structured group setting.

I could support this controversial thought with my work in the last seven years, but instead I’ll point further back to my own childhood.  First with photography, then with games, then with computers … I was obsessed with my projects. They’re what I thought of when I woke.  I’d read magazines on the gym stage instead of playing kickball with my friends. I’d race home to my darkroom or my computer to try the next thing.  And now, I see in you the same drive, the same self-motivated interest.  It makes me proud.

You’re learning the jobs that don’t yet exist, just as I did, when computers were new.  Your future is beyond our imagining, and this will prepare you.

You still have to learn math though.  Sorry.

“Designing a product is keeping 5000 things in your brain — these concepts — and fitting them together and kind of continuing to push to fit them together in new and different ways to get what you want.” — Steve Jobs

I spent last week on the 2nd most difficult software development task: detailed planning.  My first roadmap, made more than a year ago, described everything to the month level.  My next, made in December, planned things week by week.  This new March roadmap gets it down to the day-by-day.  Before me now stands 120 work days of development, split into eight milestone deliverables, one every three weeks.  Quite a lot was cut.

Earlier I wrote about timeboxing, which keeps things on track through the peaks and valleys of software surprises.  Often there comes a point where you need to “throw one away,” where incremental adjustments just won’t cut it, where you need to start fresh with a completely new plan.  Ripping up the floorboards can be stressful and confusing, particularly last week while swimming through the vertigo flu.   Somehow I made it through to this much cleaner plan, one that gives me both confidence and relief.

I wish I could describe this planning process.  With dozens of factors in play … this piece becomes easier when this piece is done, this piece needs to happen first so this audience can use it earlier, this one’s a nice-to-have, this one is risky … it’s a huge multi-dimensional puzzle with no easy answers.  Looking back, all the pieces fit where they need to be, but getting to that point is a true mystery.  It just happens, at least for me.

And so a new chapter begins, once again.  Now to focus on now.

I’m fascinated by speed drawing videos.  Within the span of a few minutes, you watch as an artist makes hours of small changes, giving you a true sense of the details that lead to a finished work.  While we all know it probably takes a lot time to edit a film or animate a cartoon, it’s quite something else to watch the artistry as it unfolds.

Software is likewise a progression of tiny details.  Throughout the day, I make choices and changes that slowly move the product along.  First, I read my design notes and imagine how a feature will look and act.  I then write some code to bring a piece of it alive.  As I click “Run” to first try the change, I often have no idea what will happen.  That’s the true beauty of software development.   You make something and try it.  Make  something else and try it.   This simple cycle defines my work life.

In the same spirit as speed drawing, I’ve been making two-minute Tidepool videos every day or so, showcasing each feature as it’s done. While not as immediate as time-lapse graphics, these videos hopefully give a sense of steady progress, a glimpse at my programmer’s canvas as I eek my way towards the finish line.  Nine months from now, I hope to have 180 videos, six or so hours chronicling a software project, start to finish.

Will people watch them?   I suspect not many.   Investors occasionally, to see where I’m at.  Players perhaps, to see how the game was made.   My hope is that future developers will watch them for inspiration, to see what can be done each day over time, to see the steady pace of realizing a dream.

Exactly three months since starting, I’m done with project prep — business plan, website, trailer, and design. Starting Monday, I can finally roll up my sleeves and resume coding.  I’m fantastically thrilled about this, particularly given all the word-squeezing and financial fretting of the recent past.

Programming is its own reward.  You get in the flow and let the system lead where it will.  There’s a stark and simple beauty to the task.  Things either work or they don’t.  Writing business plans and such is quite another matter.  Imagining an audience reading and reacting, feeling them watch over my shoulder as I write … I’m so glad it’s done!

So now comes the moment of truth.  I have 84 emails in my outbox.  Once I click “send”, there’s no going back.  No second chance at making a first impression.  While I wish the 3D movies in the trailer were complete, I’ve decided it’s “fish or cut bait” time … time to stop preparing and start DOING.   The 3D can come later.

So here goes … something.

Last week, with the website done and the trailer close, I was gearing up for the big private launch to my 84 insiders when I decided to finally call my lawyers.  I was expecting maybe some tweaking to my aging Stock Purchase Agreement, but instead I received an earful about private offerings and state exemptions.

I’d known about stockholder limits from hearing the crowd-funding political rhetoric that led to last fall’s JOBS act, which passed.  I knew the new law made it easier to have many small investors.  What I didn’t know was that the SEC hadn’t changed its rules yet, that the needed provisions were in the “comment phase.”   I was told, “You cannot have more then ten investors without getting federal and state exemptions.”  They told me they could get these waivers for $5000.

Damn.  I couldn’t afford the hour long lawyer talk, let alone the time and money these exemptions would take.  With only five weeks until the money ran out, this was a problem.  Moreover, I wasn’t allowed to make good on the promise I had made to my 84 potential stockholders that they could get a slice of future revenues for as little as $250.

So what to do?  The crowd-funding site Kickstarter steers clear of this trap by focusing on purchase or donor transactions, such as selling future copies of a book.  We could do the same thing, but our end product is free-to-play.  We could sell the future coin-of-the-realm, crystals, but I’d already promised my 84 people free crystals for life.

What sort of MacGuffin could I sell to raise money?  Some sort of special title or icon?   Special mention in a credits page?   A signed copy of a CD or thumb drive?   Everything seemed rather cheap and unworthy of the trust these people would be putting into this endeavor.

Then one morning I woke and had a brainstorm.  I’d sell real estate, or rather “fake estate.”   The Tidepool world is split up into hectares (the metric acre, think “square football field”).  To make your own neighborhood, you claim a hectare and its yours.  People cannot modify it without your permission.  Since the Tidepool world is modeled on our own world, you’ll be able to settle the hectare around your house.  You could also settle Times Square or Beverly Hills.

The plan was to have the “Great Tidepool Land Rush” sometime in June, when everyone would walk from their starting point to wherever they’d like to settle, with all having the same opportunity to get choice spots.  The new idea is to sell reservations in advance.  Buy Trafalgar Square for $50 so that on Land Rush Day you’d already have it.

Yes, it’s really about supporting the project.  The land is of token value, but at least it’s something that makes sense within the context of the game.  When the world starts filling up, these areas will be desirable.  And having played another “virtual world on top of our world” game before, I can tell you that it kinda sucks when someone else owns your own house.  So we’ll sell “fake estate” as a way to raise money, at least until the lawyers can get us some real stockholders.

 

“Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law.” – Douglas Hofstadter

Last week, I sent an email to the alpha list saying that I’d be done with the website and trailer today at noon.  With six hours to go, it’s fair to say that I won’t make that deadline.  The website yes, the trailer no.

I’ve been making software for 33+ years.  You’d think in all that time I’d have developed a finely tuned sense for estimating how long things take, but instead I’ve learned that software is a stubborn beast that balks at every step.

The only accurate way I’ve found to estimate software is called “timeboxing,” where you make a list of things you want to do, order them by priority, then commit to a set amount of time to do them.  If things go better than hoped, you get more things done, otherwise you get less things done.  Another way of describing this is “slip features, not deadlines.”

Unfortunately, this requires a large enough chunk of time to allow mid-course corrections.  A single week isn’t nearly enough, which is why deadlines like the one I set for myself last week are a bad idea.  “These things are never certain,” say the doctors, and so should we.  My deadline was more of a “that’s how much time I have” estimate than a realistic prediction.

And yet there’s still value to Impossible Deadlines, providing they’re short-term and infrequent.  While I may not have finished by today, I did manage to do more work than I might otherwise have done.  Such short pushes are called “sprints” in my world.  For some reason, they work better when you imagine the finish line is very real and very necessary.

They’re stressful though. Unsustainable. Each day I’m swimming in delay frustrations, reminding myself over and over, “It’s okay.  This is good work.  Just keep moving forward.”    And yes, I end up doing three weeks in one, which at this point is needed.

But the sprint ends this week.  I need to get back to my sustainable schedule.   Slow and steady most certainly wins the longer race.  I can’t wait.

In the last four weeks, I’ve pushed myself to describe a dream.  First with the business plan, detailing not only what we want to do, but why and how as well.  Writing those fourteen pages was difficult, requiring an unusual amount of stare-at-the-ceiling time and long thoughtful baths.  The writing itself was equally slow.  I averaged something like a paragraph an hour, with breaks every few hours.  It was tough going.

Each morning I read the whole thing aloud.  My enthusiasm increased as the document took shape.  I knew the writing was taking too much time, time I didn’t have, but I allowed things to unfold anyway, reverent of the ineffable source of thoughts not fully my own.  After two weeks, I sent the plan to my list of 84 conspirators, quite unsure of myself and fearing their reactions. Though the document was likely the best I’d written, I still felt the usual panic as I clicked Send.  Such a brazen thing to say, “Listen to me,” never mind “Believe in me” too.

When the first few positive reactions came in, I was thrilled. People that knew more about startups and business plans than me were saying “Good job.”   The few that read the whole thing seemed enthusiastic and ready for more.  Even my wife, who had a dim view of the whole enterprise, began to get excited.  As I read her passages from the plan, she kept asking questions, at last feeling hope enough to quell her financial fears.

Exhausted from writing, I took a few snow days off with Paula and Isabel, introducing them to Minecraft for the first time.  I’d bought it years ago, but never spent more than ten minutes playing it.  Knowing that Tidepool would have the same kind of open-ended creative nature, I figured it was a good time to get the girls doing “research.”    Two days turned into five as the three of us became enthralled with our creations.  Watching eight-year-old Isabel use Minecraft was especially inspiring.  I’ve been talking about sustained creative engagement for years.  To see my own daughter glued to the screen, narrating her thought process continually … I was thrilled.

Since then, I’ve been finishing the website and trailer, both more concise versions of the plan.  While I’m quite familiar with making websites, the trailer has been a real trip, requiring hours upon hours of counting Flash frames and fixing little details.  A few days ago, I decided to include 90 seconds of actual 3D gameplay, which has me learning Sketchup and Blender for the first time, which is a non-trivial detour, let me tell you.

Yes, I’m spending time I don’t have.  Not a day goes by without feeling the ever present creative juxtaposition  of “this is taking too long” and “just one more thing.”  For now at least, I’m letting my artist side win out over my manager side, though as principal software development resumes, this will change.

What can I say?  Seeing the first rendering of 2D Isabel sketches within a 3D explorable terrain was just too cool.  If Minecraft has taught me anything, it’s that designing the overall look of Tidepool is paramount.  Creating it now with my wife and daughter is about the coolest thing I’ve ever done.