For day 24 of the Perl 6 Advent Calendar: Larry Wall explains Perl 6 culture. It’s much more fun to build something and help solve a problem than to put people down. Words to live by the other 364.2425 days of the year, too.
Magical
If you haven’t seen Word Lens in action within the past few days, I’m not sure exactly what to do with you. I’d like to take the opportunity and show how Word Lens illustrates a point.
Right now, every application in the world is struggling to reach the right corner of a four-quadrant chart, with the two axes “clarity of user experience” and “quality of implementation”. Word Lens is just the right app to show off nearly every subtlety of this chart.
First of all, there are a ton of translation applications. Besides the phone being an ideal device for the traveler, there are many translation applications already and are easy to port. Interface-wise, they range from the plainest of plain through the painstakingly crafted. The plainest of plain aren’t necessarily the bottom of this scale. Many of them have tried to do their own thing in a half-assed way, or simply run off the cliff completely with weird control choices or badly contrasting colors. The interesting thing is that even the interfaces that have been sweated over for hundreds of hours and refined over months and years aren’t the top of the heap.
Right above the best of the traditional interfaces lie the best examples of the natural interfaces. The best interface is the one that you don’t even think of as an interface, the one that you understand from the start and effortlessly get around. There is a chasm as wide as between command line interfaces and traditional GUIs when you can choose to point a camera towards a sign and see it translated on screen as if it was printed that way, instead of needing to mentally copy the text and run the translation yourself. The last few days are a brilliant testimony to the idea that everyone gets this on a fundamental level, whether or not they have actually used a computer, held a phone or cared about technology before.
Word Lens isn’t just cool because it does so much with the technology it is able to apply; it’s cool because it seems like there’s no technology, because it seems like the device is finally not only adapting itself to you, but adapting your surroundings to you. For this reason alone, it is worthy of our applause. (Additionally, some other people are worthy of our scorn because of their lack of planning; Word Lens would fit perfectly on any Top 100 list of 2010.)
“Natural interfaces” can go wrong, too! Horrendously wrong. Most, if not all other, “augmented reality” applications fall into this bucket. They feel like technology for technology’s sake. They call attention to, and amplify, technology’s part in a problem that needs solving, but they scratch the surface, add more UI and don’t actually solve the problem. If something is more than two blocks away, you’re probably better helped by showing a map and indicating the direction than by overlaying pins where their respective distance is poorly distinguished. You take to a device because you can’t see that many blocks away, and the camera can’t solve that problem for you.
So not every natural interface is actually natural. And the natural interface can’t solve every problem. At some point, you probably need to go to abstraction to deal with the problem at hand. A badly done natural interface will probably crash and burn far worse than a mediocre GUI would. But where it works, it really, really works.
The second axis on our chart is quality of implementation, and sadly, Word Lens falls short. It has trouble stably settling on which words to interpret the image as and will happily toggle back and forth. It has trouble finding the letters at all, for that matter. It does seem to get the (laudable and necessary) mechanism to detect the background pattern and text color right when all that works, but additionally, apparently the translation isn’t that good. And the work it needs to do is slow, so everything is pretty choppy.
I can accept that. It doesn’t make a perfect — or maybe not even an acceptable, I don’t know — translator, but it’s gotten the underlying model right. It’s far easier, with a world wowed, to knuckle down and start fixing the shortcomings. Within ten years, maybe actually making the online translation on the fly or having some embedded technology really work out all the edge cases would be realistic.
On the other hand, the many teams with working translators will wake up and smell the coffee. They will trot out reasonable defenses like decent translations, but they’ll start working on something like this too, and it’ll take them years, maybe months depending on their existing budget and R&D. Once Word Lens starts working convincingly, it’s going to be something people want in every translator. It may not be the perfect mode to deal with every translation, but it’s brilliant — why not have it?
To make a truly great application, you will need to have a great user experience and a high-quality implementation. You can do without either if your kind of application just isn’t that good generally, and you can do very well for yourself by having just one of them. But if you’re not figuring out how to do both convincingly, and even worse, aren’t figuring out what people really want to do instead of using your application on its terms, prepare to have your lunch eaten at some point.
Demand
A funny thing about developing software is demand.
This is essentially about feature requests, wishes for new functionality, that sort of thing. But I’m using the term demand because it’s not unconnected to the business concept of supply and demand. Sometimes people overall overwhelmingly demand something, and all applications that are able to start to grow that sort of functionality. Or sometimes the people who really like your applications and write in to tell you about it start to demand the new feature.
Let me tell you a story. It’s about one of my very favorite things; the game series Worms by Team17. Worms is a 2D strategy turn-by-turn war game, with worms runting around on a landscape and firing weapons of varying sanity, effectiveness and plausibility. This series hit its stride in the mid-to-late 1990′s and continues to this day. Some of you, if you’ve never heard of Worms, will say “that sounds fun”.
A large group of people, though, will say “now hold on”. “2D”, they will continue, “is some old stuff. Why not use 3D? [As in using polygons in a non-2D world, not as in requiring 3D-glasses.] Real wars are in 3D, real life is in 3D, everyone else is making 3D games; why not make 3D Worms?” It turns out that a lot of people said this for many years.
Team17 repeatedly educated the public on some of the difficulties with making a 3D Worms. Aiming is hard enough in 2D, and you can’t judge distance “into” the screen. Most war games depend on aiming at a certain point and firing; Worms’ basic weapons are the bazooka and the grenade, both of which require an aim and a degree of power/thrust. Furthermore, there were problems with the sort of destructible terrain that Worms traditionally offered, with “Tetris gravity” where if you blew up the lower part of a landmass, it would be suspended in midair. The basic message was this: don’t think that making a 3D Worms is trivial or that everything translates well or at all into 3D.
Then, a few years into the still-fresh century, Team17 solved the problem of technically and efficiently implementing destructible terrain in a 3D environment. I imagine that this was followed with some internal nerve-wracking discussions, but eventually, they decided to churn out Worms 3D. As it turns out, Worms 3D went sour fast.
Nearly everything else that Team17 had warned against came to pass, including the inability to aim in a controlled fashion. It turned into a first-person-perspective game and strongly limited the visible terrain to a small fraction of the map. Regardless of where you were in 2D Worms, you could see the entire map, if not everything in one screenful. There was even a range of consequential, but unintended fallout.
A whole mythology had been successfully cultivated around Worms and extended by fans based on playing styles, and one of the first choices were to choose between Lightside, which stays out in the terrain and makes skillful shots, and Darkside, which burrows into the terrain and sneaks out (if necessary) to chip away health. In 3D, burrowing into terrain blocked off your field of vision. It became a lot harder to play Darkside.
The 2D versions of Worms featured a utility for moving around called the Ninja Rope, which is easier to demonstrate than to describe, and which was a very efficient and useful way of getting around the terrain. Ninja Rope was essentially completely useless in 3D, since it was so hard to control from a first-person perspective. This made Lightside harder, too.
Furthermore, there were many sites around solely to distribute custom terrains for the 2D Worms games. This turned impossible for Worms 3D, since levels were now made of polygons instead of pixels, and Team17 didn’t release their level editor, which involved more than importing a bitmap.
I could go on, but you get the idea. Team17 tried to fix the 3D concept but then went back to 2D games, where they are currently making a dime cashing in on the series renaissance. (It helps that few computers are around to run the old games.)
Was Team17 wrong in listening to demand? I’m arguing no. They were wrong in releasing what they must have known to be a bad effort. I don’t think Worms 3D turned a profit, maybe not after counting the money and definitely not after counting the bad press. But this is one bad idea.
There were other ideas as well.
One of them was around making Worms real-time instead of turn-based. This was never attempted, maybe because nearly everyone could more easily imagine being interrupted by uzi fire when charging up their bazooka blast. It is hard to say if it’s a worse idea than 3D Worms, but it is a more obviously bad idea. Liero is probably as close as you can get, but it’s very different from Worms.
Another idea constantly tossed around was to affix hats and clothing on the worms. For the longest time, I thought this was a ridiculous gimmick and useless, or at least something that would take time to implement and not actually add something to the gameplay. They implemented this in the few most recent Worms games, though, and having played them, I can tell that having worms with different skin color and hats dramatically helps in quickly identifying which team the worm you’ve got in your sights with seconds to spare is from, and whether to shoot it or not.
The reason I am reminded of all of this, and of the wider theme of demand, is because of the apparently intense demand for Coda on iPad.
Coda on iPad, on the whole, is an idea with the deck stacked against it. My position on the “only for consumption” iPad stereotype doesn’t actually matter if you look at the specifics in its way.
Coda deals heavily with files on your local storage. The solutions so far for dealing with filesystem-like trees on iOS are clunky and require extra applications or cloud services. Coda on Mac OS X can always defer anything it doesn’t feel like dealing with to something like the Finder. There’s nothing like the Finder on iOS. Coda has to implement all of it smoothly, including simple and convenient file transfer to another computer. (I know about its Transmit prowess; let’s make a logical leap and imagine that FTP-related file transfer is not “simple and convenient” to arbitrary computers.)
Coda involves sitting in a text editor, working with markup, stylesheets or code. Not only is zipping through words and editing infinitely faster with arrow keys, you also require regular use of normally arcane punctuation.
The iPad has more punctuation on the front of its keyboard, but you still have to run off to the digits keyboard for angle brackets, parenthesis, the equals sign, colon and semicolon, not to mention single and double quotes, slashes, the # sign and most operators. Maybe you could make the argument that this would make the stylesheet editor even more warranted on iPad than on Mac OS X, but what about everything else? Try cussing loudly and waiting between three and ten seconds every time you need one of those, and you will have simulated this experience.
Yes, Panic could attempt a custom keyboard, and force a custom variant of US QWERTY on every one of its users (or even spend time replicating this for the numerous keyboard layouts in iOS). Breaking the habit from the rest of the OS — and if you don’t use US QWERTY, from everywhere else — doesn’t seem like a good place to start.
Coda involves actually programming. On Mac OS X, you usually test locally if you have the ability, and you start whatever server or technology you’re comfortable with in the background. iPad Coda can’t run PHP, Ruby, Python or node in the background, so you’ll have to set those up somewhere else, and also have those files available to that server.
Coda involves testing the web sites. I have a penchant for opening a new split with the preview feature, but I also have a 1440×900 resolution. Try the 1024×768 resolution and it’s not so funny anymore, especially with the keyboard covering close to half the screen in landscape mode. On Mac OS X, you can open up all the necessary non-newest-installed-WebKit browsers in the background, including, through virtualization or screen sharing, Windows and Linux browsers. (There are good screen sharing iOS apps, but assuming you edit locally on your iPad, how are they going to reach your files again?) I haven’t even gotten to the part where you can’t use the Web Inspector, because it takes up too much space, beyond not actually being implemented in iOS WebKit.
There’s also some stuff that Coda doesn’t involve. Usually, this comes down to creating or editing images. Where are you going to do that? Never mind a decently featured version of Photoshop, there’s no Acorn, Opacity or Pixelmator for iOS. Even with multi-tasking now possible, you can’t switch to an app that doesn’t exist.
More than any of those reasons, or maybe an amalgam of them, is the reason that Coda is an app you live in. Coda for iPad would scarcely be an app worth living in, or paying the bucks for. Maybe it’ll do a few things well enough. I don’t think that the people who clamor for it actually want what’s possible to do today. They’d just like to be able to use the iPad for Coda, without considering the practical consequences.
Raw demand is a computationally cheap and good indication of what people want, but it takes extensive editing, thinking and experimenting to go from that to what’s actually right. Sometimes, you can’t even trust your own intuition to find out if something is awful or awesome. Where most software projects fail is in taking this in account.
(Someone’s probably going to ask why this wasn’t posted on stmts. stmts is about hammering nails; this post was about figuring out what to build.)
Screw the Yahooch!
So basically, apparently, Delicious is regarded as having a future of comparable luminance to, say, Altavista. And apparently, Yahoo! CEO Carol Bartz considers their strong suit to be “email, the homepage, search, mobile, advertising, content and more”, which either means that she is ignorant to Flickr — one of the best web services in recorded history — which would be horrific, or that she considers photos “content”, which makes me very sad.
Look, you bozos. You need to stop thinking about advertising as a reason to run your company. You need to stop imagining that you’ve provided something of value to the search industry in the past few years. You need to stop considering “mobile” an ancillary outgrowth and instead make every team develop useful mobile versions. You need to ask yourself what people genuinely like about you, put all your energy behind those things, let the people who have always run them continue to run them and convert everything else in your company to the supporting functions that they are supposed to be.
Selling advertising to services (including the search engine) no one uses and to “content” no one views isn’t an achievement to be proud of. It’s just tragic.