why I prefer not to teach kids visual scripting

I’m actually pretty adamantly biased against visual programming (sometimes referred to as block-based coding, or visual scripting). I’ll elaborate.

First, it’s important that you understand visual programming to be generally more limited in scope and capability than most (though certainly not all) text-based computer programming environments. Most block-based coding frameworks are written “on top of” some other coding environment, and will have only as many features as the programmers of them have bothered to (or had a budget to) implement as a subset of those features and capabilities of the original environment. But it’s also worth noting that the original APIs they are coding on top of will probably be changing as fast (or likely faster) than they have time to implement in the block-based equivalent. So even if the desire is for 1-to-1 feature parity, they will likely always be a subset. (Worth noting that as far as I know, no block-based coding environment has been written in a block based language, they are all coded in some other text-based language environment.)

So why is it bad that it’s limited? This is just for teaching right? Well, my argument is mainly that I believe we tend to prefer to do things the way we first learn to do them**. It seems like most proponents of block-based coding are in education, but I don’t think that the folks teaching it, while they are obviously well-intentioned, realize that there are a limited number of practical applications of block-based coding.

Obviously context matters here. If you are teaching a specific tool that exists for a specific purpose to someone who only wants to be able to do that thing, then maybe that’s fine. I’m mostly opposed to teaching kids (or more even adults) more generally the concepts of coding by teaching them those concepts using visual-coding or block-based coding.

I think it goes like this: if you are presented with the choice of teaching a kid to drag some cool looking blocks around a screen versus getting them to type some (possibly esoteric) syntax into a text editor, then drag and drop seems like the obvious choice! And I can even see an argument that teaching coding concepts, it might seem like decoupling them from a programming-language specific syntax seems like a good idea… but I think most people, when moving beyond learning the initial concepts, are going to prefer to do it the way they first learned it. And that’s where the problem comes in! if the way they first learned to code was with blocks, they’re going to be used to (and possibly prefer!) a fairly limited way of coding.

Code is text. Text is code. “visual coding” is putting a graphic design on top of text. You might argue that all programming languages are built on top of other programming languages, and that’s true, and I’m certainly not arguing everyone should learn assembly before they learn C. But I will argue that you should learn Python before you learn a VPL.

As an aside, I struggled to find a good metaphor for this article. The closest I got was this: It’s sort of like communicating with Emoji. You can definitely get some meanings across, but if you are going to be nuanced about it, or have something very specific you need to communicate, it’s definitely not going to be good enough. But if you never learned to spell, and only learned emoji, you would be at a serious communication disadvantage. This metaphor breaks down pretty quickly though.

**BTW, if it turns out you have (or know about) evidence that I am wrong about this basic premise, I’d love to hear about it. It fits with my understanding of human behavior, but I’m certainly no expert on human psychology!

Pyramid Cards

I’m a huge fan of Looney Pyramids. Mostly because I think it’s the most successful game system ever produced. And by successful, I mean that it’s probably had the most games made for it.

Now that I’ve said this, I might argue that Chess is the most successful, especially by that metric, since there are probably way more chess variants in existence than pyramid games, but of course Chess was never meant to be a game system. Then again, we can’t actually imagine what Chess was meant to be, since it’s not even remotely known who invented chess originally. Maybe they imagined a future in 2 or 3 thousand years when their game would be used to play literally hundreds of games.

Okay, anyway, so over 3 years ago, I had an idea, chatting with a friend**, and asked another friend*** to make it for me. The idea was a deck of cards that depicted Looney Pyramids on them. I imagined you could make a ton of games using them. Then I imagined some of those games. I don’t think I really playtested any of those games much until months later.

But the point is that I never got around to posting the PnP files for the deck of cards. So without further ado:

Here’s v1.0 of Pyramid Cards, PnP edition.

…better late than never, right?

** Special thanks to Nate Yourchuck.
*** Special thanks to August Brown for making the art for these.

More about me than you ever wanted to know…

So today an interview I did over at tech.mn went live. It’s part of a Nerdery-sponsored “know this nerd” series, so I’ll forgive them for using the term “nerd” instead of “geek” (which I generally prefer).

In case that isn’t enough biographical writing for you, I have also been meaning to post some of my responses to a game-related user-group application I filled out about a month ago. I’m not going to go into details about what the application was for, but let it suffice to say that I spent a lot of time on the application, but ultimately wasn’t accepted. So I feel the need to post a mashup of my answers here to salvage something from the experience.

The first question from the application, and the spark for most of what was written below, was as follows: Describe your work as a game developer. Why did you start developing and what do you hope to do as a developer in the future?

My first game designs were all variations on board games that I was already playing. I played a lot of chess as a kid, and have always been interested in chess variants. I re-worked this paragraph about six times, remembering earlier and earlier game designs, and just now realized that I can probably pinpoint my very first game variant, and it was actually published! One of my grade-school friends and I played a lot of an abstract strategy game called Terrace. Terrace had a newsletter called Terrace Times that you could write-in and subscribe to. The newsletter published variants written by their readers, and you guessed it, my friend and I wrote in with a few of ours. If I remember correctly, we wrote up about four or five designs, and they published two of them. [I’m 90% sure that I still have the issue in storage somewhere! TODO: dig those up and post them here!]

Later, when we were both just about done with high school, that same friend and I got really into playing an early first-person shooter called Marathon, and we made maps for it that other people actually downloaded over the internet. (This was about 1994 or so, so that meant over dialup!)

Fast forward to 2006, I had been working as a backend web programmer for two or three years, and I realized that making my own video game was actually an achievable goal! It took me over six months working nights and weekends, but my first video game was called Go Tetris. It was the first and last thing I ever wrote in Flash, and is still playable online at go-tetris.com.

I’ve always had a ton of game ideas, and when my wife bought me an iPhone as a wedding gift (giving it to me early so I could take it on our honeymoon!), I knew from the second I started playing games on it that I wanted to make some. The SDK was announced the following year, and even though I’d never worked in a compiled language before, I started writing a game for it right away. That game took about half the time to make that it took me to make Go Tetris, and it came out in 2008, was called Action Chess, and like Go Tetris, combined two of my favorite game genres, chess variants, and action puzzle games. It made a meager $1000 in the App Store, but that was the first $1000 I ever earned in game development. [EDIT: I just remembered this is not quite true. I earned about $6 in ad revenue after Go Tetris was linked-to from the US Go Association’s website for a week.] Learning iOS development was a good career move, and about two years ago I was able to quit my day job to do iOS game development “full time” (one of my first contracts as a freelancer was working on a little abstract strategy game for Tasty Minstrel Games called For the Win).

In March of this year I was privileged to speak at Game Developer Conference in San Francisco about “Usability Lessons from Mobile Board Game Conversions”.

I keep a design journal where I write down all my game ideas, and I usually add one every week or two. I’d say they run about 40% physical (board) games, and 60% video games. On rare occasions I get really enamored with one of my ideas, and have to start working on it right away. I’ve got several prototypes like this that are pretty near completion. It’s standard practice for me to “sit on” a game that I feel is pretty close to finished because I don’t have enough time to give it the polish I think it deserves. Anyway, the point is that I can’t imagine NOT working on games. I’d definitely be doing it even if it hadn’t worked out for me to turn that into a career.

Here are a list of games I’ve worked on that were published in some way: http://chesstris.com/about/#bibliography

I’ll fully admit that most of my games are unlikely to be commercially successful. At any given time, I’m probably working on two or three games at once, and juggling a freelance project to pay the bills. (Sometimes those are games!) My fondest hope is that one of my projects does give me the kind of return that I can stop the freelance work entirely, and continue to make the games I most want to play, without compromise or constraint.

Practice in NYC, day 3

The second FULL day of Practice was easily just as amazing as the first. I never really finished extolling the virtues of the first day, and I’m highly unlikely to go back and flush out my previous post with more details, so here’s a disclaimer that this post will be similarly unable to adequately describe how compelling and wonderful I found the conference experience. If you want to get a sense of it, probably easiest would be to scroll back through the NYC Game Center’s tumbler, where a lot of quotes and some screenshots were posted. I understand that eventually the talks themselves will be posted.

Michael Brough started the morning by talking about roguelikes. It was interesting, (if a bit un-focused), but I would much rather have heard him talk about his process. He only casually mentioned tools he’d created for art (and music?), and I absolutely wanted him to go into detail about those. The “slides” of his talk were mostly just screenshots from various roguelikes, none of which even remotely approach the beauty and glitch-glory of his own creations (even the screenshot of his game(s) didn’t adequately show off the graphics, I didn’t think, and video would have done a much better job). I am a huge admirer of his work, so if you are reading this and aren’t familiar, at least download Glitch Tank or the more recent 868-HACK from the app store. If you have a PC, a lot of his older games are also available for download from his website.

If the first day was influenced by Warren Specter’s talk “about” emergent gameplay versus scripted gameplay, the second day seemed (to me) “about” the second talk, which was about Nordic LARP, by Cecilia Dolk and Martin Ericsson, two of the organizers for a LARP based on Battlestar Galactica called Monitor Celestra. Their talk was highly entertaining and really compelling. (I saw a lot of tweets along the lines of “I’ve never wanted to larp before, but this makes me want to.”) They said a lot about crafting experience, and it was clear to me that the quality of their LARP was what made it extremely compelling. Similar to the generative gameplay concept, they argued that you cannot script a LARP, you merely script the rules and framework, and hope for the best. It sounds like Celestra was a huge success, and they are going to help bring the experience to the US in the next year or so. (And look for copy-cat LARPs that use similar concepts to allow us to “experience” many other fictional worlds in the future. I’ve got my fingers crossed for a disney Star Wars LARP, which there is some evidence to suggest might be in the works.)

The final talk of the day called back to LARPing with references to a dinner theater in which you play the prisoner’s dilemma in order to “move up” to the spots where you get better quality food.

One of the best aspects of the conference (that I have yet to really even mention) was hanging out with all the other incredible game designers in the generously allotted time between talks (left open intentionally for this purpose). My lunchtime discussion was decidedly influenced by the Celestra LARP talk, and we spent probably an hour discussing LARP, role playing, and the various other ways that games and life overlap.

After lunch there was a three-part discussion of user-testing, which diversely included someone working on League of Legends, someone who works on the Assassin’s Creed series at Ubisoft, and Naomi Clark, who interviewed dozens of indie developers for her portion. I won’t say much about this, except that it was great, and to link to Naomi Cleark’s slide deck, which is absolutely chalk-full of good advice for indies.

Finally, my talk of the day award, (IMO) and possibly the talk of the conference, goes to Robert Yang, who essentially did a cultural reading of the Half-Life source code. I couldn’t possibly do it justice, but among the many surprising and beautiful insights he shared were the fact that the door of the train in the opening sequence of the game is actually another train, as well as the observation that “smell” in Half-Life is actually a “sound”. (You’ll probably need to watch the talk to understand either of these statements.) Let it suffice to say that his talk was full of cultural and political references, and also imaginative insights like “Half-Life is the Myst of video games”. He called for more closer examinations of source code in the future, recommending the book 10 PRINT, and the works of Fabien Sanglard, who has done some writeups of the source of a lot of the id software releases. Yang is clearly a lover of originality and beauty in video games, and his passion for both was quite compellingly at the foreground of his talk.

In conclusion, I cannot overstate how compelling and positive I found the experience of going to Practice 2013. I will almost certainly try and go again next year, and I hope that many of the people I made contact with will become long-term relationships. The game development industry is quite fragmented and sometimes feels so huge that it’s a bit like sailing in the ocean. It takes a long time to get anywhere, and in the mean time you probably won’t see anyone on your journey. It’s nice to find a place like Practice, some kind of pirate’s cove or something, where a bunch of similar ships are gathered, at least for a little while.

Practice in NYC, day 2

The morning lineup just blew me away. The day started with Warren Spector, who basically made a long and somewhat impassioned argument for emergent systems in games. He argued against scripting specific gameplay paths in favor of giving your players a lot of freedom of choice. He repeatedly said he wasn’t making qualitative judgements, and that he (sometimes) enjoyed games that didn’t do this, but these apologies probably felt pretty flat for proponents of games without open-ended and emergent qualities. I was pretty active on twitter yesterday, and quoted him as saying “I’m not saying games without emergent gameplay are bad… I wouldn’t call them games really.” (This was an actual quote.) He somewhat cheekily finished the talk in a rush, saying “Games are good, simulated games are better.”

Someone on twitter called his speech preaching to the choir (early on), but other tweets later made it clear that was decidedly not what was happening. I think there is a small but very passionate group here who feel that games can (and should) exist on narrative alone, or rather that the quality of “experience” is all that matters. I think my tastes fall pretty clearly with Warren on this issue, but I can see the other argument too. I think there’s a place for those games, sure, but I wish more giant AAA titles were emergent, and I don’t think I’m particularly interested in making games without those properties myself.

Eric Zimmerman, who more or less moderated and announced all the speakers, called Warren out at the end of the talk, asking for those proponents who had been vocal on twitter to speak up in person and challenge this viewpoint. Barely anyone did, and nobody (in my opinion) made any real challenging or compelling arguments.

As an aside, “action puzzle” games decidedly qualify as emergent, while “static” puzzle games are basically the exact opposite. (Possibly explaining why I still haven’t put out Action Chess Puzzle, even though it’s pretty far along in development. Designing the puzzles themselves was so tedious for me that I ended up writing a puzzle generator to try and get out of the task entirely.

This theme, emergent versus scripted gameplay (even if this isn’t, as some argued, an either/or dichotomy), continued throughout the morning and the rest of the day, almost as if it’d been planned. It was definitely continued on Twitter, but each of the speakers had a Q&A at the end, and in those too, this argument popped up over and over again.

Robert Seater, who I’ve been hanging out a bit with (thorough sheer proximity and the discovery that we share quite a lot of favorite board games), expressed frustration this morning that this argument is not particularly applicable to board games, but I think Rob Daviau‘s brilliant talk later in the day was directly relevant. He talked about designing the game Risk Legacy, and in addition to being one of the more charismatic speakers, he was clearly a board game design veteran with a lot of great advice as well as anecdotal experiential wisdom to impart.

But I’m getting ahead of myself. I don’t have time to write about everything (and there is so much I wanted to talk about that I haven’t gotten to yet!!!). I skipped over the 3-part talk immediately following Warren Spector’s talk ostensibly about “strategy games”. Soren Johnson exceeded my expectations (having mentioned his stint at Zinga in his bio), and struck me as particularly smart. Keith Burgun‘s portion had a slow start, but eventually he got into some really nice design advice.

I’ve got to cut this short, because I’m watching Michael Brough talk about roguelikes, and that’s pretty distracting.

Practice in NYC, day 1

I am in NYC this weekend for the NYC Game Center’s Practice 2013 conference. It’s two days (and change) of game design talks, and I’m super psyched about it. Here’s a brief recap of day .5 today:

Yesterday – Tourism
I got into town yesterday, and got some tourism in with my friend KR and her husband Dan. KR and I took in an audio tour of the statue of Liberty, and got to climb to the top of the “pedestal” on which she stands, looking up her skirt. (She’s standing on a glass ceiling!) The guy who worked there gave us some interesting factual tidbits including the fact that the inside of the statue is black because of “our friend asbestos”, and as they remove that in the upcoming years, the inside of the statue will eventually turn as green as the outside. I am now a fount’ of Statue of Liberty knowledge (though I will likely soon forget it all) and it’s got a much more interesting history than I’d imagined previously.

Getting There
I slept in today, and eventually got to Greenwich Village around 1 pm, but the email said this afternoon’s event started at 3:30. (Playtesting and board games until 5:30!) So I hung out for a while at the nearby Monument park, avoiding the homeless-looking chess players (it’s a bit sad to me that they all appeared to be over the age of 50), and instead sitting on a bench people watching, listening to a pretty amazing saxophonist, and eavesdropping on one side of a tarot card reading by a man wearing a pointy silver hat and cape. Eventually I wandered into a coffee shop called Think Coffee, and lost myself in Oceanhorn for an hour or so. (Prognosis on Oceanhorn: MUST PLAY!!!) I looked up and it was almost 4, so I headed to the location.

Unfortunately I then figured out that the games and playtesting were over in Brooklyn, at the actual NYC Game Center. Fortunately that was only a 15 minute train ride away.

NYU Game Center
The Game Center space is pretty sweet, and there were lots of folks crammed into their “game library” playing a bunch of different games, many of them on machines that are clearly permanent, but several people were demo-ing their own wares on laptops or iPads. There was only one board game being played, a werewolf-like (why are these so popular now!?!), and when I sat down to maybe get in on the next game, it was explained to me that all the cards had different abilities, which you had to memorize, because the rules were in German, and there wasn’t that much time for the next game, so maybe they didn’t want any new players, thank-you-very-much. It was honestly just fine with me, although the game did appear to have more interesting mechanics than your average guess-who-is-who, but Eric Zimmerman, who was organizing, was very apologetic about it afterward, which was nice, and probably as a result, agreed to break out his new game Quantum, so I could at least get a look at it, even if we didn’t really have time to play a full game. (I am hoping to get a game in this weekend sometime. I think it looks very promising even if there is the occasional die roll.)

After that, a group of about 7 or 8 of us took the train together back to Manhattan.

Practice Begins
We got to the venue and got our badges with only ten or fifteen minutes of mingling before everyone filed into the auditorium for the first session.

Well, actually before the first session, this pretty amazing video played:


Then (after some preamble), the first session was by two female break dance event organizers (and themselves breakdancers) explaining some of the game mechanics of break dance competitions. I’m sure I was not the only person in the audience to be surprised that there are international competitions, or that a one-on-one competition is referred to as a cypher. (Was totally not aware of this meaning for the word, though apparently — at least according to wikipedia — it is also used with similar meaning in poetry slams.)

Following the talk, there was a party / reception featuring a demonstration of some of the breakdancing, as well as an open bar (so I could feel doubly slothful). There are some pictures on the NYU Game Center blog, where discerning viewers can probably find some entertainingly candid photos of me.

There were a bunch of games set up for multiplayer fun, and I particularly enjoyed a 2D top-down capture-the-flag game called Slash Dash.

I also had a really great talk with fellow (but former) Minnesotan Ben Johnson, of Babycastles. We both agree that the Twin Cities is rife with potential for game developers and art to collide and make spectacular games.

The Subway
I left with a small crowd of fellow attendees heading toward the subway, to be greeted by this street-performing duo. I think everyone else got on a train before this started though, and I may have been the only Practice attendee to witness how awesome it was:

GDC and App Stickers

This year’s GDC is already a blurry whirlwind memory of game design talks and discussion, hodgepodge game postmortems and analysis sessions, and a smear of industry faces and handshakes. GDC is a lot of things to a lot of people, and there is definitely far more happening in that week than any one person can realistically experience, but for me the main point was to soak up as much as possible in five days, mostly in regards to game postmortems, game design theory, and hearing about what’s happening on the “fringes” of game development. And with that goal in mind, it did not disappoint.

This year, at the suggestion of Eli over at TouchArcade, I had some 2″ app icon stickers printed for some of my apps, and aside from the initial premise of trading and collecting, I found the stickers to be a really excellent conversation starter and way to just launch immediately into who I am and what I do when meeting other people at GDC. I’ll admit to being one of those people who meets you and immediately scans your badge (see the previous post for my GDC badge), looking to see if I recognize your name or your company. It’s a great way to find some common ground for discussion, but I found with the stickers in my pocket, it was far easier to start a conversation, and I rarely had to resort to the “so what do you do?” mantra.

Here are the stickers I had printed:

And here are all the ones I collected:

You can see on the right there is a long smear of them. That’s because Dave Castelnuovo, creator of Pocket God, was a sponsor of the Touch Arcade party, and he walked around with a box of stickers, handing out rubber-banded stacks of 50 at a time. Here’s the full set from him:

So in total, I think that makes my sticker haul exactly 100 rounded-rect stickers, including the 50 pocket god ones. There were also a handful of differently shaped ones (only the Letter by Letter one is pictured, but I also got a cool triangular Galcon 2 sticker from Phil Hassey, and probably a dozen other ones too). Last year most of my GDC swag was t-shirts, and I got a few of those this year too, but the stickers were far more valuable, at least in terms of process of acquisition.

Last but not least, many thanks to Sticker Mule, who provided all these high-quality stickers at such a great discount!!!

iPhone Marketing Strategies

I’ve been brainstorming ways to overcome the visibility problem in the App store. When releasing an iPhone application, visibility in the app store is your biggest problem. It is very easy for an app to get “buried” in the store. There are literally hundreds of applications that are launched on a daily basis. How to get the potential customer to “discover” your application is the key question that must be answered after (or when considering) development for the iOS platform. It’s worth noting, however, that the vast majority of the applications released daily are really awful, so the sheer number alone should not be a deterrent. (Yet, those crap apps are often what pushes down the visibility threshold for the rest of us.)

I am not claiming that I came up with the following solutions and/or techniques, just documenting them here for my own brainstorming purposes.

Solution 1: Marketing a recognizable name. Having a title that people recognize is certainly key. In fact, that’s the basis for any marketing effort. Get more people to recognize your product, and they will be more likely to purchase it. If you start with an existing product, it’s possible you could leverage the community that is familiar with said product (for instance, fans of a board game, if that’s what you’re making). These fans would help generate “buzz” before the game’s release, as well as ensure you have some target market upon the game’s release. This also opens up an important secondary channel for application discovery, through traditional marketing to those existing fans, whether it’s in print advertising, or online targeted marketing. (Second to discovery in the app store itself, which is by far the most effective at selling your application.) Traditional board game marketing avenues, for instance, would include Board Game Geek, (of course) traditional board game review sites or blogs, (banner ads, or better yet, actually getting reviews). Even if only a fraction of your audience have iPhones, that visibility would not be wasted.

Solution 2: Getting reviews. Another important marketing strategy is to email and otherwise contact the large number of iPhone app review sites out there. (I personally maintain a spreadsheet with a list of over 100 iOS review sites.) The most important of these by far is Touch Arcade, who also maintain a fairly influential online forum with discussion threads on almost every game for the iPhone that is released. (I think this is probably the most well known and documented of my solutions, but I’m including it here for consistency. Even though I maintain that list, I still have never sent out the press releases required for this step for ActionChess. I keep saying I’ll do it after the next major update… and maybe I will!)

Solution 3: Visual affluence. Having a very “nice looking” game will have a couple of possible effects: 1) iPhone owners (as well as Apple computer owners in general) are probably biased toward excellent design. It is certainly how Apple have continued to differentiate themselves in the desktop market, and one of the key reasons oft cited for the iPhone’s runaway success. Simply put, Apple customers are more apt to purchase a game because of how pretty it looks. It’s obvious that Apple knows this, and that it contributes to the following secondary effect: 2) Apple is more likely to “feature” a good looking app than one with the same functionality that does not look as great. There is quite a bit of precedent for this, but essentially, if your app looks good enough, it is much more likely to make it onto the front pages of the App store. (See next solution.)

Solution 4: Getting featured by apple. This is the equivalent of getting your physical product into one of the major retailers. (Target or Wallmart, for example.) You will sell hundreds, or even thousands of copies per day. In fact, getting reviews onto as many review sites as possible is not so much to get customers aware of your product, although that certainly helps, but to get the folks at Apple more aware of your product, and thus, more likely to feature it.

There are probably a lot more solutions out there. Noel of Snappy Touch has had a lot of success with in-app purchases and setting the price of his app to free. He and some other indie developers do a lot of cross-promotion that has proven successful for them as well. (I’ve read someplace that having more than one app in the app store, and cross-promoting them has a very noticeable effect on sales. Wish I could remember where.) Anyway, this isn’t comprehensive. Feel free to post your suggestions in the comments here.