Uses This

Interview

What do people use to get stuff done?

Jonathan Foote

Jonathan Foote

Recovering scientist

Who are you, and what do you do?

My usual story is that I'm a "recovering scientist." I took a leave of absence from a wonderful cushy research job and somehow have not made it back onto the hamster wheel. I do a mix of consulting, speculative projects, and stupid art things.

What hardware do you use?

Sadly, nothing that exotic or interesting. A big Windows box with a quiet fan, and Cygwin and VirtualBox for Ubuntu. Yes, I know, Windows sucks -- but a lot of engineering software does not play nicely elsewhere.

I used to be THE Apple fanboy -- remember the Mac 128K and the 5-volume "Inside Macintosh"? But then I discovered Unix workstations, and little things like memory management (whoa-- crashed apps don't crash the system?) and gradually drifted away. I may drift back now that Macs are nicely unixy so please don't hate me.

I like trackballs -- mice leave my wide hands feeling cramped. The Logitech Marble Mouse is a good one. Also my desk is messy and it takes up much less space.

A Win7 laptop to be compatible with clients (dual-boot with Ubuntu), a couple older laptops for redundancy and for taking to challenging locations, an iPhone.

I'm fond of embedded Linux for robotics and stand-alone art installations. Had a pretty good run with the TS-7260, but am poking at a pile of alternatives, like the BeagleBoard and Chumby. Kernel hacking is not really my passion, so I'm pleased when something Just Works - so far the Chumby has been (mostly) delivering on that account: download Python, check, set up ad-hoc wireless, check, import OSC and send commands from TouchOSC on your iPhone.

For microcontrollers, I'm solidly in the AVR camp, mostly because the open-source tools (avr-gcc, and avrdude) are great. I need another bloated IDE like I need soft memory errors. I don't do Arduino because I know assembly and I'm a snob. I've been doing a lot of work with my own Atmega328 prototyping board I call the "rotorboard." It is similar to an Arduino but with room for various drivers and an XBee wireless module.

Hardware tools: A Weller W51 soldering iron, a low-end Tektronix 4-channel scope, a Fluke 179 DMM. An Aoyue hot-air station for SMD. I love these strippers. A cheapo power screwdriver, and because I'm getting to That Age, a magnifying visor.

And what software?

Well, I've programmed everything from 1-bit microcontrollers to a Cray X-MP using everything from FORTRAN punch cards to brainfuck. My tools have not changed much since grad school: emacs for coding and print statements for debugging.

I depend on Unix tools -- awk, grep, sed, bash -- for basic data munging. I've also been known to use the C preprocessor to do silly things like generate printer art postscript files. I feel like I have the patience for perhaps one or two more bloated toolchain learning curves in my life: Objective C may be one, VisualCsharp.net (or whatevertheheck it's called these days) is certainly not.

I am ideologically sympathetic to FOSS, so I am pleased to use Inkscape and Blender and Octave rather than the considerably more pricey commercial equivalents. I'm also cheap so this is a double win. I use source control for backup. I run a VisualSVN server on my main Windows box (totally easy to set up!) and keep everything under source control (using svn under Linux and TortoiseSVN under Windows). I update with a cron job from several machines so everything is redundant and in sync.

I use EagleCAD for board design. Autorouters pain my ninja-routing sensibilities so I don't use them (granted I don't think I've ever used a really good one). I try to stay away from gnarly analog and HF designs but when I can't there's LTspice for simulation.

Finally: Python is just the bomb. I've been doing a lot of GUIs for fun and profit and wxFormBuilder plus wxPython is just crazy nice. Check it out at One Minute Python. For embedded and bare-metal systems I'm still totally fine with C. Stuck with a crappy windows DLL and no source? Wrap it with Makepy.py and Robert is truly avuncular.

What would be your dream setup?

Probably something like dual Apple Cinema Displays, or even 42-inch plasma monitors. My own personal laser cutter. My presbyopia is getting worse while SMD chips are getting smaller and smaller, one of these days I'm going to get a pair of these surgical telescopes. Oh, even though my posture is decades away from being salvageable, a nice chair. Programmers like nice chairs.

Previously: / Next up: