Uses This

A collection of nerdy interviews asking people from all walks of life what they use to get the job done.

A picture of Matthew Mckeon

Matthew Mckeon

Developer (IBM Visual Communication Lab)

Who are you, and what do you do?

My name's Matt McKeon, and I try to help people understand and talk about data in engaging and informative ways. Currently I'm a developer with the Visual Communication Lab at IBM Research's Center for Social Software. My projects include Many Eyes and Many Eyes Wikified; I've also helped my colleagues out a bit on Many Bills. In my spare time, I like create visualizations of data that interest me; I recently posted an infographic to my personal site that examines the history of Facebook's default privacy settings.

What hardware do you use?

My primary work machine is a MacBook Pro 2.4Ghz/4GB RAM/180GB HDD with a matte screen. I'm glad I got the last MBP before glossy screens became the default - I find the reflections incredibly aggravating.

At the office I have a basic desk setup: a 22" LCD monitor, keyboard, mouse and a 1TB drive for Time Machine, plus a USB hub to tie everything into a single plug.

In my pocket there's an iPhone 3G; I also keep around a MOTOFONE as a spare phone, because I take pure aesthetic joy in how simple and awesome it is.

At home I have a Wintel PC I built from parts that I use for personal projects and games; it's a Xeon E3110 / 4GB RAM / 1TB RAID-1 HDD / nVidia 8800GT.

I also seem to be a laptop packrat. I just opened my closet and saw the following stacked on a shelf:

What do I do with them? Reinstall Ubuntu. Occasionally use them for couch surfing or an art project.

My (currently 1-year-old) daughter and I play with an XO1 from One Laptop Per Child - she loves the keyboard and the camera as well as the Tam-Tam music apps. I wish we had a USB teether though.

And what software?

I use a hodgepodge of tools for data and research. My browser homepage is set to a local Tiddlywiki instance where I keep all my notes. I depend mightily on Zotero to manage all the papers, books and articles I read, as well as to manage my bookmarks.

I frequently need to crunch and reformat data in order to visualize it; getting my hands into it is also a good way to learn its structure and think about how to illustrate that for other people. With tabular data I sometimes open something first in Excel to get a sense of the dimensions and categories, then drop into code to actually do any transformations I need. If it's a big dataset I'll sometimes pull it into SQLite and explore it by slicing and summarizing. My platform for data munging scripts is mostly Ruby these days, however Emacs is my dirty secret. Macros are an unbelievably powerful tool for quickly cleaning up dirty data.

When I'm mocking up a visualization I usually start with a pen and paper or a whiteboard with my colleagues, as a way to understand how space, animation, and interaction might work. Then I move on to Illustrator (if I need to do original drawing) or Photoshop (if I'm pasting together and recoloring existing imagery for my sketch). When I'm experimenting with color I really like an obscure Flash toy by voet cranf called color synthAxis - it lets you play with swatches of color easily and do some basic transformations. Sometimes I'll start with ColorBrewer to explore perceptually robust schemes, then adapt them to what I want. Colour Lovers and Adobe kuler are other fun resources I use for inspiration.

Once I have an idea of the data, overall shape, layout and themes I'll do prototypes in Processing or Java. I never really know if an idea's going to work until I can actually see the data translated into color, shape and movement. Recently I've been experimenting with Processing.js as a platform.

I edit code primarily with TextMate and IntelliJ IDEA. I like Eclipse too, but IDEA's refactoring support is a better fit for the way I program. When I'm doing Flash I use Flash Builder, but that's been less and less frequent as of late.

For map data I use Quantum GIS, Matthew Bloch's kickass MapShaper, and a variety of utilities I've written in Java and Ruby to transform and process geographic data.

For databases, PostgreSQL is my workhorse. It's capable, easy to set up and manage, and reasonably performant. When I'm just working with a big dataset on my local machine I love using SQLite - it's crazy the level of performance and functionality you can get from a simple file-based database format.

I use Time Machine and IBM's centralized backup servers to back up my work machines; at home I use Carbonite. I don't think backup is true backup unless it's offsite.

For source control and versioning I'm a Git disciple. It completely transformed how I code for myself and with others.

For work email and calendaring I use Lotus Notes; for personal things I use, Thunderbird and Google Calendar. For web browsing I mostly use Firefox, thanks to the extensions on which I've become dependent (FoxyProxy, delicious, Zotero, Screengrab!, Chris Pederick's Web Developer Toolbar and Firebug). However, because nearly everything I do is for the web, I need to have every major browser installed: Safari, Chrome, Opera, and IE (via VMWare Fusion).

I pretty much always write papers in Word and presentations in Powerpoint.

On my phone my most frequently used apps (besides Mail and Google Maps) are Twitter, Instapaper, Wikipanion and MassTransit. I'll also frequently read the NYTimes via their app.

What would be your dream setup?

Actually, I'm pretty content with what I have. I wouldn't mind having an iPad and a Nexus One so I can tinker with building visualizations for them. :)