timothy falconer's semantic weblog
Big Fractal Tangle

down morning

I am of course imperfect and emotional.  While academia and business pretend they’re immune, working solo on a two year project, I have no such luxury.  From the start, I’ve maintained that the biggest risk, the most likely reason for failure, is not being emotionally strong enough to finish.  While I left this risk off the business plan for obvious reasons, it’s been foremost in my mind all along.  I guess I should give myself credit for putting in a full year so far.

Today’s podcast is a good example of the periodic “talking to” I give myself when I’m feeling down.  While most would think it a mopefest, I suspect others can relate.  Much is made in our culture of the struggling writer or painter, working alone in frustration.  Programming is no different.  Whether part of a team or alone, we each wrestle with our doubts.  Being the sole designer, programmer, marketer, and tester is its own kind of gauntlet.

The struggle isn’t technical.  It’s human.

blinders and design

After a year plus working on my own, it’s both wonderful and horrible to have new people playing Tidepool.  As hard as I try to find and fix my own bugs, I’m necessarily, categorically, awful at the task.  Like racehorses trained to go straight around a circle, developers have well-established blinders with their own code.  We create our own ruts, repeating the same sequence of steps sometimes hundreds of times until we can no longer see another way around.

One funny, and inexplicable, example happened last night.  I was playing Tidepool with my friend Jon, typing to him, making jokes.  “Wait, what just happened?”   A little later, “There it is again.”  Turns out whenever you type the closed parenthesis, it sends you “home”, just as if you clicked the home button.  How on earth did I go so long without finding this bug?   Well, it turns out I didn’t make smiley faces with myself when typing “this is a test” and “right back at ya” over and over.

Also in today’s podcast, I brainstorm the new director box, a fresh and full-of-possibility UI design … my favorite thing to make.  Instead of talking about it, here’s a scan from my design book. Nothing makes me happier than solving puzzles like this.

summer goals & kickstarter

A big part of developing & marketing a software product is management, or talk-talk-talking through your goals, plans, and pesky side issues.  Given a choice, I’d gladly ignore such things and happily wallow in the code all day, but given my background and skills, I’m usually the one brainstorming schedule and marketing plans, as I do in today’s podcast.

The plan is to release the next version, Alpha 3, the programming version, on June 20th.  On that day, we also launch our Kickstarter campaign to raise funds for our courseware authors.  I’m planning to pay eight people to create 24 courseware units.  Each will get paid $1000 a unit for 40 hours work (two weeks).

Kickstarter donors who give $50 or more get to use Tidepool right away.  All other donors wait till we finish our Kickstarter and release Alpha 4, the courseware version, on July 19th.  By then, we should have eight units.

A month later, we launch the Tidepool beta on August 13th.  On that day, we open up the floodgates and let everyone play.  We focus our publicity efforts in August on teachers and schools, who are just beginning their fall prep.

* $50 gets you in during Alpha 3 (June 20)
* $25 gets you in during Alpha 4 (Jul 19)
* everyone gets in during the beta (Aug 13).

Sounds like a plan, and a lot of work!

running the show

Once you’ve taught a Tidepool agent some new rules, how do you change them?  The answer is the director, a new user interface element that I discuss in today’s podcast.  The director is much like a programming IDE (integrated development environment) in that it lets you review and edit your code, then step through it like a debugger.  It’s your window inside your agents, letting you browse and extend their capabilities.

Another UI element is the timeline, which lets you hang rules on timed events, so you can say things like “angry bear, when player time is 20 seconds, do a scary dance.”  This lets you schedule events relative to a player’s entry into your story or scene.  The timeline gives you an overview of what’s about to happen in a story as well as what has already happened, so you can use it to investigate past activity.

The third programming tool is the roster, which will soon be extended to let you control agents directly, playing and stopping them, setting properties, and so forth.   Think of the roster as a kind of buddy list for the agents and players in your story.  Add in the message bar and lexicon and you’ve got the full programming interface for Tidepool, along with the goals for the current milestone, and June.

language is a virus

Regular expressions are likely the most powerful, most underrated, tool in all of programming, or so I preach in today’s podcast.  I also touch on Tidepool’s parser, which allows players to type commands in a variety of formats, allowing something closer to natural language than your typical syntax-laden command line.

Of particular interest today is messaging scopes.  When you type a line into Tidepool’s message bar, where does it go?  Does a player or agent on the other side of the Tidepool world see it?   How about those outside your current story?   At this point, Tidepool will have the following scopes:

  • world - every player/agent will see your message
  • neighborhood - only parcels where the sender is a “helper” will see it
  • parcel - only the sender’s parcel will see it (and all the stories in that parcel)
  • story - only the sender’s current story will see it (and all its scenes)
  • scene - only the sender’s current scene will see it

By default, only players and agents in the sender’s current scene will see messages.  Keep in mind, when I say ‘message’, I don’t just mean chat messages.  Every action and change in Tidepool is done by sending messages, so “seymour forward 10″ will be seen by other agents and players in seymour’s current scene.

I haven’t figured out the syntax for specifying other scopes yet.  More examples are needed.

three key differences

Programming in Tidepool has three key differences with other systems.  First, the overall model is one of conversational language acquisition.  You chat with your agents to learn what they know and to teach them new tricks.  Second, all coding is “talkable,” meaning you can dictate it through a voice recognition interface.  Last, coding is very flexible as there are often many different ways to say the same thing.  Tidepool will use Storybot, our cognitive agent, to help determine what players are trying to say using “do you mean?” clarifications based upon the evolving context.

I discuss all this in today’s podcast, along with my first testbed of sentence types:

* seymour forward 10
* seymour turn 90
* seymour sound meep
* seymour begin, forward 15, turn 120, forward 15, turn 120, forward 15, end
* seymour when square, begin, forward 10, turn 90, forward 10, turn 90, forward 10, turn 90, forward 10, end
* seymour when anyone is near, forward 10
* seymour when mosey, forward 25
* seymour square
* seymour mosey

As you can see with the “square” example, I’m using the “when” clause to define what would be a method or function in another system.  “When” statements define rules, which are the quintessential code block in Tidepool.  Anything more than a simple command or block is a rule.

wake up and do something

From interrupt lookup tables to event processing queues, code is often kicked off in more ways than RUN.  Today’s podcast talks about Tidepool events and rules, which allow you to specify all manner of custom actions whenever certain conditions occur.

A few examples:  “when someone says meep, jump in the air and say meep too”;  “When someone comes near, run away”;  “When someone clicks on you, change your animation to “Frightened Fox”.

Tidepool has a message dispatcher that routes all changes between players through the Storymill server.  Whenever a change arrives, agents in the same story need to check their rules to see if one them needs to be fired.  For example, when player @teefal presses the W key to move forward, agent #happyFox needs to check how far it is from @teefal.  If @teefal is “near” (perhaps 2 meters away), then #happyFox fires off the “run away” rule.

One of the reasons I built my own game engine is so I could customize this nitty-gritty stuff, allowing me to make the programming language intrinsic to the game environment.  I’ve got very specific ideas on how I want to teach programming to children.  Having my own engine lets me get creative and do non-standard things.

eight coding concepts

In today’s podcast, I broke down the eight core concepts in programming and came up with examples for how to implement them in Tidepool.

Specifically:  variables, expressions, statements, blocks, conditionals, loops, events, rules.

Tidepool has a few constraints that make designing this new language more difficult than the norm.  For one, it has to be easily understandable by young children (ages 7 and up), which means it cannot rely on strict syntax and a lot of punctuation.

Another constraint is that it has to be easily typed as a chat message … line by line … so, no colored blocks and tiles and no text editor formatting.  Related to this is that it must be able to be SPOKEN easily.  We want voice input to remain an option, particular when people use Tidepool on small devices.

Anyway, I came up with a small test bed of statements that I’ll start implementing today:

* seymour, forward 10
* seymour, when anyone is near, forward 10
* seymour, begin, forward 10, turn 90, forward 10, turn 90, forward 10, turn 90, end
* seymour, repeat forward 10

Syntax will very likely change many times before things settle, but this is a good enough start for now.

who are you talking to?

Yesterday was all about luring people on my alpha list to actually respond.  Turns out my mailing list announcement on Saturday ended up in most people’s spam (or worse), so I took the time to individually address all 100 people, asking them to click a link to let me know they’re out there.  Yes, sounds desperate, I know.  And I kinda was.

I made a landing page that summarized how to download and play the new Tidepool release once I realized that most people didn’t get the first email.   The good news is that my response rate greatly increased … almost half have at least clicked through the link and seen the landing page.  Still very few downloads and NO players except me, my wife, and daughter.  Yes, I know, it’s been less than a day for most of them.  I’m impatient, okay?

In other news, today’s podcast discusses thorny addressability issues in-game, such as what does it mean when you type “seymour forward 100″ when you’ve got two agents named seymour by different players AND a player named seymour.

agents follow rules

Well folks, hell did indeed freeze over last weekend.  After six months of financial limbo, I was finally able to fix Tidepool’s remaining bugs and ship Alpha 2 to my 100 alpha testers.  

You can see my quick tutorials here.

Now begins the fun part … adding my own programming system that will let players code their creations. No, I’m not using a traditional scripting language like JavaScript or any other C-derived procedural bag of control-structure tricks.  Instead, I’m using my years of teaching young children how to program to make something more contextual, more flexible, more like human language.  It’ll be rule-based, much like Prolog, but more …. event-driven.

To hear me ramble about it for 20 minutes, listen to today’s podcast episode.

My current schedule has me finishing this current milestone by early June.  As for Colossal Cave, I decided to hold off on the core logic so that I can use Tidepool’s rule system to implement Crowther&Wood’s action mapping.

21) you may begin

Today I release Tidepool Alpha 2.

Imagine me pausing a minute to let that sentence sink in.  After six months of corporate distraction, after 72 seemingly never-ending bug fixes, after near daily grieving of my delayed dream, I’m finally able to show what I’ve been working on since last July.  Tidepool now lets you create sketches, animations, scaffolding, and stories.  There’s quite a lot that’s changed.

Even better, I now get to move forward with the much anticipated Alpha 3.  When this new version is done, you’ll be able to code your agents to do your bidding, letting you learn real programming.  It’s no exaggeration to say that I’ve been dreaming up how to do this for nearly eight years.  In all that time teaching with tools like Etoys and Scratch, I’ve imagined how I’d change things.  Now I get to put words to action.

My hope is to have something genuinely cool to show while attending ISTE in late June, so I can find collaborators from among the hundreds of ed-tech enthusiasts at this industry leading event.  I need a team to help me create courseware this summer.

And I need players, lots of players.  From today forward, it’s all about luring people to play.  Starting with my hundred colleagues, friends, and family members, I now need to slowly grow our community, one player-minute at a time.

Right now on our server, the Tidepool world sits empty, waiting to be filled.

You may begin.

20) out like a lamb

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, myheart feels like nothing’s changed in over four months.

And now more waiting . . .

19) colossal cave

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.


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.


18) land of the bottom line

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.

17) playground imperative

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!

16) like a big quaker school

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


15) the maddening middle

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

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?

14) there will be bugs

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!


13) money mode

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!

12) don’t shake the jello

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.