How Prototyping Saves My Sanity

bugatti-1612389_1280I am a firm believer in “good enough” mentality. When creating something, it helps to decide what would be good enough for the purpose you have in mind. Then you intentionally aim for that target. I would say that is the crux of any “lean” approach to writing software or starting a company. You do just enough to reach your objective and no more. That way you can avoid waste. Reasonable people can agree that avoiding waste is generally a good thing.

Still, the phrase “good enough” can be an excuse to avoid difficult work. It might also be used to rationalize being stingy, holding back what would benefit others. When striving to exceed expectations, an abundance mentality is more appropriate than squeaking by with something that is “good enough.”

To be effective, the phrase “good enough” has to be followed by the question “for what?”

If your purpose is to sell something, it has to meet a need that people will pay for. If your purpose is to gain notoriety or to build a legacy so that you are remembered for generations, you are setting the bar quite high. Whatever you create had better be outstanding.

As a solo-preneur—that is, someone working alone on bootstrapping a business around game design and development—my bar for good enough has to be relatively low. I am continuously testing ideas for viability. The ideas need to be good enough to gain even a little attention and to see what might work in a grander scale. I do not count on selling much in the early stages.

In my mind, ideas evolve quickly, and before long a vision begins to crystallize. Imagine with me that I have attracted thousands of followers. People are happy to use my amazing software and pay for it without hesitation. I have grow my company to a half-dozen people, and we are busy creating ever more software people love.

Hollywood has conditioned me to suspend my disbelief, so believing in my fantasies is easy. The hard parts are ignored, risks are dismissed. Would it be prudent to go all-in based on the movie of success in my mind? No, that would be crazy, or at least rather foolish.

Others would think so, too. They might whisper behind my back. You can almost hear the critique.

  • “Is that guy nuts?”
  • “What was he thinking?”
  • “He thought this drivel would draw an audience?”

On the other hand, all I need to do to keep my sanity is prove that the idea can work. Engaging in research and development toward in the pursuit of an idea is certainly reasonable. If it works, I’ll have something to show that others can understand. If I cannot find a way, or if it does not work as well as I imagined, I can use that evidence to adjust my idea or walk away from it.

With any non-trivial project, such as putting together an online game, I like to work in stages. The first stage is intended to answer a few questions.

  1. Can my idea work?
  2. What kind of effort will it require?
    • What skills?
    • What creative elements?
  3. Will the idea be interesting enough for others?
    • To try?
    • To pay for?

This first stage is a great time to build a prototype. Our ideas can be full of magic that needs to be turned into moving parts based on physical reality. A good prototype does the trick.

An Analogy

Think about a car manufacturer who wants to develop its first electric car. Does the company sell the first car it produces? No. Does it even have an assembly line for the first car? No. Although the car company knows how to produce cars, an electric car is fundamentally different than those that burns fuel. That requires some new ideas.

A team in a research lab might start by assembling by hand a wheel, an axle, an electric motor, and a battery. Someone might write software to control the motor. Although far from being a complete car, this is a basis for learning how an electric car might work.

Once those pieces are working together, the team might add a brake, updating the wheel and controller to accommodate. The team might try cutting-edge technology as well as something more traditional. In fact, they would consider the technology choices for each component, whether to stick with what has worked, to try something ground-breaking, or to invent their own technology specifically for this new purpose.

They probably have things wired to test and measure their attempts. Do the breaks get too hot? Can they overpower a runaway motor? Can a bug in the controller software lead to a safety issue?

The point is to learn, to push the boundaries, and to prove what can work. This is the essence of prototyping. See if your ideas can work, get a sense of the effort involved, and give yourself a way out before spending too much on full development and the trappings of a production launch.

Decisions about paint colors and interior fabrics can probably wait. Adding a rocket booster is probably also out of scope, as tempting as it might be to explore.

A True Story

Back in December, I wrote and launched my first release of StoryTime, which is a game platform for writing and playing interactive, text-based adventures. The first release was good enough in about two weeks.

By now you know to ask, “Good enough for what?”

Glad you asked. My target was to launch a “reader” application for playing story-games, with one complete story loaded and ready to play. The launch was merely a matter of hosting the system where anyone with an Internet connection could try it.

I did that.

Then I needed a way to register authors, so I added a database to the back-end and hooked up an identity provider to handle sign up and authentication. That work included a feature for players to opt-in and become authors.

Once it was working, I released it.

The release was nothing fancy. Real authors would probably want to provide a lot more information about themselves, like the write-up that you find on the back of a book cover. I only wanted to show that I could save any information about the author. What I had was good enough as a proof.

Then I added the Writing Desk, where authors go to write their story-games. It’s slightly more complicated than using a word processor because you have to hook up the scenes in a certain way. However, there’s no coding involved for the author. Just type and save.

So I released that.

The Writing Desk also lacked features that would make for a carefree user experience. One problem was the way the story was organized. The layout made it possible to get to everything but not necessarily intuitive. Also, the editors lacked feedback cues, and without auto-save, it would be easy to lose work.

Still, it was good enough to show how all of the pieces of a story-game could be written and connected.

Then I added a way to publish story-games. That promotes a game into the library where anyone can find it and try it out. Although the UI had a couple of refresh issues where updates were not being displayed immediately, nothing was broken fundamentally.

So I pushed that out, too.

The publishing step involves categorizing the story-game by assigning a rating (for age-appropriateness) and one or more genre. While capturing the information was import to show how stories might be grouped and searched, new features are needed to make use of the information. That didn’t stop me from releasing.

And there it stands, a working example of a simple gaming platform. Is it good enough? Well now, that depends, as you know. Good enough for what?

If I believed the movie in my head, the fantasy that I was creating something thousands would love and pay to play, my only option at this point would be to break down and cry. StoryTime is nowhere near good enough for commercial purposes.

Luckily, I have a mindset that allows me to appreciate what I have done and use that to understand what I could do next.

What I have done is to build a prototype of the gaming system I imagined.

  • The prototype is not colorful, at least not in an artful sense. At least I used Bootstrap for styling, so it isn’t horrible. Unless you don’t like Bootstrap.
  • It is not elegant. As I mentioned, it’s pretty easy to lose work, which is about the worst thing that can happen to a writer.
  • The library is still nearly empty. It’s got the one story-game that I wrote back in December. I have been too distracted to write another. Also, droves of writers have not decided to invest irrationally in a game platform without players, an ecosystem, or an obvious payout. Go figure.
  • Mostly players don’t want to become writers. In fact, players want graphics. A text-only game is a tough sell these days.

A game designer ask if StoryTime could be used as the story line in Unity, a popular game platform. That’s a good idea. So perhaps what I have done is assemble a new mechanism that could be built into a larger system. Like figuring out a drive train based on electricity.

As a stand-alone gaming platform, StoryTime could use so many more features. What about illustrations, at least for the cover art? How about collaboration? Shouldn’t there be a review process to make sure what’s being published meets community standards?

Say authors actually used StoryTime to create alternate-universe games. How would games be sold? What’s the business model? Some companies have made this work. Others have closed their doors.

In short, the gap to realize my dream for StoryTime is huge. Finishing will involve a lot more work. It will also take more talent than I have. To see it through, I will need that six-person team. And I still don’t know if would be worth it.

Meanwhile, something else happened that would be enough to drive a normal person bonkers.

Who Moved My Technology Cheese?

The last release of StoryTime was in April. Since then, I have been busy with other concerns. As I returned to my little coding project last week (now July), I found what has become a familiar scene. The software still runs, but everything it relies on has moved. Allow me to explain.

When I started this incarnation (let’s call it the 3rd go) of StoryTime, I made some choices for the underlying software technology. First, I decided to go 100% JavaScript. StoryTime uses ReactJS and its ecosystem of modules for single-page-app support. On the back end, StoryTime offers a service with a REST API defined using Open API 3.0 (a.k.a. Swagger). The service uses Express on NodeJS 8. That connects to a PostgreSQL database where the stories and data are kept. As any React developer might guess, the app uses React Router for navigation and Redux to manage UI state. I also chose Bootstrap for styling, as I mentioned before.

Everything is written using es6+. That’s a relatively new form of JavaScript that anyone serious has been using for a while, with Babel transpiling down to something that older Web browsers can understand. Of course, it’s all built by Webpack, with as many unit tests as I could remember to write (not enough).

The whole thing is hosted on Heroku, which had just introduced pipelines. So I check my code into Git and pushed to GitHub, where Heroku notices the update, pulls it down and builds it on my staging server in the cloud. After that, I try my changes in staging, which is as close to production as you can get. In fact, when things check out, I simple move that build to production using a little button on the pipeline. Easy.

Also, I installed PaperTrail in order to see the last few days of logs. After all, I want to know when people are using the game.

Even if you don’t write software for a living, you can see that there are a lot of parts. Many of these parts are moving, too, in that they are supported by communities of active developers who keep changing things.

So I am used to having to upgrade components rather frequently. But stepping away for a bit changed my perspective. Here are a few of the shocking revelations.

  • JavaScript is losing favor to TypeScript.

TypeScript is a superset of JavaScript that introduces type safety, a much-needed measure of control, to JavaScript. Now you can ensure that an object conforms to the shape that is expected. All the flexibility of a scripting language with the safety of something that gets compiled, like C, C# or Java.

  • Redux sucks.

Redux is the “recommended” approach to managing client-side state. A Redux store is a good place to keep facts that you want to show in the UI. For instance, the fact that an edited scene needs to be saved might be recorded in a Redux store.

The truth is that the Redux approach is hard. I’m not just whining about it. It adds overhead and comes with a mental tax. I waited as long as I could before adding it into StoryTime because I knew that it would slow me down. Now every time I return to add something else to the store, I have to remember the gymnastics to make it happen.

  • Bootstrap looks horrible.

I mean it’s okay, but not really. Certainly not with my limited skill at styling. Also, I tried using reactstrap with its React-ready components for applying Bootstrap styles, but the documentation was insufficient for someone in a hurry. I had to keep looking at their code to know what was ready and how to use it. Bah.

  • Node is on to version 10.

You can still use 8, although it’s now on long-term support (LTS). Might as well start thinking about upgrading and what that will mean.

  • auth0 has a pricing model that will crush me beyond 6,000 (or so) users.

I knew this going in, but figured I would adjust if I ever got close to that level of adoption.

Any one of these gaps might not be worth a full-scale rewrite. Yet combined with the realization that I have been building a prototype and that no one has even tried to write a story-game yet (aside from my dad. Thanks, Dad!), I feel completely at ease walking away from this PROTOTYPE and starting over with a better idea.

Once again, prototyping has saved my sanity. I get to chalk it up to learning and decide what to try next.



Try the StoryTime Writing Desk

StoryTime 1.4, featuring the Writing Desk, is released and ready for your creative minds.

This is where you can create your own story-games. Everything you need to write scenes and connect them is online.

To get to the Writing Desk, you have to become a StoryTime author, which is easy. It just takes a few steps.

First, you have to sign in.  Use the “Sign In” button in the upper right corner.

Choose a Google or Facebook account to use for authentication. We have to know who you are so that you get credit for your work. Also, we don’t want to let anyone else mess with your stories.

If this is your first time logging in, an account will be created automatically for you. We get some information about you from Google or Facebook. It’s safe enough, and you already agreed to share that information, like your nickname and email address.

Second, once you are signed in, click on “Account” in the header navigation. Here you can modify a few pieces of information about yourself. You can also click a button that shows you the terms and conditions of becoming an author. Click whatever you need to agree. Your account will show that you agreed to the terms, and the button to agree goes away.

At this point, you should be good to go except for one small glitch. After you click the “I Agree” button, refresh your browser window. That will force the Writing Desk link to appear.

The next time you Sign In, Writing Desk will be there without having to refresh. Also, at some point I will fix the glitch, so you may not have see the issue.

Here comes the fun part.

From the Writing Desk, you can enter your first story title and click the plus (+) button. That’s your first draft, ready for editing. Click on the pencil to the right of the draft name, and go to the draft editor.

From the draft editor, you can change the title and add a quick tag line and longer about. Be sure to click Save whenever you change something and want to keep the change. Also, see the scene titles and add more scenes.

The first scene was created for you, so you might want to edit that first. Click on the scene, make changes, click save, and so on.

On the scene editor, you will notice a button that says “Change Signpost.” Before you can add a signs to the signpost, you will need some scenes to go to from the one you are on. Use the breadcrumbs at the top of the editor to go back to the draft editor. It’s the link with the name of the story.

When you have an extra scene or two, find your way back to the first scene and change the signpost. Give it a couple of signs, each pointing to a different scene.

That’s enough to get you started. Jump in and give it a try.

By the way, if you play long enough with the Writing Desk, you will find things that don’t quite work and think of ways it could be better. Add a comment to this post and share your ideas.

Or if you would like to keep things private, you can use the Contact Us link at the bottom of StoryTime. That will use your email client to send whatever you type.

Tell me which improvements I should prioritize. Like being able to delete. How about being able to publish? A way to visualize how the scenes are connected. What else?


The Hammer and Anvil of Creation

Think back to the last time you created something new.  How long ago was it?  Perhaps it was this morning when you made breakfast.  Perhaps you are lucky enough to have a job that requires creativity.  Or maybe you have not created anything of significance in a good long while.  The act of creation can be thrilling or terrifying.  On one hand, turning our ideas into reality feels good.  On the other hand, creation comes with the social risks of criticism and failure.

For many people, life is centered around the daily grind.  Repetitive, predictable, safe, the daily grind has its place in getting things done with a minimum of mental anguish.  When the grind gets too monotonous, we daydream, which kindles creativity and relieves our boredom.

I am a maker.  I seek the satisfaction of creating something with my own thoughts and fingers despite the risk of criticism.  In fact, I frame criticism as an essential element of feedback, which is simply information about what you have created.  Using feedback, you can decide if things are good enough or need to change in some respect.  Feedback is the hammer and anvil of creation.

For inspiration, I like to think big, and mythology offers a rich supply of big ideas.  Take Hephaestus, the Greek god of fire and volcanoes.  Taking a quick look at the pictures in this article, you will notice that the primary tools of this god are the hammer and anvil.  Together they induce feedback on some item of heated metal until it becomes something useful.

While looking for pictures of Hephaestus, I learned a few things.  This god was ugly.  His face was unshaven and dark with soot.  His chest and arms were huge, but his legs were weak and his foot crippled.  This is not the typical image of a god, yet his power was in his ability to create.  While he made many items for himself, he was also generous with his creations, giving them to the gods as well as to mortals.

Likewise, the act of creation is ugly.  Early results are lacking.  Feedback is required to know what to improve.  Once enough feedback is applied, the results can be enjoyed by many.

Since launching StoryTime, a dozen people have played The Mission.  A handful have given feedback, and I have read every word.  Thank you for sharing your thoughts.  Those are ideas I need to shape my plans.

Obviously, this is early days for the game, and things are still quite ugly.  For one, there are no pictures, aside from my mugshot on the Library page.  For another, the game is still a bit rough, without enough detail to ensure that most understand what is going on.  (Hmm, what are the Golden Bars, by the way?)  Also, the game is quite short, and there’s only one to play.

So why would I release a product that still needs so much work?  Since you have read this far, you already know the answer.  Releasing gave me a chance to collect feedback.  Now, not only do I have a sample of opinions about the game, I also have information about the paths people chose through the game, and how long people spent playing.  Also the most critical feedback was whether anyone would bother to play at all.  So far so good.

Here’s a bit of fun to look forward to.  In the coming months, I will be adding a Writing Desk that will allow people to create and contribute their own choose-your-destiny stories.  I am also working on ways to add pictures.

Do you enjoy creative writing?  Are you an illustrator?  Leave a comment, or sign up for the Insiders Newsletter.  I will be looking for beta testers soon, and you will want to be in the loop.

StoryTime is Ready to Play

Yesterday afternoon, after a flurry of polishing, I released StoryTime to general audiences. Everyone who subscribes to my newsletter was first to be notified, and as of this morning, someone other than my kids has played StoryTime.  Exciting.  This is the start of something big, I can tell.

If you are reading this, you will want to try it yourself.  It only takes about 20 minutes to play The Mission and exhaust its various pathways, that is, if you can find them all.  Be one of the first to play.

When you are finished, you can complete a brief survey to share your ideas of how to make things better.

Without further preamble, I bring you StoryTime.

About StoryTime

Now that I have some new followers, today I will tell you all about StoryTime, the first online game by Happy Spirit Games.  To begin at the beginning, it all goes back to my childhood, when I ordered a book from Scholastic Book Clubs, the Cave of Time.  This was the original choose-your-own-adventure story, where you read a scene and decide what “you,” the main character, would do next.  Each choice takes you to a different scene, and eventually you either succeed or meet with an untimely demise.  Then, since it’s a book, you can start over and try again.

Edward Packard is the inventor of the concept and the author of many of the books in the series.  Lately, I discovered his latest non-fiction work, All It Takes, The 3 Keys to Making Wise Decisions and Not Making Stupid Ones.  While the book is a decent exploration of the psychology of decision making, what I find more inspiring is that Edward came up with the choose-your-own-adventure idea while commuting on the train.  He was a lawyer at the time, but he created a different line of work that was more fulfilling, and he went for it, enriching the lives of thousands, maybe millions, of children in the process.  Great stuff.

A few years ago, I needed a way to sharpen my programming skills that were getting rusty due to an excess of time spent in management.  Telling other people what to do is a great way to lose touch with how to do things.  So I spent a significant portion of my spare time working on StoryTime, a gaming system for playing and creating choose-your-destiny† style games.  (†I should mention that Chooseco LLC owns the rights to the phrase “Choose Your Own Adventure,” credit where it is due.)  The game is simple enough to play, yet the system is complex enough to give me exposure to a wide range of technologies.

Over the years, I have written and rewritten parts of the system using newer technologies.  At one point, I had both a decent story reader and story editor working.  Then entropy set in, and the technology I originally used started to fall behind.  Lately, I restarted with a new tech stack, based primarily on JavaScript.  Software is akin to the Ship of Theseus, where the parts are continually replaced and renewed.  If I replace all of the parts of the game, is it the same game?  Hmmm.

Philosophy aside, what matters is that now I have lots of time and a single focus, to get this game online and under the tapping fingers of lots of players, as well as a handful of budding authors.  Playing StoryTime is simple.  You select a story from the StoryTime Library and read the first scene.  At the end of the scene, you are presented with a number of choices.  Simply tap or click on where you want to go next, and the StoryTime Reader takes you there.  When you get to an ending, you do a little dance or take your lumps.  Either way, you can easily start over, or you can go back to the library and choose another story.  With enough stories, an avid reader can be amused for hours at a time.

For authors, things get more interesting.  An author will need to register, which involves providing contact information, agreeing to terms and conditions (such as agreeing not to plagiarize other works), and selecting a pen name.  When logged in, an author gets access to the StoryTime Writing Desk, a place to create stories, edit scenes and hook scenes together.  When the author is ready, she or he can publish, which places the story in the Library  Instant notoriety.

As software goes, the dream is a bit ahead of reality.  My intention is to publish my first story and release the Reader by the end of the year.  12 days to go, although I hope to have it running well before the ball drops at Times Square.  When it is ready, my subscribers will be the first to know.

Why not subscribe now?  Follow this link, and leave me your email address.

What inspires you?  You can also leave a comment.  (See if you can.  I am still figuring out the best way to enable comments.)