Sunday, March 18, 2018 :: Tagged under: personal culture engineering. ⏰ 6 minutes.
Hey! Thanks for reading! Just a reminder that I wrote this some years ago, and may have much more complicated feelings about this topic than I did when I wrote it. Happy to elaborate, feel free to reach out to me! 😄
The song for this post is Eleanor Rigby Pokemon Battle Theme, by Josef Kenny.
I was linked to a post on Uses This, a site which interviews productive people about what their "setup" looks like. I find that most formal education is about producing test results, sometimes waxing poetic about process. But I only really started learning how to study in college, and I'm still continuously learning what works for making things and what doesn't. These things are often radically different between people.
This is an area rife with engineer showboating, so please don't read any of this as "these are best" or "you should do this." Use what works! That said, contact me if you'd like to go deeper on any of this (my PC build, my configuration files, how I learned my tools). Also, share yours, or a blog post of yours, in the comments! 😄
What hardware do you use?
I'll split this in three: my laptop (where I do most of my coding), my home desktop for games and streaming, and my phone.
For engineering, I'm almost always on whatever the brand of MacBook Pro my company got me. I tried to be Cool and used a Linux laptop at Google and the laptop right after, but it just wasn't worth the pain. I bought a somewhat juiced ThinkPad hearing it was the best laptop for Linux, but it never slept or woke up properly, the screen was lo-res, sound was a disaster, and Wi-Fi never worked. I felt "I'm an engineer! I should be able to make Linux work!" but it was absolutely not worth the pain. Just get a Mac (or a Windows, if you prefer).
The most odd thing about my engineering setup is that I don't work effectively with accoutrements. Most SWEs I know have external keyboards, mice, trackpads, standing desks, or keyboard trays. Most use a large external monitor, or multiple monitors, some turn a widescreen monitor on its side for more vertical space.
My desk has a bunch of stuffed toys. Every morning I pull out my laptop, use the laptop's keyboard and trackpad, on the laptop's screen, and nothing else. This is how I learned to code, and I find it distracting to adjust to whatever new doodad I try to incorporate. I'm sure with enough practice I could break through and make great use of more screens or better keyboards, but I've never reached that point. It feels a bit of Jack Kirby's desk:
My headphones are, stereotypically, Sennheiser 280s. I liked these before they got super popular with engineers, who did the same research I did en masse and made them the Official Google headphones, so most Googlers you meet also use them.
My phone is a Pixel. My first two companies (Adobe and Google) were attacked by Apple over smartphones, so I switched to Android in 2010 and haven't looked back. I hate a lot of what Apple does in this space (censoring artists, removing the headphone jack, "we think you're stupid" marketing that largely works), and while Android and others do much of the same, Apple's fans are more annoying and in greater denial, so I hold on to Android. I'm usually on the flagship Google phone, but they went to luxury pricing on the Pixel line (Nexus was better) and removed the headphone jack too, so this is probably the last before I go to Moto or Samsung.
I won't list the full build of my gaming desktop, but it's nice. There are lots of vanities I don't spend on (clothes, fancy dinners, fancy alcohol), but I've invested significant time and money researching and building this PC. You'd think I play more games than I do; I play maybe a few hours a week. It's a big toy, a bit like those guys with gas-inefficient aggressively-named neon cars (Dart! Jaguar!) from the last century in their garages.
I use a Razer DeathAdder and a Filco Majestouch with blue switches, tenkeyless. This is what FruitDealer used in the first GSL.
And what software?
I use Firefox Nightly as my personal browser, and Chrome for work. Aside from supporting a free Internet by using a browser not provided by an ad company (or an OS company, or a device company…) Nightly is just blazingly fast now, and a pleasure to use.
I have a full-screen iTerm2 open that uses zsh. I got into
when I was younger because it's what Cool Engineers used, but I don't use enough
of the shell to really feel the difference between it and
I manage two tmux sessions, one for work tabs and one for play. In all my programming environments, I use Inconsolata-g at a larger font than most programmers, dark themes, and Vim keybindings.
While I do a lot of shell + vim, for most of my on-the-job programming I'm almost always on a JetBrains IDE (Intellij, PyCharm). I'm not a wizard with those, and they're almost always misconfigured so I'm using my shell to build and run tests. But they have enough utility regarding linting and catching common errors that I work in them.
I don't really have a preferred database client; I normally use PSQL. When it's very hairy query, I edit it elsewhere and paste it in there.
I capture spare thoughts and TODOs in Google Keep, which works well on my phone. I also use Firefox Nightly on Android. This is my home screen:
You'll notice that Twitter and Facebook aren't on there; I moved them further away since I'm trying to use them less.
Lastly, on all my browsers, I always install uBlock origin and HTTPS Everywhere. The ad companies have made it necessary to install adware, since its indistinguishable from malware at this point.
What would be your dream setup?
This is hard to say. In theory, there's nothing really stopping me from building whatever I'd define as "ideal" (and in a way, I've done that with my game setup). But it's hard to honestly imagine any doodad that will make me feel more productive on my machines; I mostly notice the things that block me, and have a harder time finding things that empower me. And the things that block me aren't usually around technical capability, or saving keystrokes, it's largely the consequences of social factors that make certain projects or initiatives feasible or not.
I do dream of learning to type in Colemak, and writing fun things on a mini keyboard like these, from /r/mechanicalkeyboards:
I dream of a laptop and OS that work together with basic functionality as well as MS or Apple devices (WiFi, battery, screen resolution + brightness), looks like a UNIX but uses more cutting-edge OS tech (ZFS for starters), and is Free Software. I'll never see it.
I dream of a smartphone that is as hackable as old OSes are. Apple and Microsoft are trying to make their computers harder for people to casually write programs in, and they did this to their mobile OSes; there are good reasons for this, but it's getting further from a world where we own our own devices and can subsequently do interesting things with them. Said with metaphor: I'd rather our computers remain as full-stocked kitchens we can cook in rather than microwaves we can only reheat the work of other kitchens in.
I can't find the original, but I remember a tweet that said something like "for all buying your next notebook or organizer that will stay empty like the last ones: your problem isn't organization, it's discipline." When I look at why I'm not producing the things I think I should, it's normally not a function of the setup 😛
Thanks for the read! Disagreed? Violent agreement!? Feel free to join my mailing list, drop me a line at , or leave a comment below! I'd love to hear from you 😄