book « Tidepool News

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).

 

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.

With some time off to clear my head, I’ve lost the momentum that carried me through May.  Just as well, since now I need to switch mindsets from coding to talking.   Of the last six months, I spent the first half on business development (talking, designing, writing, sales) and the next half coding Tidepool. My hope was to split my daily time between selling and coding, but that didn’t happen.  It’s tough to be two different people at the same time.

I need to raise $40,000 to finish.  We’re at least a month away from opening things up to Kickstarter and the rest, so this means person-to-person sales, which feels daunting to me right now.  In my head, I have complete confidence in the plan and my ability to sell it.  In my heart, I’m emotionally drained and afraid of rejection.  Somehow I need to will myself back to money mode.

Years ago, when first starting my work in Haiti, I confided to Susie Krabacher of Mercy & Sharing how hard it was for me to ask people for money.  Her response is something I remember often:  “Tim, you’re not asking for you, you’re asking for the kids.  You’re making it possible for people to help children.  That’s a gift.”

If we’re able to finish Tidepool, if we’re allowed to endow it with just a fraction of our recent educational experiences, if we can market it successfully, then children around the world will benefit.

I need to remember the way children looked in Haiti and Nicaragua while they worked with XOs and Etoys: confident, engaged, hopeful.  I need to imagine these hundreds increasing a thousandfold.  I need to see a million proud parents watching as their children learn more deeply, as they learn to think.

I am simply the vehicle.  Money given to me is opportunity given to children.

I believe this.

So quit my bellyaching and pick up the phone!

In two days, we release Tidepool alpha 1 to our private group of 84 families.   Most on the list aren’t familiar with coding, so likely don’t really know that “alpha” means “early testing version.”   Put more clearly, “There Will Be Bugs.”

For more than three weeks since freezing the release, I’ve found and fixed bug after bug after bug.  The shakedown period is a mostly miserable time when you repeatedly get down to “zero bugs” only to find new ones a half hour later.  The jello is mostly solid now, which means I’m ready to put it out for others to share.

Soon I’ll click “Send” on the email inviting everyone, after which mere minutes will likely pass before someone downloads Tidepool and finds the first problem.  Such is my profession, where we cobble things together as best we can, then unleash our imperfections on an unsuspecting public.

Software is hard!   Usually there’s so many moving parts that nobody can fully visualize all the interconnections and outcomes.  Once a bug is found, it’s usually a quick fix, but with each snag, the user trusts the software a little less.  “I don’t have time for this!” and on they go, likely to not come back.

Please be patient.  Please be kind.  Bugs are a natural part of the process.  Please don’t go!

 

Weeks of rest are good for the soul, though lousy for project momentum.  Here now as I start Milestone 2, I’m pushing the out-of-gas Cadillac down the empty country road — impossible to start, then slowly better.

During my break, I had ample time to reflect on the year’s worries, on my missteps, on the future.  Without the exhilaration of the first release to prop my spirits, the last seven months have seemed quite the ordeal.    Between the strain of the complexity and the stress of the schedule, I’ve been trudging with difficulty for some time now.  Add to this the familial wear of our self-imposed break-even budget and the ever-present loneliness of this huge and solo task … let’s just say that I spent my vacation with slumped shoulders and a thousand-mile stare.

Last weekend the prospect of starting up again seemed unthinkable, but as these things usually go, a few hours reminding myself of the full vision did the trick.  I watched all the videos and read the whole blog.  I read the business plan again and gave myself a good talking to.  Now I stand ready and eager to sally forth and finish, excited to start coding.

There’s a snag though, a pretty big one:  we’re broke, or will be next month.  Without September’s needed $5000, the project will necessarily stall in its tracks just before the pivotal public release.

Never easy, eh?   But what fun would that be?

My eight-year-old daughter, Isabel, attends a Quaker school in Quakertown, Pennsylvania. Though my wife and I are not religious, we do believe in a principled, spiritual, life and found a good fit at United Friends School, where all faiths and beliefs (including non-belief) are welcomed equally.  To be sure, there are some very Christian Quaker groups around the world, but Quakerism as practiced in Quakertown, both at the school and the nearby Quaker meeting, is open to all views.  One of the central Quaker tenets is that spiritual truth comes from within, not from other people or books.  In this way, Quakerism is like philosophical Taoism, which states at the start that “The Tao that can be described is not the Tao.”  Both use silent meditation as a core practice.

So if the central belief is “believe what you want,” what do Quakers have in common?   What makes a Quaker meeting “Quaker” instead of just some people sitting in a room?   As you’d expect, the answer defies simple description, though Quakers do offer six social principles as a starting point:  Simplicity, Peace, Integrity, Community, Equality, and Stewardship, which collectively are called the SPICES.  You can read a good summary of the SPICES on the page linked above.  As you’ll see, they’re as useful to a non-believing sociologist as to the most devout Christian.  These commonly held social ideas become “Quaker” only when you add back the central tenet:  that truth regarding how to use these ideas in your current situation reveals itself from within.

Let’s leave the spirituality aside and consider the SPICES as mere social goals, a community code of conduct that describes how people should act with one another.   They’re loose enough to allow many interpretations, but firm enough to provide a common ground for discussion.  In my view, they’re also ideal for promoting a helpful learning environment, particularly for primary school children.  To me, a “Quaker school” is one that fosters an appreciation for these six social ideas, which can often have surprising results, such as the lack of standardized testing, etc.

In future chapters, I’ll discuss each of these principles in turn, focusing on how they can help the budding Tidepool community by creating an environment that encourages helpful collaboration.  My goal is to use the SPICES for social purposes only, not spiritual.  It’s likely that the word Quaker will only appear in this chapter, as I’m concerned that people will misunderstand our intentions if we refer to them as Quaker.  I did want to pay homage to their origin however, and to make the larger point that we intend to use them in a non-spiritual, non-religious way.

So yes, in this context, Tidepool will be like a big Quaker school, but without the “Quaker” and without the “school.”

Lately most weekdays, you’ll find me afterschool on the playground, using my laptop while my daughter plays with friends. Coding Tidepool with gradeschoolers in view has been great for my momentum, or rather it was, until they discovered what I was up to.  Now I’m getting interrupted with urgent questions like “Is Tidepool done yet?”   “What are you working on now?”  “Is that a portal?”  “Can I make another sound?” and so on.  Yesterday I had a crowd around me, with most asking to play Tidepool at home.

With Alpha 2 approaching, it’s time to make plans.  Today I invited 24 local families to join the “Kismet Club,” a group of children alpha testers.  We’ll meet every other Saturday or so for a few hours of guided Tidepool play, with perhaps some professors from local colleges looking on, in hopes of fostering a face-to-face ed-tech scene nearby.

So long I’ve looked to other states, countries, and continents for collaborators, but never my own backyard, which is a bit nuts since Lehigh University, my alma-mater, is only three miles away, with quite a good reputation for education technology.  Our Waveplace work has always been at a distance, with only two week stretches of face-to-face time.  What a change it’ll be to see the kids over time.

So now I’ve got some genuine deadlines to meet.  I’ve an audience to aim at again.

Let’s play!

For a month it’s been push, push, push … coding frantically each day with the stress of an impending pulled plug.  My eleven months of unrestricted Tidepool time ends tonight, as tomorrow I return to corporate work.

I’m amazed we made it eleven months, though not without sacrifice.  Aside from our bare-bones lifestyle, my family went $25,000 into debt, though I hope to fill that hole in the next six months.  Financial stress has certainly been the biggest downside to the whole endeavor.  It’s one thing to say, “Make the dream real,” and quite another to frequently tell your daughter, “Because we don’t have any money.”  My wife’s been a (supportive) nervous wreck all year.

Today I posted the Tidepool Alpha 2 release candidate and gave it a good once-over.  I’d love to say, “It’s done”, but I found 34 bugs, with four ranked as “blocker”, meaning crucial functionality is broken.  Things are bad enough that I cancelled this Saturday’s Kismet Club class, which is a real disappointment. For weeks I’ve been hoping to show the newest Tidepool stuff to the kids, but I just can’t delay my paid gig any longer.  We need the money yesterday.

And so I’ll put Tidepool on hold for the next few weeks, knowing that story-making multiplayer animated coolness is just a few dozen bug fixes away.  Over 45 weeks, I’ve spent 1337 hours (coincidentally “leet” in “leetspeak”) to create nearly 1200 printed pages of code.  Ordinarily, I’d charge $267,000 for such a feat.

Instead, I’m left with frustration.  To motivate yourself over such a long stretch to create something out of nothing is no easy task.  To cut yourself off when things start to get interesting, when months of boring foundation work are past, and only quick cool features remain . . . it’s demoralizing.

No doubt, I’ll release Alpha 2 sometime this December.  What more depends on money.

Once upon a time there was a father of two who went through a divorce.  At home alone each night in his bachelor pad, he missed his daughters terribly and looked forward to their upcoming visit over the Christmas holidays.  Some nights he played a new game called Dungeons and Dragons with his friends.  Some nights he glanced at the line plots he had made while mapping the Mammoth Cave system with his wife. Both had been avid cavers.  Other times he clattered away at his home PDP-10 terminal, spelunking his way through a different sort of world, helping his bosses create the ARPANET, grand-daddy of the Internet.

One night he decided to make a computer game that his daughters could play during their visit.  Combining his love of D&D and caving, he mapped out an underground cavern with treasures and monsters, then coded up a small Fortran program called ADVENT (short for Adventure).  Players would type instructions to their in-game representative, their avatar, who did its best to carry out the instructions.  You told your avatar to GET LAMP and KILL DWARF and move about Colossal Cave as you found treasure and danger.

His daughters loved the game, as did a few dozen people who happened to find it stored on the fledgling ARPANET, one of whom was Don Woods from Stanford.  With permission from the original author, Will Crowther, Woods extended Adventure in 1977 to the version we know today, which spread from mainframe to mainframe and later to personal computers, which arrived that same year.  Without intending to, Crowther & Woods had created a new video game genre, the “adventure”, which began in text but later evolved into the graphical Skyrim’s and MMOs of today.

It all began with:  YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING.

As now do I, since I’m recreating the original Adventure as the first story in Tidepool. You can follow my efforts in my TIGSource daily devlog.

TIGSource is the largest game developers community, where such notables as Notch (Minecraft) and Phil Fish (Fez) got their start.  I’m hoping to connect with other game developers as I create the various games-within-Tidepool, such as Colossal Cave, that will inspire others to make their own.

 

With nearly no Tidepool time in January and February, I reached a billable resting point in early March and resolved to release the long delayed Alpha 2.  Crossing Pennsylvania by bus with the Moravian Choir on their Ohio tour, I dove in to fix the 20 holiday bugs.

The first ten were easy, giving the woefully mistaken impression that I was halfway there.  As I trudged through the thornier issues, it became clear that some wholesale rewiring was needed.  My months away had given me a fresh perspective, prompting new ideas for a cleaner foundation.

While never a good idea to make big changes to a “release candidate”, I deemed the risk worth it and ripped up the floorboards.  First one major piece, then another, I went on a “refactoring” binge, all the while hoping the big release was right around the corner. After wrestling the changes to the ground, I fixed all but one of the holiday bugs and made a new release candidate.

Well, today’s “smoke test” wasn’t good.  I found another 19 bugs!  Not surprising given the scope of the changes, but come on!   Nineteen steps forward, nineteen steps back.

Given financial priorities, I need to put Tidepool back on the shelf again, so March will end without a release.  While in my head I know the code’s in a much better state, my heart feels like nothing’s changed in over four months.

And now more waiting . . .