Uses This

Interview

What do people use to get the job done?

Jesse Vincent
Photo by Julian Cash.

Jesse Vincent

Developer, CTO of Keyboardio

Who are you, and what do you do?

I'm Jesse Vincent, and I make stuff. I've spent most of my career writing software of one kind or another, though for the past two years, I've primarily been working on hardware.

I'm co-founder and CTO of Keyboardio, a boutique keyboard startup. We're making a gorgeous hackable ergonomic keyboard, the Model 01. This all started off as a hobby. After my last startup cratered, I decided to take a year off to screw around. Somewhere in there, I discovered that making your own keyboard was kind of a thing and decided to give it a try. Not that I knew how to design circuit boards, solder, laser cut, 3D print or CNC mill things. Somewhere a couple months in, people in cafes started to ask where they could buy my keyboard. I blogged about it. A few days later, there were a thousand people on our waitlist. The rest, as they say, is history.

What hardware do you use?

Right now, I'm typing this on my prototype Keyboardio Model 01 keyboard. It features a split layout that echos how your fingers actually move, mechanical keyswitches and a CNC-milled hardwood enclosure.

My primary computer these days is a late-2013 Core i5 Retina MacBook Pro with 16 gigs of ram and 500 gigs of SSD. Primarily, it runs OS X, though for reasons I'll get into later, I've got Boot Camp set up with Windows 8.1 as well. The SD slot on the MacBook is cute little 64GB Transcend JetDrive Lite with an Ubuntu 14.10 install.

When I'm working at a table or desk, the laptop is perched on a Roost laptop stand. The Roost keeps my laptop screen at eye-height. It's laser-cut from carbon fiber and folds down to almost nothing. Combined with the keyboard in my lap, I've got a reasonably ergonomic setup that fits in my laptop bag and takes less than a minute to set up in a cafe.

The Model 01 has some basic mousing functionality, but whenever I'm doing something at all mouse-intensive, I'll switch over to the Logitech Wireless Trackball. I've never found trackpads all that comfortable and the Trackman Marble series are the most reasonable trackballs I've used to date.

CAD software is still somewhat painful for me with a trackball. It turns out that when you're trying to work with 3D objects, having a 2D mouse...just isn't quite enough. Over the past few weeks, I've been trying to get used to a 3DConnexion SpaceNavigator for Notebooks. It lives in my gear bag, but doesn't seem to be coming out most days. I'm not sold on it yet.

At home, an iMac, Cinema Display and Drobo live on a sit-stand desk from GeekDesk that I mostly leave in the sitting position. More often than not, the iMac plays the role of a TV while I solder or do actual work on the MacBook.

My phone is an iPhone 6 with a Typo2 hard keyboard case from Typo keyboards. It's not a great phone keyboard, but it does happen to be the best phone keyboard for a non-Blackberry one can get these days.

Lately, I seem to have given up on tablets in favor of the Kindle Voyage. There's something remarkably liberating about reading on a device I can't check my email on.

The iPhone definitely lasts longer than my Android phone did, but I still find myself traveling with a USB battery 'just in case'. I've run through a variety of USB batteries. So far, I've managed to wreck every single one I've used.

Now for the hardware hacker stuff. Readers should keep in mind that I'm a self-taught novice. I may use or recommend completely nutty things.

I have two versions of the hardware setup. The good setup is at home. The crazy TSA-safe travel setup fits in a little AmazonBasics zipcase. I'll try to detail them separately.

At home, the soldering iron is a Weller WES51. It's nothing fancy, but hasn't done me wrong. That's paired with a solder sucker and a cheap brass wire sponge tip cleaner and a big, heavy Panavise for holding boards while working. The only screwdriver set I find I need is the iFixIt 54 bit driver kit. I have a variety of pliers and wirecutters and a half-dozen sets of tweezers in various stages of destruction.

I use a fairly basic multimeter. I've recently advanced to the point where I can use it for something more advanced than just beeping when there's electrical conductivity between the two probes.

The setup at home is completed by drawers and drawers of electrical components and supplies.

The travel setup gets me derisive looks from hardware hackers and impressed looks from software folks for the same bit of kit: A battery-powered Hakko soldering iron. (In general, battery-powered soldering irons are really bad at maintaining an accurate temperature. When pros go portable, they seem to go for TSA-antagonizing butane-powered soldering irons.) The iron's saving grace is that airport security screeners don't bat an eyelash at it. Paired with a solder sucker and some super-fine solder, I'm pretty well set up to effect electronics repairs on a park bench. (It turns out that hotels frown on soldering in your room. Don't ask.)

The multimeter is a $5 item I picked up at GuangHua Digital Plaza in Taipei. The travel tweezers live on my keychain along with the screwdriver and knife of last resort, a Swiss+Tech Utili-Key. A DSO Nano v3 digital oscilloscope the size of a deck of cards has recently joined the kit. A few Arduino Micros and a USB voltage/amp meter come in handy more often than I'd care to admit.

Non-hardware-hacking things in the travel kit include spare MicroUSB cables, a fast-charging USB wall plug, a PortaPow USB condom, a couple SD cards and a USB stick or two. The PortaPow does something pretty simple - it severs the data line on a USB connection. This makes it much harder for a malicious host to pwn your device when you plug it in to grab a few spare electrons. More practically, it tricks your device into charging much faster because it believes it's connected to a wall plug rather than a computer.

And what software?

I've been living my life on the command-line for... a very long time. Many of my workflows are very... terminal-centric. I'm writing my responses to this interview in 'note', a shell script I've been using instead of Evernote for a good few years:

cd ~/Dropbox/notes && vi `date +%Y-%m-%d`-$1`

'note' has recently been supplemented by Notational Velocity, which syncs to Simplenote on my iPhone.

Rather than imgur and a pastebot, I use another tiny script.

My personal todo list lives in a todo.txt file that I manage with todo.sh, aliased to 't'.

My zsh prompt is one of those godawful full-color monstrosities courtesy of oh-my-zsh. I jump between directories using 'z'.

A lot of my old-skool Internet life still lives in a screen session on a server. I read personal mail in mutt, chat on IRC with irssi and chat with MIT zephyr folks in BarnOwl. I connect to the server with Mosh, which smooths out bad internet connections and gracefully reconnects when I change networks or put my MacBook to sleep.

Reading across my menubar:

I tend to flit between browsers. Ideologically, I prefer Firefox. When I've run head-to-head tests, Safari has extended my battery life so much that I had a hard time believing it. Chrome is a battery and CPU hog, but I keep coming back to it, because the feature set is as close to perfect as I've found. LastPass lets me keep my passwords in sync across all of them.

Work email and calendar are Googley. In general, I'm a big fan of indieweb tech and self-hosting, but I'm a bigger fan of outsourcing things that aren't your core competency. Running a mail server isn't going to make us a better keyboard company.

Inside the company, we communicate using Slack pretty much exclusively.

Corporate task tracking is in Trello, though our process is mostly built around a morning planning session where we build 'today lists' in a tiny little webapp I knocked together. Today lists are pomodoro-compatible todo lists that expire after 18 hours.

When I'm writing code these days, I'm mostly writing Arduino C in vim and flashing it onto the keyboards with avrdude, though I sometimes slack off and use the Arduino IDE.

After running through a half-dozen EDA (Electronic Design Automation) tools over the course of a year, I settled on KiCAD, an open-source electrical CAD tool that's gaining popularity amongst folks working on open hardware. It's not without its issues, but it's evolving very quickly and is far more CAD than I need. It runs on Linux, MacOS and Windows. If you're using KiCAD on a Mac, you REALLY want to be running a nightly build.

For 'traditional' solid CAD, I've been using Autodesk Fusion 360. Fusion 360 is a hybrid-cloud CAD package. (In this case, that means it's built around Chromium and offloads storage, rendering and file format conversion to Autodesk's servers.) It can work offline, but it's really meant to be used while connected to the Internet. 360 runs on both Windows and MacOS, but runs much better on Windows. Initially, I tried using VMWare Fusion (no relation) to run Fusion 360 in Windows. CAD, like gaming, turns out to be one of those things that just runs too slowly inside a VM. When I'm doing any real CAD work, I reboot into a Windows 8.1 Boot Camp partition. I'm at the point where I can actually design the things I want in 360 and have the come out looking and feeling nice. Fusion 360 isn't a replacement for Solidworks or Autodesk Inventor, but I'm not a replacement for a real mechanical engineer. (Disclosure: Autodesk is sponsoring Keyboardio with free licenses and amazing engineering support.)

There are some things, like USB debugging, that Linux is just better at. As you might expect, that's not the sort of thing that works well in virtualization, either. To that end, I went out and bought the aforementioned JetDrive and installed a recent Ubuntu + GNOME on it. I was blown away by how much it didn't suck. It even deals reasonably well with the Retina screen on the MacBook. I use rEFIt to triple-boot between OS X, Windows and Linux. I still feel a little dirty booting to Windows in public.

What would be your dream setup?

I'm still waiting for my heads-up virtual display. It's my hope that the recent interest in VR gaming will get me the lightweight infinite desktop I've always wanted.

More realistically, I've been looking longingly at the various efforts to run a reasonable Linux desktop on the Surface Pro 3. Windows 8.1 is fairly tolerable, but still not quite what I want. The hardware is pretty much exactly what I want. It's as powerful as a MacBook Pro in a package lighter than the new MacBook. And it gets rid of the legacy keyboard, so I can bring my own ;)