Uses This


What do people use to get the job done?

Emmett Butler

Emmett Butler

Software engineer (PyKafka), game developer (Cibele)

Who are you, and what do you do?

My name is Emmett Butler. I'm a software engineer at where I build data collection infrastructure and maintain open source projects related to that work. I'm the maintainer of PyKafka, an open source Python client library for the Kafka distributed log processing server.

I have also built several video games, including the recently released Cibele with Nina Freeman and Star Maid Games, a game based on a true story about a young woman and a young man who meet up to have sex after forming a relationship in an online game. Other games I've worked on include How Do You Do It? and Heads Up! Hot Dogs. I'm interested in building systems and learning more about engineering.

What hardware do you use?

I do most of my programming work on a ThinkPad W530 with eight virtual cores and 8GB of RAM running Debian. When I'm doing things that are specific to Mac or Windows, I resort to my 2009 MacBook Pro with a Windows partition.

In my home office, I use a GeekDesk, a Herman Miller office chair, and an Imprint floor mat to help with standing fatigue. My keyboard is a mechanical CODE Keyboard - mechanical switches cause less typing fatigue over time, which I find to be the most important improvement over standard keyboards. Along the same lines, I've got a thumb-controlled trackball instead of a standard mouse, and a single large monitor that I use instead of the laptop's screen.

And what software?

I love Debian-flavored Linux, and I've been running either Ubuntu or Debian since 2010. Python is currently my language of choice, and I constantly make use of the huge array of open source libraries and tools available to Python programmers.

Apache's Storm and Kafka projects are two of the cornerstones of the platform that is building, and I write code that talks to them quite regularly. When coding, I use a native vim client - gvim on Linux/Windows, MacVim on Mac. For a while, I was using Sublime Text's vim compatibility mode, and it eventually got too cumbersome so I just started using vim. I like the speed at which I can translate thoughts into code in vim compared to other tools, though becoming proficient in vim does require a bit of concerted effort. Practical Vim is a great resource for anyone interested in learning more about efficient code editor use.

I love tmux as a cross-platform way to script common terminal use cases - I have a tmux script that starts a ZooKeeper server and three Kafka client brokers all running in foreground terminals, for example. I've experimented with xterm and Terminator as alternate terminal emulators, but I've found the Mac and Debian defaults to be the best for my needs. On Windows, though, I use the ConEmu console emulator instead of the horrendous default terminal.

What would be your dream setup?

I'm actually pretty close to having my dream setup right now. I suppose it would also involve a door that closes - my current home office is in a corner of our two-room apartment's main room. Other than that, some lower back supports on my chair would be nice. I've put a lot of thought into minimizing my physical discomfort during the work day, and that's probably the biggest hole left in the arrangement.