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.
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:
- A Thinkpad T40 that has expired and been resurrected several times, and now has a dead video card.
- A surplus HP Pentium III laptop that I bought for $30 from the company store when I worked for Amazon.com. It's about the size and weight of the Domesday Book, and inexplicably smells like maple syrup whenever I turn it on.
- A 12" 867Mhz Powerbook G4 that has immeasurable sentimental value. I did some consulting work in Baghdad in 2004, and this was my main work laptop at the time. It's been scratched, slammed, filled with dust, had innumerable cups of coffee spilled on it and even dropped out of a helicopter. But it chugs along despite its dents and cracked bezel.
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 del.icio.us 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 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 Mail.app, 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).
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. :)