On Ebooks, the iPad and What Happens Next

February 18th, 2010 by Henry

I’ve been doing a lot of work recently with a client who’s working with publishers on bringing their content to the iPhone. Naturally, with the recent announcement of the iPad, we’ve been having a lot of discussions about the possibilities raised by the device and what its arrival means for its surrounding marketplace and ourselves as iOS developers. This post is an attempt to nail down some of the ideas that have fallen out of those discussions.

I haven’t been a full-time iPhone developer for a long time (who has?), and an ebook developer for even less. Before that, I worked for a (primarily) online agency with a long and distinguished (and continuing!) history of creating interactive experiences with a very strong focus on narrative and story. Up until today, I didn’t think there was much common ground between the two: after all, a book is a book and a game is a game, right? However, in trying to map out the differences between the two, I’m starting to think that all the stuff I’ve learned about presentation, narrative flow and appropriate modes of interaction might actually come in useful when trying to figure out where to go next with ebooks on a device that has many more capabilities than a simple ebook reader.

My background as an interactive developer means that I tend to want to make stuff that’s as immersive and interactive as possible, playing with the available technology. When I’m making ebooks, however, I’m trying to make something that’s as much like a real book as possible, down to spending days over perfecting a page-turn effect. How to reconcile the two? Is it by making ebooks that make heavy use of hypertext, breaking a book down into a non-linear, user-directed stream of fragments? Maybe with some whizzy graphical effects, flying from fragment to fragment (I’m pretty sure I remember some monstrosities along these lines spewing forth out of CD-ROMs back in the early-90s day)? Of course it isn’t. It does raise a few interesting questions though: once a book stops being a slab of dead tree and becomes a bitstream, how does it retain its “bookness”? How much can you meddle with the experience of reading a book before it stops being a book? Should we even be meddling at all? That pretty much all existing ebook readers have gone to great pains to emulate the physicality of real books, pages, page turns and all suggests that, at least for the moment, erring on the side of caution in this respect is very much the order of the day. I’d suggest, though, that perhaps this for similar reasons that (according to folklore, at least) early PCs were coloured the same beige as all other office equipment at the time: until people are used to a new, disruptive technology, dress it up like the familiar, old technology.

A big steer on the way I’ve been thinking about this is this wee snippet of a conversation on the always-excellent Shift Run Stop podcast with the author Chris Cleave. The episode can be downloaded here, but I’ll transcribe the relevant bit here for the impatient. You really should listen to the podcast though, it’s awesome.

~33:11
Cleave: “I don’t know how much the concept of authorship is relevant [in the environment of a game] where people can choose.”

(Cleave then goes on to describe the kind of game he’d like to play with his audience, collaboratively buidling a novel which is super-interesting in itself, but probably best discussed another time).

Once you place control of the flow of a narrative in the hands of a player, you hand over at least part of the authorship of that narrative to the player. This is not a bad thing: a well crafted interactive narrative is an immensely satisfying thing to play, arguably because of the role you’re taking in authoring the ongoing story. Valve are particularly good at this. However, it does mean that you can no longer claim that the resulting story has a single author, and here’s the crucial point: making a narrative interactive divides authorship duties between the original author and the player, fundamentally changing the way that it is experienced.

If we accept, then, that the essential defining characteristic of a book (e or otherwise) is the experience of reading a linear, authored text in the form into which it was painstakingly crafted by the original author, where does that leave us with expanding the ebook?

Firstly, it strikes me that at the very least, the capabilities of an iOS (or similar) device have great potential in being able to define the context in which that text is read. There are examples of books that have shipped or released in tandem with CDs. By listening to a custom soundtrack while you read the book, you’re getting a more immersive experience than reading the book alone, although that’s still the core act. Extra meaning and texture has extended the basic reading experience in a way that doesn’t interfere with the structure of the text and the authors intended meaning: preserving “bookness”.

Extending this train of thought, GPS data could be used to make certain portions of a text only visible in a specific spot, or kinds of spot (think: parks, bars, the top of a hill etc…) and I’m sure there’s many, many other ways a smart device can be used to enhance the context in which an ebook is read. This feels like a really exciting area to me.

Secondly, although I don’t really enjoy reading ebooks on an iPhone (more a personal foible than a fundamental flaw in the technology), I have been really enjoying playing through old (and not so old) Z-machine games in Frotz. In a nutshell, these are text-based adventures that you play by typing commands like “walk north”, “take lamp”, “kill troll” etc. Something about them feels ‘right’ on the iPhone in a way that ebook readers don’t; while you’re still reading a lot of (in a lot of cases, very well-written) text, the read / think / interact / read / … rhythm feels more suited to an interactive device, rather than the artificial simulation of dead-tree book rhythm you get with an ebook reader (why are we still simulating pages on a device whose form factor is nothing at all like a page in a book?). With a bit of thought to adapting the flow of text to better suit the nature of the platform on which it’s being delivered, I think some truly satisfying ebooks can be produced which stand up as interesting works in their own right, rather than clumsy copies of traditional books. Six To Start and Penguin Books did some groundbreaking work in this area on the We Tell Stories project in 2008.


Although I’m leaving it a bit late to post this, I’ll be at The Story tomorrow if anyone would like to discuss this with me face to face. Otherwise, I’d be really interested to see what people who actually know what they’re talking about have to say on this subject. Comments are open, and I can be found on Twitter: @prehensile.

Top 10 Albums of 2009

December 27th, 2009 by Henry

Not to be left off the bandwagon. In no particular order:

Jon Hopkins – Insides
Richard Hawley – Truelove’s Gutter
British Sea Power – Man of Aran
Health – Get Color
Grammatics – Grammatics
Fuck Buttons – Tarot Sport
Moderat – Moderat
Tim Exile – Listening Tree
Mothertrucker – Dark Transmi55ions
Hudson Mohawke – Polyfolk Dance

The Tyranny of Brown

September 30th, 2009 by Henry

Things that filter the information available to me based on similarity / algorithmic / social closeness to everything else I like are dull.

Back in the day, all the noise was about how everyone would have their own personalised media stream, tailored specifically to the needs and tastes of the individual. Now it’s here, it’s clear that we’ve created devices for keeping us in the same old worn-out grooves, selective exposure raised to the nth degree.

Technology advances. We replaced our newspapers with RSS readers (already fairly effective partisan-mills) and then Twitter, an echo-chamber, mostly a closed loop for people with similar interests to share their similarity, create bubbles to inhabit. Things that allow similarity to glom together breed mediocrity, an average of everything: brown.

I want to be surprised. I want recommendation engines that recommend things from the very edges of my extended network, and outside of it. I don’t want 63% of people who bought this also bought this, I want to see the 1%, curve balls. Last.fm is good for this: I can be listening to “artists similar to Aphex Twin” and get the occasional bit of Bach, or ELO, or Motown because someone, somewhere in the world creates those overlaps on the Venn diagram.

Let’s turn the algorithms inside-out. Let’s get them to throw out the brown bits in the middle, and find the spiky, technicolour bits around the edge. Let’s create tools for surprising ourselves.

In Detail: Tricked Out Trucks

July 23rd, 2009 by Henry

In early 2008, Cadbury’s were launching a new TV advert and wanted a new online presence for their “Glass and a Half Full Productions” brand. This site would provide information about Cadbury’s and the adverts, and also house some fun interactive bits & bobs inspired by these adverts.

We pitched for and won two interactive activities. The first of these activities, and the one which I’ll talk about in this post was named ‘Tricked Out Trucks’. The brief was simple enough: we were to create a tool which would allow visitors to the site to customise an airport truck in 3D. The creator of the best design (as picked by a panel of luminaries) would win that truck for real, all pimped out and delivered to their door. Apparently, the client had come to this concept without ever having seen Den Ivanov & PARK Studio’s Brahma Bus in 2007, and were very surprised when we told them about it :)

We ended up differing from PARK Studio’s (pretty seminal) app in two ways. First, rather than allow freehand drawing, we assumed that most casual visitors to the site either wouldn’t have the artistic skills or inclination to draw an elaborate design, so we provided preset patterns which the user could customise to their liking and decals which they could transform and place freely. Second, we wanted to allow users to make modifications to the shape of the truck by adding body mods: spoilers, wheels and wing mirrors.

Read the rest of this entry »

In detail: Mathmos (Part II)

July 15th, 2009 by Henry

mathmos-small-3

Last summer, Mathmos asked us if we fancied doing something for the 45th birthday of their iconic Astro Lamp. We felt that a natural fit for this would be a screen saver that simulated the lava lamp.

From a coder’s perspective, this project had two interesting problems to solve. Firstly, we had to consider the physics at work inside a lava lamp in order to create a realistic simulation. Secondly, once you’ve figured out where your blobs are, their sizes and how they’re moving, you need to draw them in a satisfyingly blobby way.

This second post will cover how I went about drawing those blobs. You can read Part I here.
Read the rest of this entry »

In detail: Mathmos (Part I)

July 15th, 2009 by Henry

mathmos-small-1

Last summer, Mathmos asked us if we fancied doing something for the 45th birthday of their iconic Astro Lamp. We felt that a natural fit for this would be a screen saver that simulated the lava lamp.

From a coder’s perspective, this project had two interesting problems to solve. Firstly, we had to consider the physics at work inside a lava lamp in order to create a realistic simulation. Secondly, once you’ve figured out where your blobs are, their sizes and how they’re moving, you need to draw them in a satisfyingly blobby way.

In this first post, I’m going to talk about the physical model we created to simulate the motion of blobs in a lava lamp. You can read Part II here.
Read the rest of this entry »

Adding mx.* libraries to FDT

May 27th, 2009 by Henry

For my most recent AS3 project, I’ve settled on developing in Eclipse/FDT and have set up the Flex compiler for building. In general, this works great, but every so often you run across a snag, as the FDT/Flex setup has its quirks.

Today, I added a SWF asset to my main class, like so:

[Embed(source="../../assets/frame.swf")]
[Bindable]
public var Frame:Class;

but upon compiling, mxmlc threw the following error:

Error: The definition of base class MovieClipLoaderAsset was not found.

It would appear that using the [Embed] metatag requires the presence of some classes you’re not going to get by default. 

A quick Spotlight search later revealed MovieClipLoaderAsset.as in the following location:
{Flex SDK}/frameworks/projects/framework/src/mx/core

Adding the framework source folder:
{Flex SDK}/frameworks/projects/framework/src to my project as a new linked library solved the problem and the compiler was happy again.

I leave this note here in the hope that it proves useful to someone else one day ;)

Gmail Last.fm Signature Greasemonkey script released

May 20th, 2008 by Henry

Available from userscripts.org.

This has been knocking around in my head for a while, but I’ve finally got around to doing it: it’s a Greasemonkey script that fetches recently played information from last.fm, injects it into a sig file containing certain tokens (%artist% and %track% for now, example here) and inserts the whole lot as a signature when you start composing a new Gmail message.

It’s pretty classic scratch-itch-ware, in that it does something that I wanted done in a way fairly specific to my needs – there’s no way to input your sigs directly and store on the local machine, for instance, because I wanted it to work across all the computers I use regularly and therefore use a remote sig. Likewise, because I don’t use Gmail’s rich formatting, I haven’t tested it in that context, though I doubt it’ll work there.

I’m setting it loose in the wild in the hope that it’ll prove useful to people other than me, and the missing functionality can get added by people who need it!

First Greasemonkey script, and in fact the first relatively complex Javascript I’ve done for a while. I’m pretty happy with the way it turned out, and learnt a fair bit about JS while doing it. That said, I’m sure that there’s a lot wrong with it to the experienced eye; it is a bit of a collection of hacks ;)

Based on Gmail: Random Signature Remote 1.0 by Stuart Langridge and Gmail HTML Signatures 1.07 by Jerome Dane.

Launchball

October 8th, 2007 by Henry

So it’s been a while since I posted anything here – largely, my interest has been directed elsewhere. However, I’ve decided to keep this blog for professional stuff, and it’s with that in mind that I’m posting today.

I’ve just finished my latest project at Preloaded, a physics-based game in the mould of classics like The Incredible Machine: challenge the player to build a Heath Robinson contraption to get from Point A to Point B. The project was for the Science Museum to support the relaunch of their Launchpad exhibition, which made it an interesting challenge: we had to reflect the hands-on experience of visitors to the gallery, keep the physics accurate enough that we wouldn’t be giving out any bad, counter-educational messages and keep the thing fun enough to keep people entertained while they’re absorbing the science.

One of the first big decisions we made was to use a third party physics (or, more specifically, dynamics) engine. The reasoning here was that I could either have spent most of the project time busting my heed over the finer points of vector integration and rigid body dynamics, or we could use one of the fine open source engines out there and I could spend the time making the damn thing fun instead. Practicalities aside, I’m very much into the idea of pushing an open source agenda at Preloaded anyway; I think we could make a really good contribution to the community and get a lot back if we managed it properly. Flade was the obvious choice (at least, while we’re still an AS2 house), and Alec Cove has my undying gratitude for making such a great engine and being cool with our using it.

The next decision, then, was what blocks we should include in the game. Bearing in mind the point about realism, this ruled out a lot of stuff like transporter beams, cannon, lasers etc. The eventual set we ended up with were the result of a lot of back-and-forth with the Science Museum staff, based on discussions with their content team and, in some part, on National Curriculum Key Stages 3 & 4. I then spent a month implementing the decisions we’d made, tweaking the physics like a madman all along the way. This was precisely the point all that stuff I’d ever been taught about both science and object-oriented programming came in very handy indeed, and let to some interesting points where I’d start having thoughts like “this magnet will always be affecting the ball in some way. Does that mean every magnet in the universe affects every metal thing in some minute way?” and have to step away from the computer and have a nice cup of tea and a little rest.

Outside of the game engine itself, we had a lot to think about in terms of user experience. As the game’s aimed (mainly) at children, we had to make sure that the UI was clear and easy to use, which we refined in collaboration with Science Museum staff over many iterations. Additionally, we decided fairly early on that an important part of the game would involve giving players the chance to build and share their own levels. This meant we were going to need a pretty involved backend, handling user accounts, sending out share emails and, most importantly, managing both in-game and created levels. Stephen Pope at Eduserv did an amazing job building a webservice to provide all the functionality we needed and fielding increasingly frenzied IM conversations during crunch points. The client/server interactions we’re doing with the game could swallow a blog post by themselves (and are the reason we couldn’t host it elsewhere, Digg trolls ;) ), but I’ll save that for a rainy day…

I didn’t have much involvement with the level creation process, outside of making the sandbox editor usable enough to make it possible, but three evil geniuses on the Preloaded staff came together and did a brilliant job of it – seeing stuff done with the engine I’d built that I had no idea was possible was a big grin moment. Jon (the last of the three geniuses in that list) was the design ninja behind the whole thing and also possesses an admirably geeky brain which frequently made stuff clear that I couldn’t see for looking. Frankie Roberto, one of the team at the Science Museum did some good work too, providing some of the more surreal levels and helping us out with the CMS.

I’m incredibly proud of the end result, even though at times it made me feel like quitting Actionscript entirely, buying a lathe and moving to the country to make furniture in a barn. It’s certainly the most ambitious and fun thing I’ve done to date, and early indications would seem to show that the internet digs it too: when an early version got posted to Digg, it generated enough traffic to kill the Science Museum’s server (good news for us, bad news for the poor guys at Eduserv who were probably quite surprised when one of their boxen started to do its best impersonation of an Aga).

Big fat thankyous to the Science Museum for being supportive and helpful clients, especially Frankie and Daniel Evans, and dirty great manhugs also to Barnaby Sheeran, Simon Oliver and Alias Cummins, Brothers of the Curly Bracket who all helped me out of sticky points of one sort or another. Respectful nods to Phil and Rob, my bosses at Preloaded who kept the whole thing shiny, and Jason and Sarah who kept the project running, despite my increasing crankiness.

So what’s next? Being at an agency means I’m kind of at the mercy of the work that comes through the door, but game wise, I’ve been really inspired recently by tangible interfaces, especially the reACTivision; it’d be awesome to build something which had a bit of a physical presence. A nice, well crafted platformer with a really neat core mechanic would be nice, too. The idea of trying to develop something for a console also appeals: the Wii/Flash stuff is starting to look enticing, as are the possibilities made available by the DS homebrew scene, and XNA Game Studio hasn’t escaped my beady eye either: it’s starting to look like an interesting little ecosystem is starting to breathe on Xbox Live Arcade.

But first, a week with my criminally neglected, saintlikely-patienced girlfriend in the sun, as far away from computers as possible ;)

Mindblowing interview with Rudy Rucker

March 7th, 2007 by Henry

I’m a big fan of the MondoGlobo podcasts, and there’s been a cracking two-part interview with Rudy Rucker recently in the Neofiles strand. The first time that I’ve had to do the podcast equivalent of skipping back a few pages in order to listen again to a particularly interesting bit. Top stuff!

Part One

Part Two