Down the ergonomic rabbit hole: Dev Tool Time with Amir Rajan
Wrist pain and fatigue were the start of indie gave developer Amir Rajan's journey in ergonomic hardware setups. As a dev and the co-creator of DragonRuby Game Toolkit, Amir needed to find a way to write code week to week, for years to come. When Amir joined us for Dev Tool Time, he shared his setups over the years, the motivations between different pieces of hardware, and the software he uses to build games.
You can watch the recording of this episode at the bottom of this blog post, but let's take a first step with Amir down the ergonomic rabbit hole.
Developing ergonomics
A few years ago, Amir was hunched over his laptop. When he realized he needed to change his setup for his own health, he made a remarkable shift to get rid of his desk, set up stacked 38" monitors, and moved to the Ergodox keyboard, which is a split, ortholinear keyboard.
Will be streaming on Twitch today using my new rig. Got eye tracking working so you’ll see exactly where I’m looking when I code. pic.twitter.com/Toc6h1XB7M
— Amir Rajan (@amirrajan) June 16, 2018
Over the next few years, he refined his hardware for comfort, work, and more efficient layouts. He built new keyboards, trying out different mechanical switches (check out the show notes below for some of them), and developed muscle memory with a phonetic mapping for some keys and operators, set up with QMK. He went back to a traditional desk, tried different task chairs, and fine-tuned their height to keep his knees and feet in the right places.
Two significant monitor changes led to Amir's most recent iteration. He purchased one, then another, 49" curved, ultrawide monitor, which provided the screen real estate for the right number of correctly sized windows. Then, he replaced one of these with the Apple 32" Pro Display XDR monitor, solving his need to verify color levels and quality as he built games for different platforms and displays.
Iteration 16 of my dev setup: pic.twitter.com/xwtMJE32hc
— Amir Rajan (@amirrajan) September 23, 2021
Amir keeps an updated gist with links to his setups since 2018. Check them all out here: Evolution of Amir's battle stage!
Developing ergonomically
Amir's hardware setup has developed over time to increase his efficiency and improve his workflows, even as it decreases the physical stress on his body. His software development environment has done much the same. Though Amir uses Vim and modal editing, he wanted a configuration language better than Vimscript. Emacs, with evil-mode
for modal editing and keybindings, provides a profoundly moldable development environment. To keep it lightweight and responsive, and inheriting from his time with Vim, Amir uses Emacs in the terminal–Alacritty, in his case.
DragonRuby Game Toolkit emerged from a desire for a game engine with a fast feedback loop. Ruby proved to be a powerful language and its dynamic character keeps open the possible futures of any game Amir works on. The foundation of a game–its programming language–needs to be flexible enough to not restrict it.
The ergonomic long-game
In designing and adapting for comfort, health, and efficiency, Amir isn't focused just on today, next week, or even next year.
"Philosophically, the whole journey I'm taking is based on the idea that I'm going to be programming the rest of my life. Every iteration, every improvement I make, every dive into the bowels of Emacs comes at that upfront investment to learn and deal with these pains so that over time this environment becomes home to me."
Show notes
- A Dark Room Android
- A Dark Room Nintendo Switch
- A Dark Room iOS
- A Dark Room
- Alacritty
- Apple Pro Display XDR 32" monitor
- Bfo-9000 keyboard
- Bias lighting post on Coding Horror
- Brad Victor - Inventing on Principle
- CherryMX Speed Silver switches
- Ctags
- Dank Mono font
- Dell 38" curved monitor
- Dell 49" UltraSharp curved monitor
- DragonRuby Game Toolkit
- DragonRuby
- Emacs
- Ergodox keyboard
- Evil for Emacs
- Evil-surround for Emacs
- Havit low-profile keyboard
- Herman Miller chairs
- Human scale chairs
- Kailh boxwhite switches
- Nyquist Keymap File
- Nyquist keyboard
- Odyssey G9 49" monitor
- QMK keyboard firmware
- ReMarkable 2 e-ink tablet
- Ruby
- Tmux
- Tobii EyeTracker
- Topre switches
- Zilent v2 switches
Watch the recording
Check out the recording of the episode below, and be sure to sign up for upcoming events!