Random Etc. Notes to self. Work, play, and the rest.


Square Payments in New Orleans during the Super Bowl

At Square I've primarily been working on internal tools and explorations of potential new customer-facing features. This week it was nice to change focus and collaborate with Faryl Ury from our communications team to put together some maps and summary stats about the effect of the Super Bowl on Square payments in New Orleans.

Here's the main image, produced with TileMill from the good folks at MapBox:

Square activity in New Orleans on Super Bowl weekend

Square activity in New Orleans on Super Bowl weekend

Ritchie King did a great job summarising our explorations over on Quartz, the new-ish business blog from Atlantic Media. Lucky for Square, two of their obsessions are mobile web and digital money, so I imagine they'll be watching us closely!


Yesterday we announced the closing of Bloom Studio, Inc. A little bittersweet but not an unlikely outcome for a start-up like ours.

We tried a lot of things out, had a popular hit with Planetary and a thoughtful flop with Biologic, and gathered data and wisdom about how the world responds to highly graphical/interactive environments for exploring everyday information. Stubbornly, of course, I still believe there's something there, but unfotunately there's not enough there to keep Bloom going today. If you're thinking about trying something similar then do drop me a line, I'd be happy to talk through what worked and what didn't.

In more upbeat news, I started a new job as a Data Visualization Engineer at Square! I'll have more to say about that as it progresses, but for now I'm content to soak it up and get to know how everything works.

As Bloom wound down I was fortunate enough to have the time to explore several different opportunities in depth and learn a lot about different approaches to building teams, companies and products. In some ways it was the first time I've ever felt part of a job market so I tried to take full advantage of that. It's a very good problem to have, but making a final choice was difficult.

It was tempting to take what I learned from Bloom and help build another company from scratch, or to return to my consulting/agency comfort zone, or to find a small company of friends where I would have immediate impact. In the end I've chosen the role where I think I have the most to learn, where I'll have a chance to apply myself differently, and get to know a kind of team, vision, scale (400+ people) and trajectory (new office, new markets) that I've never experienced before.


Bloom’s first iPad app: Planetary

Quick post for those wondering what we've been working on at Bloom. Now available in the App Store, our new app Planetary.

And here's a teaser video for those without iPads:

Planetary from Bloom Studio, Inc. on Vimeo.

More soon on the Bloom Blog and Robert's blog, once the dust settles!

Greetings Tube Fans

Thanks to some curious emails and a couple of dormant Google Alerts, it's come to my attention that the Travel Time Tube Map I made a few years ago has had a sudden resurgence of internet fame. My original blog post informs me that it's over 5 years old. Wow!

I'm not sure who rediscovered it first, but thanks to everyone who's linked to it so far including Fast Co. Design, Creativity Online, Wired UK, PSFK, Roomthily, Inteloquent, OpenStreetMap and numerous Twitter and Facebook users.

The map has been picked up by a few books and exhibitions over the years, including the wonderful Form + Code by Casey Reas and Chandler McWilliams. If you're interested in how this kind of work gets made then the book is essential.

If you're interested in a more thorough theoretical exploration of isochrones I can recommend Nicholas Street's Time Contours paper on the subject. If you find yourself yearning for an even deeper treatment of transit data, look around for people like Mike Frumin who take research far more seriously than I do!

If you want to play around with this code for yourself, it should be relatively easy to fix up for current versions of Processing (probably just the fonts will need updating, please leave a comment if there's anything else) and you can get the data here.

I've had a few requests to update the map with current data, including the East London Line and Heathrow Terminal 5, as well as suggestions to include the overground in south London and elsewhere. Sadly I haven't found a coherent and consistent data source that I could drop-in as a replacement for my hand-edited original. The official Transport for London data sources on data.gov.uk look promising, and I've had a couple of under-the-table offers from people with access to time-table data, but these all require more time and effort than I have for the map at the moment. In future I'd like to move the map to a more 201x format like Canvas or SVG, perhaps porting to Processing JS. Perhaps an app? One day...

Ah right, the blog.

It's been a while. Hello again.

A few months ago I left Stamen after almost 4 awesome years. I planned to review the work we did together here but I've been procrastinating on that for long enough so I thought I'd better post something before it's not news any more.

I already miss working at Stamen but in August, green card in hand, I felt it was time for a change of pace. I'm taking the opportunity to build a start-up with my friend and long-time Stamen collaborator Ben Cerveny. We'll both have a lot more to say about that as it takes shape, but you can stalk us here in the meantime if you want.

While we seek funding for our venture I'm freelancing a little bit, building demos for investors and trying to get exposure to some different ways of working. Stamen has proven there's at least one solid and sustainable business model for beautiful, interactive, dynamic mapping and data visualization. But a successful design service that like has a frenetic pace of work and high turnover of projects which I eventually found frustrating. Despite ongoing and successful efforts to build code libraries (like Modest Maps and Polymaps) I came to feel constrained by the clean-room/from-scratch implications of work-for-hire contracts.

That isn't a deeply serious criticism of Stamen. They continue to deliver amazing work (for clients like Bing, MTV and Nike) and art like Prettymaps and I don't believe their working style is flawed. This change is more about what I've learned about my own working style, my curiosity to explore different ways of working, and perhaps the shiny world-changing opportunities of the Bay Area. So with our start-up we plan to seek out and try other business models (licensing, advertising and more) that will allow us to tackle long term projects and give us space to build up our own tools and apply them across many different domains.

I'm also taking this time to re-immerse myself in the growing culture of creative coding that I came to know through the Processing community. That culture is alive and kicking in projects like ProcessingJS and Cinder and many other initiatives, something everyone involved with Processing should be proud of. At some point in the last few years I picked up deep javascript knowledge, which means I share the excitement about projects like Node and I've been making small contributions in that ecosystem whenever I can. All that javascript seems to have made me a better programmer in general, and while it's early days I'm also picking up C++ again using Modest Maps as my test rig for both OpenFrameworks and Cinder.

It turns out this is quite a bit to get across in a couple of paragraphs and I have to get out of the house to see my accountant... how times change! Despite my continued .co.uk-isms I'll be based in San Francisco for the foreseeable future. If you're here too and you've read this far we should probably be talking more. My email address is 'tom' at this URL, or if we've met before there's LinkedIn and Twitter too.

More Multi-touch Links

Here's a nice overview of how touch events are modelled in mobile Safari on the iphone. Here's a student paper detailing some multi-touch code architectures and actual code too.

Here's a nice article on single point gesture recognition for games, here are lovely simple single stroke and multi-stroke gesture recognisers in javascript. Here's the corresponding paper. Here's a paper about modelling gestures using Markov chains.

And here's a gesture recognition discussion thread featuring some of the above links and many more.

Curling is Project Management

Curling is unexpectedly popular again. We're measuring this.

Continuing a four and half year old seed of thought that Matt Webb planted about sporting metaphors, I'm imagining that Curling is project management:

I was going to labour this point a little bit, but wikipedia sums it up nicely. In Curling, "two sweepers with brooms or brushes accompany each stone and use stopwatches and their best judgment, along with direction from their teammates, to help direct the stones to their resting place, but without touching the stones."

And now back to measuring things.

Help Me Think Through Multi-touch Events

We're lucky enough to have a big ass table in the office for a client project. Not a MS one, but an Ideum one that speaks the TUIO/OSC protocol.

I have a GestureWorks license available to me if I need it but I haven't evaluated that yet because I have a little time to experiment and I'm really just curious about how it all works. I'm using Flash, and I'm successfully receiving TUIO messages using udp-flashlc-bridge and tuio-as3 with a LocalConnection. It's working nicely so far, and I already adapted Modest Maps to deal with rotations and got up and running quite quickly.

The reason I'm reaching for my blog for the first time in a while to ask if anyone reading has experience to share about developing software for this kind of platform? Specifically I'm wondering if anyone has hints about how to go from raw cursor information (potentially from several fingers on several hands) and turn that into meaningful motion? What I can do so far works really well with two fingers but I'm wondering where to go from here.

Some of the steps seem simple. For example, if a cursor appears and disappears in a short space of time and doesn't move very much, that's a tap event. If two cursors appear and disappear twice in the same place in a short space of time, that's a double-tap event. If a single finger cursor appears and moves, that's a drag. A fast drag could be interpreted as a swipe. You can code some momentum/physics in there to make it feel right. So far so good. This much is intuitive.

So then... there's the whole task of doing hit-tests on each interactive object on screen so that you don't combine cursors into gestures unless they're acting on the same thing. This is familiar territory for me. But where intuition breaks down for me is if two or more fingers appear and move in roughly the same direction - is that a drag gesture? But how do you define roughly, or should you also interpret it as scaling or rotation? And when do you decide to ignore the scaling?

And then, if several fingers are doing this, potentially in opposite directions, how do you boil that down into a gesture? Or if several people are all mashing the table at once, how do you filter out the noise? Can you? There are some juicy interaction design problems in here that I know I'm not the first person to think about by a long shot (hat tip, hat tip, hat tip, hat tip, hat tip, hat tip etc). But I don't see much discussion of the interpretation of raw touch information into gestures. If you know of good projects that have solved these problems before (in an open way) I'd love to hear about them!

One idea I've had is to use a clustering algorithm like k-means to get two groups of points, and filter out the outliers, and then continue to apply slightly naive two-finger algorithms to build rotation/scale/translate matrices. Are you an old school multi-touch/reactivision hacker? Have you built touch tables for a living? Does all of this sound familiar to you? Let me know your thoughts!

If I Had More Time

"Mr. Micawber was waiting for me within the gate, and we went up to
his room (top story but one), and cried very much. He solemnly
conjured me, I remember, to take warning by his fate; and to
observe that if a man had twenty pounds a-year for his income, and
spent nineteen pounds nineteen shillings and sixpence, he would be
happy, but that if he spent twenty pounds one he would be
miserable. After which he borrowed a shilling of me for porter,
gave me a written order on Mrs. Micawber for the amount, and put
away his pocket-handkerchief, and cheered up."

I am the Mr Micawber of time, being that I'm over-spending just slightly this month. Hopefully I'll make it up this year!

If I had more time I might blog about a small revival in minimal geeky location-based fun stuff that's happening with sites like noticin.gs and blockchalk.com. I might also note that foursquare got funding which is good because even though I'm not particularly attracted to the service it's a better experience than its competitors by a long way (and much less creepy, I think). And I'd note that opengeodata.org has stopped being about OpenStreetMap exclusively and that if you want to get Steve Coast's attention there are a million things he's thinking about these days.

If I had more time to blog and more time to think, I'd stop leaving cranky comments trying to answer Manuel Lima's false dichotomy and Robert Kosara's straw man and I'd stop worrying about definitions of data and aesthetics and analysis and I'd be happy to frame the argument in terms of prickles and goo instead.

"it is inevitable that there will soon be a large number of hybrid designer-engineers that shall radically reconstruct the visual landscape." – John Maeda

This debate isn't new and it's not going away either. John Maeda and friends have been pointing out the rise of gooey-prickles and prickley-goo for years. I wonder if prickly folks at RISD are getting gooier, and vice versa.

My money's on the middle ground too, which is why I find narrow and divisive definitions so frustrating. Why can't we have aesthetically pleasing data analysis? (Of course there will be pure analysis with no emphasis on aesthetics, just as there will be pure aesthetics with no emphasis on data. Sometimes the latter with be art to make a point. That's cool!)

If I had more time to think and blog, I'd have told you about our intern Amy Martin and how she worked with us over the summer on some Wikipedia stuff to hone her hybrid designer-developer skills, and how that seems to be paying off nicely. And I'd mention the new GAFFTA space in San Francisco that is running workshops also recognising this kind of work without worrying overmuch about definitions. We'll be there next month.

Gosh. If I had more time I'd never blog.

Interviews! Everything!

This week, Eric and Geraldine updated the Stamen homepage to include a list of Everything, Everything and Kicker Studio's Jennifer Bove posted an interview with me and Boris Anthony from Dopplr about information visualisation for Creativity Online.

Before that, but I've been slow to update, Tish Shute posted a long and detailed write-up of Where 2.0 and WhereCamp featuring a couple of quotes from me and a lot more from Aaron Cope.

← Before