Thanks a lot to all the people who have reached out to offer their love, support, and advice. It means a lot. I am very lucky to have you guys.
Being around a lot of creative people at Alternative Press Expo helped somewhat. It got me re-inspired to make things!
But I'm still having some wild mood swings. Sometimes I go to sleep feeling fine but then at 2am my brain goes "Hey! Time to wake up now so you can feel sad and freaked out about something! No sleep for you until 5!"
My current work (on the Chinese learning game) is very lonely. I miss having coworkers! I miss having a place I go to every day where there are people who care about the progress I'm making on my work. I didn't realize how much I emotionally depend on that kind of social support until I tried to do without it.
Sushu cares about my progress, of course; she's doing all the user testing and we're collaborating closely on the product design. Which is great! But I wish I had somebody I could bounce technical ideas off of, and I wish I had somebody who knew more about business strategy for starting a software company.
So I'm thinking once again that I need to find some kind of business cofounder and/or some kind of professional community. Other people I can learn from about what I'm trying to do, so I'm not doing it alone in a vacuum so much of the time. Maybe even just a hacker coworking space would help.
Palo Alto must have some kind of community like this that I could tap into, right? I just don't know where to start looking for it.
If I was smart, maybe I would have lined up something before quitting my old job. But I'm not, so I'll just have to learn from my mistakes as I go.
Studio Xia update: Handwriting recognition demo
The Studio Xia Chinese program currently asks students to grade themselves on writing hanzi (Chinese characters). It shows what the hanzi is supposed to look like and then asks you to click right or wrong; the score is entirely on the honor system.
Which works pretty well, as long as everybody is there to learn. If you cheat, after all, you're only cheating yourself.
But as I try to develop this software from a set of drill activities towards something more gamelike (the eventual goal is "Learn Chinese: The RPG"), it would be really nice to have some automatic scoring of hanzi input. Maybe the amount of damage you do to a monster depends on how fast and accurately you draw one of the hanzi from your current working set, for example.
I started out a couple weeks ago by trying to compile an open-source OCR (optical character recognition) package called Tesseract which supports the simplified Chinese character set. Ran into a bunch of dumb Linux linker dependency problems, but finally got it working -- only to discover that its accuracy was really awful.
- We already know which hanzi the student is supposed to be drawing, so we only have to compare against that one, not the entire corpus.
- We can observe the student writing the hanzi stroke by stroke in an HTML Canvas element, and analyze as they go; this is a much easier starting point than, say, a bitmap - no need to do edge detection when we can get the start and endpoints of each line directly.
- Observing the student write each stroke also gives us a rich set of data that would not be available from a static bitmap - such as which direction they were moving the "pen" when they drew each stroke, and the points at which they changed direction.
Better yet, by detecting where the students' strokes differ from the strokes of the hanzi model, we can offer feedback like "These lines are not supposed to cross here" or "You messed up the stroke order" or "You missed one stroke", etc.
After a couple of weeks of experimentation, I have an algorithm that I think is ready for wider testing.
Try the demo here! (For now this demo includes only a single character, 你, which means "you".)
If you want to help me out, please try it and let me know:
- Does that demo work on your browser? If not, which browser do you have?
- When you write the character, does the feedback that it gives seem accurate? Or is it marking something wrong that you think is correct?
(If you find bugs, a screenshot would be very helpful!)
A single-character demo isn't very impressive, but I have also created a page where a teacher can input new hanzi to the system. The teacher draws five or more correct examples of the hanzi, and my program uses them to construct what I call a "fuzzy model" to capture the range of acceptable variation in the shape of the hanzi.
Final note: Writing hanzi with a mouse (or worse, trackpad) really sucks. I know that. This program will work with a mouse, but touchscreen users are the main target audience. Touchscreens (whether phone, tablet, or laptop) are the wave of the future and in a few years mice will start to look very old-fashioned. So I'm especially interested in getting this to work well on iOS Safari, Android stock browser, Android Firefox, Amazon Kindle stock browser, Windows 8 tablets, etc. etc. If you have one of those, please use it to try out the demo and let me know what problems you run into!
Studio Xia is not a startup
Studio Xia is going to be the umbrella brand for stuff that me and Sushu make. It's a company that we're starting, but it's not a "startup company", more like a family business.
Startup expert Paul Graham defines a startup as a company designed to grow fast at all costs. I'm not very interested in growing fast. I don't want to take venture capital or go into debt buying office space or whatever. My goal is to start something that makes me a modest living. That will be hard enough, I think.
So by Paul Graham's definition, Studio Xia isn't a startup, it's a "barbershop". I'm fine with that.
Anyway, we want to start trying to sell the Chinese learning game at the National Chinese Language Conference this year. It's in early April, in Boston. That gives me a nice hard deadline to keep myself on track. Now until April should be just barely enough time to finish a minimum viable product (I hope).
Of course, when we went to register, they asked for our website, so I needed to throw together a Studio Xia website quickly and have it look halfway professional.
That's why I was messing around with Bootstrap.js, that thing I told you about that makes all websites look the same. The Studio Xia site is therefore full of modern website cliches like that rotating-image-gallery thing (Bootstrap calls it a "carousel"). I'm not exactly proud of it. But it's just meant to be a placeholder, and it's doing its job.
The hardest thing was deciding on a name for the game! I had to call it something so I'm calling it "Legends of Hanyu" for now. This was Ben's suggestion (thanks Ben) and it was the least bad of all the terrible names we brainstormed. There's still time to change it if we can think of something better.
I'm not much of a web designer, as you can tell from evilbrainjono.net. Honestly I'd usually rather just leave everything unstyled and focus on writing words. I think studioxia.com is the first website where I've picked a font.
Zelda backtracking as an educational game design principle
Zelda games are always showing you cool stuff just out of your reach. Like, a treasure chest up on the side of a cliff, or blocked by some weird statue, so you can't get to it. If you've played any of these games, you recognize it as a backtrack situation. "Oh, I can't get there yet, but probably later in the game there's an item I can use to get past that obstacle; I'll come back later."
Usually, making the player backtrack would be bad game design: it's boring and wastes time. You might think, if the player needs a hookshot to get that chest, why not put the chest after the hookshot? It's functionally equivalent but with no backtracking involved.
But in Zelda, backtracking is part of a really clever game design. I'd even say it's essential to the fun.
Because showing the player something that they can't get until later motivates them to keep playing. The player thinks "Oh man I can't get that yet... but if I had a hookshot, I could! GOTTA FIND THAT HOOKSHOT!".
Also, it rewards the player for remembering where they saw stuff, for exploring thoroughly and backtracking instead of just always pressing on to the next required plot point. Which reinforces the theme that Zelda games are about exploration.
And when you finally get the hookshot (or whatever item) it's much more exciting because you already know several places to use it. You've been itching to get your hands on it, so when you finally get to play with it you feel like a million bucks.
Then you backtrack through earlier areas collecting goodies with your cool new tool, and the old enemies that used to give you so much trouble are now a breeze, which makes you feel like a badass. Games based on a power progression have to keep upping the challenges, which sometimes makes the player feel like they're barely keeping pace, like running on a treadmill. Giving them a reason to backtrack lets them step off the treadmill and just enjoy all the power they've earned.
So if Zelda-style backtracking is so great for motivating players to keep playing, is there a way to apply that to the Studio Xia Chinese game?
Maybe if we show the player a situation that they can't solve yet using the Chinese that they know (for some meaning of "situation" and "solve"), they'll be motivated to keep playing in order to learn the Chinese they need? And then backtrack and apply their new knowledge to solve that situation?
The important point here is that the new grammar pattern / vocab word is the Hookshot, i.e. it's not the obstacle, it's the way of overcoming the obstacle. Most educational games are crappy because the educational material is mapped onto the gameplay role of "monster" -- defeat this endless series of identical Octorocks with math problems on them, or whatever. You just want them to stop coming. We need to make the educational material feel like tools instead, like power-ups, so the player's excited to get a new one.
But if you need 1,000 words for even basic conversational fluency... well, how do you design a game with 1,000 distinct, interesting power-ups? That I haven't figured out yet.
This month, holy crap this month has been just
For an unemployed person, I'm pretty busy.
The first week of the month I was sprinting on the Legends of Hanyu code trying to get teacher features done in time for Sushu to show it off at a teacher conference. Partial success -- got a lot done, not as much as I would like.
Second week of the month I was doing a week-long statistical modeling / data analysis task for a startup I really like. I was one of a couple candidates they were considering hiring, and they offered this task as a way of letting me prove my abilities. In the process I learned a bunch about applied stats and data mining. That was pretty cool. But I didn't get the job, and I really wanted to work for them, so this was a bummer.
Ah well. If I never failed, it would mean I was sticking to things that are too easy for me.
There has also been... well, read Sushu's dreamwidth for details. It's been hard on both of us emotionally and hard on her physically.
If you follow my twitter you noticed I made some pretty angsty and depressed tweets the last couple of days. I'm worried I might be slipping back into depression. But this time I've decided to talk about it and reach out to people instead of withdrawing and trying to keep it secret.
Jinghua (my old boss from Mozilla) saw my tweets, got worried about me, and called me up to check on me. She's really sweet! She suggested meeting up for dinner that night with the Mozilla user research team (including Gregg who was visiting from Minnesota that day). We had shabu-shabu. It was really good to see them again. Man, for all the things that made me decide to leave Mozilla, I really do love the people I got to work with there. It will be hard to find such good co-workers anywhere else.
This week I wrote and thumbnailed a ten-page comic. Oh, right, I forgot to tell you guys: I pitched a comic idea to this anthology of science fiction short stories set in San Francisco, and it was accepted! The final pages are due on April 1, so I'll be drawing and inking like a maniac all next week to try to meet that deadline.
Even with all the deadlines that landed this month, the job hunt doesn't stop. Sushu's school is looking for a new math/computer-science teacher, so I went in and observed a class on Thursday to see if it's something I might be interested in. (Answer: probably not.) Next I'm trying to set up interviews with some companies involved in building the "smart electric grid".
March was also the month when, out of the blue, I had chances to reconnect at least five different friends who I haven't seen in years. All independently. That was great!
Oh yeah and I went hang-gliding, and played taiko in front of thousands of people at a baseball game. Somehow that happened while all this other stuff was going on.
On the 30th I'm flying to New York City to meet a bunch of people there, then road-trip (or possibly Amtrak) through Connecticut visiting friends and relatives on my way to the big Chinese teacher conference in Boston.
We Can Regrow That For You (read it online)
I contacted the anthology publisher and asked if I could share my story on the web before the book comes out. They said sure, no problem. So I put it up on the Studio Xia site.
Read it here!
Looking over it again, my biggest regret is that it feels too rushed. Ten pages was a little too short for this story idea. As a result, the art and the dialog both feel a bit cramped. I'm pondering maybe doing a "director's cut" where I expand it to 14 or 15 pages, just to give it a little more room to breathe and develop.
Podcast #3 - You Gained a Level!
In this episode we talk about Phantasy Star 2 and other super-grindy JRPGs; the evolution and applications of "levelling up" as a game mechanic; the disconnect between story and gameplay; and what relevance these things might have to designing an educational game.
0:43 - Old school video games on the Wii
2:30 - More intutive? Or I'm just more used to them?
3:45 - Despite my nostalgia, old school JRPGs are super grindy, segregate story from gameplay
5:30 - Spoilers for a 24-year-old game
6:00 - The feeling of progression
9:00 - Regular death vs. plot-relevant death
10:30 - Why subject yourself to random encounters?
11:00 - The browser-based JRPG engine I'm working on
13:55 - I'm not just randomly wandering around, I'm EXPLORING the BIOSYSTEMS LAB while leveling up my chosen team!
16:00 - Wizard 101, and why are MMORPGs so repetitive
18:40 - The Guild drama IS the story!
20:30 - Can't we just watch this story as a movie?
21:15 - Why stories, and games, have to END
23:00 - Learn Chinese: the JRPG
24:40 - Keeping players engaged through five years of practicing a langauge
25:00 - Design constraints of edu-tainment. Subgoals.
26:40 - Balancing the game part with the learning part
28:00 - Limitations of what can be learned in a game format
29:00 - There are only so many fruits you need to know in Chinese!
31:00 - The effort/payoff ratio of designing custom content
33:30 - Begging your friends for nails in Farmville
34:30 - Leveling Up is such a powerful game mechanic
36:15 - Leveling Up is a meaningless overused gamification strategy
37:30 - But does it let you kill stronger monsters?
38:30 - Silicon Valley ran that idea into the ground
39:30 - Why leveling up in Bejewelled is pointless
40:15 - What does leveling up simulate?
41:45 - External rewards