The Setup


What do people use to get stuff done?

Ads Via The Deck

Micah Elizabeth Scott

Micah Elizabeth Scott

Hardware and software hacker


Who are you, and what do you do?

My name is Micah Elizabeth Scott. I've been doing unconventional things with technology for as long as I can remember, often exploring the boundaries between software and hardware. I've built satellites, robots, virtual machines, graphics drivers, CPU emulators, networking stacks, USB controllers, reverse engineering tools, and pretty much everything in-between.

I worked at VMware for six years, doing mostly USB and GPU virtualization. For about the last year, I've been at Sifteo building a new kind of video game console. Now I'm following my own path for a while, exploring ways to mix software, hardware, and art.

What hardware do you use?

I have a strange relationship with hardware. My hobbies and career tend to revolve around using tools and producing things, but I tend towards minimalism in my own life. So, my favorite hardware is whatever can follow me around when I need it to, and stay out of the way otherwise.

These days I do nearly all of my design and coding work on a 13" MacBook Air from 2010. The CPU certainly isn't the fastest thing ever, but the SSD still makes it feel fast, at least when it comes to compiling code or editing photos. It's really important to me that I have a computer that I can carry anywhere. I live in San Francisco, and I often feel like the whole city is my living room and office. Keeping the scenery fresh helps me feel less disconnected from the world when I'm deep inside my work.

Depending on how much I need to carry, I'll pack the lappy in either a small Tom Bihn Ristretto bag or my custom Chrome Citizen bag. The latter has plenty of room for a few extra layers of clothing, all of the laptop accessories I could want, a sketchbook, and whatever random hardware I'm tinkering on.

When I do work from my own desk, I dock the laptop with a Dell U2711. I see it as an alternative to the Apple 27" Cinema Display, but with more than one input. I like inputs. Also, pixels.

The monitor feels like a nice luxury, but really the most important reason to have a work bench is for the bench-top power supply. I have a BK Precision 1621A, which is rated for up to 15V and 5A. Before I owned a proper bench-top supply, I thought it was just a nice-to-have. I was content to power my projects off of wall-warts or hacked up ATX power supplies. But seriously, current limiting rocks. It's not just for charging batteries or smoke-testing a new PCB. It's confidence. If your current limit is set properly, it is much harder to accidentally fry whatever circuit you're working on. Just like revision control and unit test suites can give me more confidence to take risks and get messy with software, a good power supply is a safety net that gives me more confidence to experiment with hardware.

I'm a visual learner, and I get the most out of my experiments if I can see the results in real-time. So, I'm a bit of a test equipment junkie. I love a good oscilloscope and logic analyzer. My current setup compromises quality for portability, though. I've been using a BitScope BS100U for the past four years. It has two analog channels, 8 digital channels, and 50 MSPS capture. I like the small size and the ability to work with analog and digital signals simultaneously. But really, I'm ready for an upgrade.

My multimeter is a Fluke 179, and I'm extremely happy with it. I think I've managed to convince most of my employers to buy these meters for the office too, because they're just so reliable. A multimeter is something I prefer to put some trust into, and this is a meter that hasn't let me down yet.

My two favorite hand tools have got to be my Weller WES51 soldering station and a really sharp X-Acto knife. For surface mount work, I have an Atten 850B rework station, and for the really tiny PCB surgery work I bought a 7X-45X stereo zoom microscope. This has become one of my favorite tools. For me, owning a microscope that you can use hand tools under has been a really amazing enabler, allowing me to work at much smaller scales than I could otherwise.

I own several pairs of tweezers, with various levels of sharpness. I have an extremely fine-point pair with ESD protection, for doing the most delicate SMT work. I have two general-purpose pairs, and another slightly less delicate pair that still has an extremely sharp point. When working at a small scale, these are my hands. I'll often use two pairs of tweezers or one tweezer and one X-Acto knife to manipulate small parts under the microscope. The general-purpose tweezers find uses ranging from pulling jumpers out of breadboards to pulling plastic scraps out of my 3D printer.

For "rapidly" prototyping plastic parts, I've been experimenting with DIY 3D printers for a while. I bought a MakerBot Thing-o-Matic when they were new, but I immediately ran into trouble with the unreliable extruder motors on that first manufacturing run. I made several upgrades to the printer, most importantly replacing the extruder with a MakerGear stepper extruder and a 0.25mm nozzle. After all of this upgrading, my printer has a pretty respectable resolution at 150 microns per layer. On the downside, it's an incredibly slow, noisy, and unreliable machine.

And what software?

I find it really hard to get attached to software. I've seen how the sausage is made, and my tenure at VMware has shown me the ugliest sides of every operating system. I've had brief stints of using Windows. I used to use Linux almost exclusively. Now I've been mostly using Mac OS. But really, I see all operating systems as a necessary annoyance.

I have fewer opinions on text editors than most software engineers I know. I used to use emacs for coding but vim for most other tasks. Nowadays, I tend to use Sublime Text 2 for nearly everything. What can I say, I'm a sucker for the mini-map.

For 3D illustration and solid modeling, I've mostly been using Blender and OpenSCAD, though I've been wanting to learn Rhino and SolidWorks too.

For 2D illustration, I'll use some combination of Inkscape, OmniGraffle, and Adobe Illustrator. I'm most familiar with Inkscape, but I've found OmniGraffle to be fantastic for illustrating software documentation.

For pixel graphics, I've had the most experience with GIMP, but I've largely switched from GIMP to Photoshop recently. I use Aperture to develop and organize my photos.

I won't hesitate to drop down to C++ or assembly language when it's necessary, but when I can pull it off, I have the most fun writing Python. Lately I've been enjoying Lua too, mostly for its stellar embedding API.

I like building my own tools, and a lot of my favorites are data visualization and simulation tools I've built for specific purposes. As a really visual person, I love creating new ways to see inside of complex systems in real-time.

I find Evernote to be highly useful for keeping my life organized. I use it for todo lists, nascent ideas, travel plans, and anything else I want to be able to edit and see on any device.

What would be your dream setup?

My dream setup would really be more of an anti-setup. I'd love to have a community space full of great tools that I don't own. More storage space, nicer test equipment, and other like-minded creative folks to bounce ideas off of.

Of course I'd love to have a faster and higher quality 3D printer that breaks less, a faster oscilloscope, access to a fast laser-cutter. A spectrum analyzer and software defined radio would be really indispensable for working on wireless electronics.

I'd love a laptop that's faster and has more pixels. Perhaps a MacBook Pro with retina display, but I feel like portability is still by far the most important factor for me. My ideal laptop would be a 13" MacBook Air with a retina display, built-in LTE wireless, and the fastest CPU and biggest SSD I could get. It would also be great to have a really low-latency way of offloading big jobs to the cloud.

Really I'd love to work from a cafe/warehouse/beach/desert, on battery power, with a server elsewhere running my giant render or compile.