Off the hooks: user-centered development in a mobile-first world

June 11, 2012 | 1 comment

The following post contains my notes for a talk I gave at Over the Air 2012 at Bletchley Park on June 2nd, 2012. They build on my notes for a previous talk, Building the user-centered web.

Desktop isn’t enough.

For the last few years, I’ve been working on latakoo, a service that lets you share video fast using any Internet connection. Video is, traditionally, a pain to upload, due to very large file sizes, combined with the limited upload bandwidth inherent to most commercial connections. We solve this by compressing the video first, using a very simple interface: just drag, drop, click, and your video is uploading, and shared in a private, enterprise environment. There’s no need for any substantial training or technical video knowledge. It just works.

We support a lot of different video formats, and the resulting file is often 1-4% of its original size, while remaining very high quality. A lot of TV stations use latakoo – the Science Channel used us to send footage of the SpaceX launch back to base – but we also have integrations with Facebook, YouTube, Box with more to come. latakoo’s a useful service, and a great team that I’m proud to be part of.

However, an app that runs on a desktop or laptop computer isn’t enough. Sure, the latakoo app works great in those environments. But a lot of people began asking us if we could make it work on mobile – including those TV stations. TV news stations are arming their reporters with iPhones and sending them out in the field instead of laptops.

Video compression is no problem for my i7 MacBook Pro – but can it work on my handset?

Of course it can.

latakoo iPhone appMobile devices are this century’s personal computer.

I have latakoo apps on my Samsung Galaxy S2 (in beta, coming soon), my iPod and my iPad. All of them are very comfortable compressing video – because all of them are relatively powerful mini computers.

My Samsung Galaxy S2 has a declared clock speed of 1.2GHz and has 1GB of RAM; the Galaxy S3 has four cores at 1.4GHz, and 2GB of RAM. It wasn’t so long ago that laptops were being sold with those specs, and it’s no accident that mobile growth is outstripping the rest of the computer industry:

Oh, and here’s one more quote:

“We do not currently directly generate any meaningful revenue from the use of [our] mobile products, and our ability to do so successfully is unproven.”

That’s from Facebook’s IPO filing. Over 50% of Facebook users access the service through a mobile app or site – yet, until the last couple of weeks, they had no way of obtaining revenue from these accesses. (Their promoted posts feature is transparently a way of obtaining revenue in a way that applies to mobile users.)

As we know from Building the user-centered web, the web has transformed from a series of context-free, stateless pages to interlinked applications that have social functionality at their core.

Curiously, despite this social focus, each application is its own atomic destination with its own URL, and is by default only aware of data created within it. That means we need to register for each application we want to use, fragmenting our accounts over potentially hundreds of products and company data centers, and that the documents, files and data we create within them can’t easily be shared with other applications. Currently, each web application is like a silo: they exist on their own, and if they interoperate at all, it’s through specific links between applications that have to be individually developed.

Mobile-first social apps exist, and are beautiful – but are being designed to this silo model. Path, Instagram, Viddy and Socialcam are four examples of gorgeous apps that are designed to trap usage in their own databases, and often spam users into joining. After all, the number of users in your database, and growth thereof, is the predominant measure of value in Silicon Valley. Instagram certainly wasn’t worth $1 billion to Facebook for their revenue.

SilosSilos stifle collaboration.

Collaborative spaces in social web applications are like documents: they’re one of the currencies of the social web. Just as I need to be able to use my word processor of choice to edit a document, I need to be able to use my social tool of choice to collaborate with others – and if I want to share a collaborative document with someone, I should be able to do so regardless of the social service they happen to use. Where I choose to host my identity should not dictate the kinds of content I can create. Not to mention that some companies simply can’t use existing social platforms, for ethical and/or legal reasons. The UK’s Data Protection Act, for example, precludes the use of Facebook in schools.

Right now, we have to register with each application we want to use. What if we required each application we used to register with us, in digital identities under our own control? What if, using these identities, anyone could connect to anyone else, and anyone could store their data anywhere as long as the storage provider followed the same broad standards?

The web would become truly social.

Your ability to collaborate is not subject to a single company’s success: social functionality and application infrastructure are inherent in the network itself. The possibilities for collaboration are not subject to technology beyond common open standards, which can evolve. A wider range of application possibilities is ensured, because web applications gain the ability to interoperate in a general way. Finally, privacy and user control are established by allowing a person to determine which application has access to which data.

Furthermore, when you remove the silo, private or short-term collaborative spaces become possible:

  • Transience: there’s no need for the community to exist for longer than it has to.
  • Simplicity: there’s no effort involved. Once you’re done with a community, you simply close the communication.
  • Privacy: it’s very hard to share activity with the wrong people.
  • Decentralization: the community is physically hosted between all the involved parties, removing single points of failure.

This user-centered future is being built.

One of the next big hopes is Web Intents. Here, the user performs a generic action in an application, like “share”, perhaps by pressing a button. The user can then choose from all the services he or she prefers, that support this particular action in this context. The list is built automatically from the user’s preferences – a set of applications which are, indeed, registering with the user’s central identity.

Colour coordinated appsThis user-centered future has been built – on mobile.

Web intents are, of course, an adaptation of Android’s intents model. (Albeit in a simplified form.) And, in fact, we already do all kinds of identity-like things with our mobile devices.

  • We can pay with mobile.
  • We can authenticate with mobile (as many of us do with online banking).
  • We organize our contacts, our calendars, our messages, our photos and our videos on mobile. We speak to our loved ones on mobile. We read and watch and play on mobile. We write the identifying address of our mobile devices on our business cards, and have done for years.
  • Mobile knows your context: where you are, and who you’re with, where you’ve been, and where you plan to go. It’s far smarter, and far more social.
  • Mobile is already a decentralized social application platform, with a wide range of communications methods, from SMS through Bluetooth and NFC. We can use all of these methods, depending on the context, to send social information.

Smartphones already let us share in a decentralized way, but only specific, agreed data types like SMS, MMS and email. So, how can we expand on this to send arbitrary social data?

Sending social data on mobile devices

It turns out that the Activity Streams standard allows us to handle social data in a generic way, that can carry specialized data for niche application types. For example, a task in a distributed enterprise system might be an extention of note, one of the base ActivityStreams object types.

ActivityStreams is an extension of Atom, so it could contain the content itself – although this might not be feasible on mobile. We could send mobile notifications with ActivityStreams-like payloads (up to around 1400 characters on iOS, or around 1024 bytes on Android). If an application handles a particular object type, great! Otherwise, perhaps this is a great opportunity for the platform provider to gently point to their app store to make some suggestions.

This could be a solution for direct notifications, but still need to read updates from a central list.

Abstracting from individual mobile devices

I carry two phones: one for the US, one for the UK. I also carry an iPod for when I have to use an iOS app, which has its own set of profile data, although fewer communications options. And indeed, because of contracts and other factors, people upgrade their phones every 18 months to two years, possibly changing their numbers. Handsets get stolen, and some people have entire bags of SIM cards that they use on their travels as appropriate. And finally, backups are important.

An abstraction service – like a social version of Google Voice – may help here, gathering messages in a feed and sending notifications to handsets, or allowing handsets to retrieve as a batch.

Once you’ve done this, the obvious question is: could this model work on the desktop or in a pure-web model? Sure, but by thinking mobile-first, we get to build on work that’s already been done on these platforms. Mobile platforms lose a lot of the legacy baggage inherent in both desktop operating systems and the web, and they’ve been designed from the ground up to support distributed communications in an intelligent way. This doesn’t diminish the importance of the web as a cross-platform home for both applications and data, but it provides new opportunities for linking people data and building next-generation social applications.

Everybody benefits.

Platform owners get to build more engagement – and therefore value – into the platform itself.

Application owners get new ways to spread their software – through organic social proof.

Users get freedom from the silos that stifle their possibilities for collaboration and creativity.

Some questions:

  • A lot of people are still on Symbian and other legacy mobile operating systems (notably all those Indian users). How can we reach them?
  • How could we prevent spam and ensure data privacy on such a platform?
  • Which would be the best platform to start on? I think Android technically has the most support for this model, but Windows Phone may have the most organizational support.
  • In an era where platform value is so closely tied to trapped engagement, would anyone fund this?

Using bandwidth effectively

March 1, 2012 | Leave a comment

I wrote a post over on the latakoo blog about using bandwidth resources judiciously:

Too many apps and services treat bandwidth as an unconstrained, ubiquitous resource. We think that’s wrong, for a number of reasons.

So early on in latakoo’s development, we decided to compress video before sending it to the cloud. We harnessed the fact that computers are faster and more powerful than they’ve ever been, and decided to trade a more difficult development process for a much easier user experience. It’s possible to make video sizes much smaller while protecting quality, and as a result, that 2Gb uncompressed HD file could be sent in minutes over a 3G connection, without significantly affecting your bandwidth bill.

You can read the whole post over here.

Two presentations on the web, mobile and the digital divide

September 15, 2010 | 1 comment

Power couple Bryan and Stephanie Rieger – who also happen to be two of the nicest people you could hope to talk to – have released a couple of presentations on how the web has changed. They are excellent, should be considered required reading in my opinion, and together suggest a sort of manifesto for web application development.

Bryan on rethinking the mobile web:

Stephanie on mobile use in poorer regions of the world:

Devices and desires: why the portable device wars are a red herring

June 3, 2010 | 3 comments

A little pre-history

When I was a kid, I had an Atari 130XE. You’ve probably never heard of it. It was an 8-bit, all-in-one box that booted straight into BASIC; a flexible, well-built, sturdy computer.

There was just one problem: it wasn’t a ZX Spectrum or a Commodore Amiga.

At the time, Britain was undergoing a low-budget computing renaissance. Bedrooms up and down the country were filled with skinny boys (and yes, it was mostly boys) noisily loading games from cassette tapes and dutifully copying down source code listings from specialist magazines. The two engines of this renaissance were the Spectrum and the Amiga, and as such, the slotzo games, the tutorials and the social infrastructure were built for these two machines. Perhaps this helped me become more of a creative self-starter: I wrote my own games and stories instead of consuming other peoples’.

Later on, 16 bit computers became popular, and everyone upgraded to the Atari ST: a home machine powerful enough for creatives and musicians, but cool enough for game-playing kids. Except, perhaps inevitably, we had a PC. Running DOS. With a black-and-white Hercules display. Great if you wanted to plug economic figures through a spreadsheet, but lousy if you were a twelve-year-old who was mostly interested in playing The Secret of Monkey Island. Not only was the wholly PC incompatible with the Atari ST, but the PC was actually incompatible with itself: a game that worked on PCs with an EGA or VGA screen wouldn’t work with CGA or Hercules. Back then, the parts inside your computer were at least as important as the operating system you ran or the software you bought.

Plug and Play

Through heavy force and heavy lifting, Microsoft changed all that. Windows 95 was the first widely-accessible operating system that unified hardware platforms. Sure, you had to have an Intel-compatible processor, and it took them a while to get it right (for a while the system was redubbed “plug and pray”), but you didn’t have to mess with configuration files to get your computer working. This was a Big Deal.

Today, we’re used to not having to tinker with our machines. Windows will adapt to just about any hardware you throw it at, and even Linux has become an easy-to-use operating system (relatively speaking).

Better yet, we have data portability: in my house we’re running Windows 7, Mac OS X and Ubuntu, and I can move my documents between them interchangeably. Thanks to the web, and Java before it, we even have applications that don’t care what kind of operating system they run on. For an end user, things just work. That’s exactly how it should be.

Finally, computing is simple, data is interoperable and consumers are in control.

Uh oh: enter the portables

So just as we get a unified computing platform that’s easy to use and relatively simple for consumers to navigate, in comes a new device market that’s as fragmented and consumer-unfriendly as the computing market was in the eighties.

Android. iPhone OS. Windows 7 tablet edition. Windows Embedded Compact. Windows Phone. WebOS. ChromeOS. Kindle OS. Whew! It’s like 1986 all over again.

As a publisher or developer, figuring out which device to build for is a headache. Each one has a different operating system, possibly a different app store (something nobody had to worry about in the eighties), and a different set of underlying technologies. Do you exploit the iPad’s current success and develop for the locked-down Apple platform? Do you take advantage of Amazon’s huge built-in market and write a Kindle app? Do you hold out and wait for HP’s exciting-looking WebOS-powered tablet (which caused a storm recently by publicly moving away from Windows)?

Plug and Play (again)

The truth is, market forces are going to apply the same pressures to the mobile market that the personal computing sector felt in the early nineties. This story has played itself out several times now: one platform will emerge victorious. Judging by the lessons learned by IBM with their Personal Computer architecture, and both Microsoft and Linux for operating systems, it’s likely to be one which is:

  • Open: anyone can add it to their system for little cost, allowing hardware manufacturers to maximize profits by concentrating on the device itself rather than the ecosystem around it
  • Sustainable: it’s powered by a solid business ecosystem that will ensure the longevity of the platform
  • Friendly: it’s a system for everyone, not just hobbyists or developers
  • Flexible: it can be used in multiple contexts, from living rooms to science labs

By this measure, Apple is condemned to be a niche player, operating at the premium end of the market. Sure, right now technophiles everywhere are salivating over the iPad, but that will last until someone comes out with something nicer. In any event, Apple’s grasp is limited to the wealthier western nations – there are far more people seeking more affordable devices waiting in the wings in other places. The third world computer revolution is very much underway.

My bet, of course, is on web technologies. But it isn’t necessarily on the Internet: it’s time we separated web technologies from the World Wide Web. Indeed, connectivity isn’t ubiquitous, and isn’t likely to become ubiquitous world-wide for a very long time. Therefore, the ability to download, install and run apps offline, as we always have with software applications, is incredibly important.

With its Chrome Web App Store, Google is leading the way, and showing that it understands what it takes to create a next-generation application platform. It’s also shown leadership over HTML 5, which it is clearly investing in as a genuine method for powering both content and software. The genius is this: anyone can build using web technologies, and web technologies can run on virtually any hardware. Google makes its money through value-added services, like advertising (to allow both device manufacturers and software developers to supplement their incomes), its app store and underlying logic via some powerful APIs. It’s not an operating system, but for most end-users, they’re making the operating system irrelevant: it’s simply the thing that runs the web browser.

My advice: ignore the hardware

Computers as we know them today will always exist, but they won’t be for everybody. If you’re developing for non-technical end users, the plethora of hardware devices available to you is a red herring. You should be thinking of the web as the platform your products will be based on. Make no mistake: you need to become an expert in web technologies now – or, of course, find someone who is.


Next Page »