13 Dec 2021
uses this interview
Who are you, and what do you do?
Hello! I’m André Arko, although I mostly go by @indirect on the internet. I spend too much time online, and I think that computers and programming are really neat. As for what I do, uh, it’s hard to pin down exactly but most of it could be called “web development”. Probably.
For example, I artisanally hand-wrote all the HTML and CSS for The Cube Rule, a website that exists primarily make everyone who reads it astounded and/or enraged while remaining indisputably correct. It will settle whether a hot dog is a sandwich (no) and countless other food controversies. The site has been cited in a Maryland state judicial ruling, and was a top 5 finalist for the 2019 Webby Awards.
I’ve loved the Ruby programming language ever since I discovered it in 2003. Then I discovered Ruby on Rails in 2004 or so, and that led to lots of involvement in the Ruby community. Notable highlights include:
- getting involved in open source in 2009 and ending up lead developer of Bundler, the Ruby language dependency manager
- presenting around 25 talks at 36 events in 14 countries
- writing the third edition of The Ruby Way (because I loved the first edition, which I used to learn Ruby in 2003!)
- founding the non-profit Ruby Together, a 501(c)(6) trade association that funds open source development work to benefit all Ruby developers
Professionally, I’ve also had a bit of a roller-coaster, working for a software defense contractor, a personal finance startup, a web application hosting startup, a personal media streaming startup, and then Cloud City Development since 2013. Cloud City is an agency, and I spend my work days helping clients (who are mostly tech companies, and mostly in SF) develop their own web applications. There’s a set of stories from each of those places, but you’ll have to ask me about them at a conference or on the internet so this interview can stay a manageable length.
Back on the personal side of things, and for once including no web development, I built a lunar calendar for witches and werewolves with my partner @sailorhg. It’s written in Swift, and lives on the iPhone App Store. It’s also the subject of my favorite blog post and conference talk, ”How to calculate the phase of the moon very, very badly!”.
I also curated actually.men, a collection of single-serving websites attempting to fight against the misogyny rampant in tech: the seminal istechameritocracy.com, followed by isitapipelineproblem.com, arewomenbadatcoding.com, and dowomentalkmore.com.
What hardware do you use?
Okay, now it’s starting to feel like a theme, but… it’s kind of complicated.
When I’m out and about, I use a pacific blue iPhone 12 Pro, an Apple Watch Series 6, and AirPods Pro. Each one of those devices feels right on the the edge of magic to me. Today’s phones are absolutely the culmination of everything I could imagine while using a Handspring Visor Deluxe and a Creative NOMAD Jukebox in 2000. The AirPods Pro ability to switch between transparency or noise cancellation, with quick connection when I change devices, makes them my favorite headphones of all time.
My desk setup has an OWC Thunderbolt 3 Dock, which hosts an LG UltraFine 5K display (discontinued 😢), Audessey Lower East Side speakers (discontinued 😢), and Keyboardio Model01 (discontinued 😢). For less miserable video calls, I’ve also added a boom-mounted RØDE VideoMic NTG, a FujiFilm X-T30 made into a webcam via Genki ShadowCast, and an Elgato Ring Light.
I’m pretty sure I have a keyboard problem. For one, I’ve been using the Dvorak keyboard layout since around 2003. (Somehow, Dvorak completely resolved my crippling RSI from computering for 16 hours a day). For another, I fully replaced the keyboard in my Mac laptop with a FingerWorks MacNTouch touch surface until that became physically impossible. Today, I am definitely a sucker for unusual keyboards, and I often use a Kinesis Advantage 2, a Keyboardio Atreus 2, or my hand-built prototype Atreus 2. (Turns out my college friend Phil designed the Atreus! Small world.)
My (hopefully back in use soon!) travel kit includes a Hyper 100W charger and battery pack, a Roost laptop stand, and an Apple Magic Keyboard and Magic Mouse. On trips to other countries, I add a Passport II Pro so I can use most plug types. If I bring my Nintendo Switch, I’ll also pack a Covert Dock so we can play games on big screens.
At any given time, work means I have between one and three 16” Intel MacBook Pros that I connect to that desk setup. Those are pretty nice machines, to be honest. A laptop with 32GB of RAM is a godsend when you have to run a bunch of stuff in Docker.
In my personal life, though, I use an M1 MacBook Air. After almost 10 years of computers that aren’t noticeably faster than last year’s, the Apple Silicon Macs are honestly a revelation. My tiny 2.8 pound 13” laptop has no fan (!) but can compete with desktop Intel PCs… and has 12 hours of battery life. It “only” has 16GB of RAM, but the entire 1TB SSD is about as fast as DDR2 RAM from the early 2000s. I love being surprised by how fast a computer is, and I’ve had that feeling in spades.
Speaking of fast computers, my desk also squeezes in a Corsair One a200 gaming PC, with an AMD Ryzen 5900X CPU and Nvidia GTX 3080 GPU. It’s one of the few machines that can definitely outperform my tiny MacBook Air, but I pretty much only use it to play games at 144fps with all the graphics settings turned up to “highest” on my 4k LG 27GN950 monitor.
The keyboard problem also continues on the PC, where I use at Filco Majestouch 2 HAKUA with Cherry MX Silent Red keyswitches and After-school 1992 keycaps. Rounding out the gaming setup is a Logitech G203 Lightsync mouse, HyperX Cloud Flight S headset, and an Oculus Quest wired to the PC for VR. The final (and my favorite) accessory is the Microsoft Elite 2 controller, the only piece of gaming hardware that feels to me like Apple could have made it.
Next to the desk is my media center, with an LG OLED C8 TV, an AppleTV 4k, a Playstation 5, and a Nintendo Switch dock. They’re all connected to an Onkyo TX-NR545 that drives 7.1 surround speakers. I mainly use it for watching movies and TV shows, but console exclusive games are hard to resist.
The movies and TV shows mostly comes from the other side of my desk, where my home server lives. That setup is a 2018 Mac Mini with an OWC Thunderbay 6 with six 14TB hard drives, for 72TB of usable storage. There’s also a Synology DS216j for Time Machine backups, and a Fujitsu ScanSnap iX500.
Getting my first ScanSnap back in 2004 might be the biggest quality of life improvement I have experienced as an adult. I can scan papers and then shred them in just a few seconds. 🎉 If I need it later, I can search by date, title, or even inside the OCRed text. (From my phone, if necessary.)
And what software?
Oh boy. This’ll probably take a while. 😅 Thanks to consulting, I typically set up between 2 and 5 new machines every year. To make that easier, I’ve scripted a lot of the setup in my dotfiles, which use homebrew extensively to install applications and command-line tools.
My programming work is mostly web development on macOS. My most common workdays involve a lot of MacVim, Terminal.app, git and GitHub, Ruby, Rails, and RSpec. It doesn’t happen every day, but I’ve also spent a lot of time working with Terraform, Docker, Node, and React, as well as a host of other frameworks and tools.
When I’m working directly in the terminal, I can’t live without the ruby switcher chruby, the search tool ripgrep, the directory jumping tool zoxide, and my minimalist git shortcuts (and magical git shortcuts). For my shell, I run zsh, with a custom powerlevel10k status line, displayed in 14pt Menlo Nerd Font.
Over the years, I’ve built up a pile of related handy tools that I often use to make my work easier. My favorites right now are:
- Fork, a great visual git client that lets me stage individual lines
- Dash, to download and search API docs incredibly quickly
- tmux, to run a CLI session shared by all my terminal windows and SSH sessions
- puma-dev, to run local dev servers with custom domains and HTTPS
- wishfish, to run SSH connections over wifi so they don’t disconnect when I undock from my desk
- bpb, which lets me sign my git commits without gpg
- pam_reattach, so I can
sudovia TouchID from tmux
In an example of going probably too far for a joke, I wrote my own homebrew formula to install a new source for the
fortune command. Now, every time I open a new shell, I see a random text-art My Little Pony saying a quote from @horse_ebooks. It’s incredibly stupid, and I love the results so much I also wrote an Alfred shortcut to make it easier to screenshot and post funny examples to the Tumblr.
When I’m not programming, I’m probably reading something. My biggest timesink is definitely Twitter, where I have had an account for checks notes …14 years? 🤯 In a similar kind of probably going too far, I wrote my own custom web service to format Tweets the way I want when posting them to my “main” Tumblr at indirect.io.
When I’m not on Twitter, I (somehow, still, in 2021) read a lot of RSS feeds using the excellent Mac-and-iOS Reeder. Everything not from an RSS feed goes into Instapaper, where I like to think I might, one day, read things. (Unless it’s a recipe. Those go in Paprika.)
For typical web browsing, I am a big fan of Safari with 1Blocker and 1Password. I’m not actively against any other browsers, and sometimes use Chrome just for the excellent devtools. But only Safari is optimized to the point where I can use my computer for multiple days on a single battery charge.
When reading long-form, fiction or non-fiction, I mostly use the Kindle app for iOS. I’ve been reading ebooks since back when that meant typo-ridden .txt files from the sketchier parts of the internet, and I’m both very happy and very upset with how ebooks have turned out today. The ability to buy almost any book I want, while the author gets paid, is absolutely amazing.
On the other hand, the way buying ebooks doesn’t mean you own them is incredibly upsetting. My personal workaround is to combine Kindle ebooks with Calibre and De-DRM. It means I do a bunch of tedious manual work that doesn’t change anything now, but at least I know that I have copies of the ebooks I paid for that will keep working even if Amazon decides to terminate my account.
When I’m writing my own long-form text, I mostly use Ulysses. It’s good for focused writing, and the sync across Mac, iPad, and iPhone is very helpful when I want to squeeze in writing time around other things. When I’m working with others, I’m a big fan of Draft for the editing experience that includes versioned diffs.
For anything with dated entries, like a work log, journal, or reading and watching diary, I’m a big fan of Day One, thanks to the date-oriented entries and sync across all my devices. If I’m writing Markdown, I’ll often use Marked 2 for a live preview. It’s even customized the theme from my blog, for an accurate preview if I’m writing a blog post.
I also spend a lot of time chatting online, mainly in iMessage, Discord, and Slack. After twenty years of intense online conversations, I’m glad messaging is available to almost everyone, almost everywhere… but I really miss being able to connect every chat backend to Adium, where I could have all my conversations in one app, and a single searchable log of all my conversations in my own postgres database.
Slack is a lot more approachable than IRC, and a lot more scalable than Campfire, but has repeatedly made clear that they aren’t interested in community users or moderation tools. Discord is deliberately made for communities, but it’s incredibly hard to find (or make) a middle ground between “basically empty” and “overwhelming firehose”. iMessage is very good at what it does, but it doesn’t help at all with the 8 other messaging apps I have to use to talk to people who won’t or can’t use iMessage. We made it to the future, and communication is amazing! …and also a huge bummer.
My day to day productivity suite is fairly boring: I use Apple Mail connected to Google Apps G Suite Google Workspace on a custom domain. I calendar from Fantastical, due to the combination of natural language event creation and continuous new helpful features for years. I’ve also just started using Cardhop from the same folks as a superpowered contacts app. For calculations, I’m a long-time user of Soulver, which hits the perfect sweet spot between calculator and spreadsheet for me.
To keep track of my own projects and todos, I’ve been using OmniFocus for more than a decade. I spend more or less time with it as my personal task tracking waxes and wanes, but it’s definitely been the consistent place I know I can track anything that I need to get done. For more general “keep things in it”, I’ve been using Notion. It’s better than any other personal wiki I’ve ever used, mostly because it does a pretty good job as both CMS and database, with excellent sharing and teams support.
I’ll wrap up with shoutouts to the random set of utilities that I feel like I need on any computer I use, in no particular order. Alfred continues to be the best launcher, clipboard history, and automation tool. I have written several of my own workflows to act as a GUI for scripts, and I use the Dash integration to look up API docs constantly. Karabiner-Elements is a must to force even badly-written programs to allow me to type in Dvorak, and to convert the capslock key into control if I hold it down and escape if I tap it. (Yes, I also have muscle memory for Emacs AND Vim. Oof.) I also use Little Snitch, so that I can control what programs are allowed to use the network depending on what network I’m connected to. For example, if I’m tethering to my phone, I don’t want Backblaze, Dropbox, or iCloud Photos to sync or back up my local changes.
Less of a requirement but significant quality of life improvements include:
- MenuMeters, so I can see when network, disk, or CPU usage has gone wrong
- Due, which I use for any todo or reminder that has hard time limits
- SoundSource, a replacement for the Sound menu that has superpowers, including per app volume controls and a menu for changing outputs
- Hammerspoon, which I use mainly for window management keyboard shortcuts
- Shareful, which adds a “Copy” item to the OS share menu (but why isn’t this built in, is what I really want to know)
- PeakHour, so I can see if my home internet connection is acting up
What would be your dream setup?
I think my hardware is getting pretty close. If this interview was 18 months ago, I would have said adding a gaming PC. Today, I’ve pretty much spent the last 18 months shopping and buying and setting that up, and I’m really happy with how it turned out.
In my dreams, I can afford a Pro Display XDR, and it’s paired with some future Mac Pro that has Apple Silicon. I’d also have the upcoming Keyboardio Model100 with Cherry Blue keyswitches and translucent keycaps, as well as an Apple Magic Mouse that somehow auto-switches when I connect a machine to my dock.
In my bigger dreams, all computers have error correction, and preserve human-entered data against crashes and physical or human accidents. It could be impossible to lose your work accidentally. We have the technology!
In my biggest dreams, all of that is happening in a world with open borders, guaranteed housing, gay marriage, free public healthcare, trans rights, and universal income. We’re not particularly close to that world, and I’m honestly pretty worried about whether the world as a whole is even moving in that direction, but I’m doing what I can to help things along.