a frontend designer

Inkling and the Modern Book

It was in the Fall of 2010 when I received an interesting email. It was from a recruiter looking to fill front-end developer positions for an early stage startup that was building interactive textbooks for the iPad. I had never heard of the company and at the time what I’d seen of tablet publishing was uninspired.

When I got home that evening I downloaded the Inkling app onto my girlfriend’s iPad and took a look at the pre-installed demo book, The Elements of Style. I was immediately impressed. Craig Mod, writing for the popular A List Apart blog in early 2011, summed up my initial reactions well (albeit more articulately) in his article A Simpler Page:

Inkling … is one such example of a reading application that straddles the new and old—chunking content in an intuitively predictable and consistent manner within and across chapters…

The application had clearly been polished with a strong sense of design and a well-thought-out set of user interactions. It balanced the need to convey traditional textbook content with a new yet natural navigation and page-less pages. With such an elegant solution to the digital format and a clear vision for the product how could I not be interested?

On the left, a working prototype of Fetch showing the results of a global search for the figure element, on the right, the final implementation into Habitat with additional options to searching by text or regular expressions.

The Tech Behind the Inkling App

One of my first questions was: “How does it work?” As beautiful as it is, are the books just big Cocoa apps that benefit only iPad owners? Turns out the content is created and maintained using open formats, HTML and XML, that interact with other media like audio, video, and 3D. We treat books like software: multiple collaborators adding to the code base, finding and fixing “bugs” across different content types, and utilizing all manner of automated proofing tools to quickly identify issues. As Rob Cromwell explains in The Art of Content Engineering this architecture opens the door to other platforms:

In software engineering, the build is usually the output of a compiler. A compiler generates an executable binary from the source code, and targets a specific platform like Mac OS X, Linux or your iPad. The compiler and target … enable the same source code to run across different platforms. Inkling content has been structured in the same way.

To tie the native application and HTML/XML together we use a Javascript layer. With it we’re able to change states and provide feedback to the user while passing along data about their highlights and notes to other parts of the system. These seamless effects often feel “native” yet operate in way that can still perform outside the context of the native app.

In the first image is an example of a Test Yourself enhancement. Tapping "Show Labels" will reveal the information so you can know what you’re supposed to know. That or you can learn about beer. Whichever you prefer..

Working at Inkling

Aside from the great benefits, easily the best aspect of Inkling is getting to work a with group really smart people. As a startup decisions have to be made quickly and technical plans executed at breakneck speeds. Out of this environment I’m continually amazed by what’s produced, and the cooperation between different groups with members often working outside their comfort zone is, at least for me, unprecedented.

A quick example: A colleague of mine in a non-technical role, who has no formal computer science background, recently wrote a long list of complicated regular expressions to help her complete some tasks. Long regular expressions, as anyone who’s ever battled with them will know, are rarely trivial to write. Because of her work we’re integrating it into other tools that, ultimately, will benefit the whole team.