Stop Using TRRS for Split-Keyboard Interconnects!

TRRS (Tip Ring Ring Sleeve, or, as you may know it, “headphone jack with microphone support”) cables have long been the go to connector between split keyboard halves. They are cheap, compact, and thanks to their popularity, come in a variety of aesthetic styles. However, TRRS jacks were only designed for passive electrical components, and expose one large flaw when used actively. When a TRRS cable is (dis)connected, the tip of the plug will slide past every single contact of the jack....

2025-4-5 · Gabe Venberg

Running non Nixpkgs services on NixOS, the lazy way

NixOS is really nice for self hosting. Anything that has a NixOS module can be hosted in a few lines of nix code. But what if the service we want to host doesn’t come with a NixOS module written for us already in Nixpkgs? This is where NixOS can be a little hard, as a guide on setting up a service in Debian or Arch will rarely work on NixOS. Of course, the ’nix way’ would be to write your own package and module for it, but that can be a daunting task....

2025-4-5 · Gabe Venberg

Rust on the Ferris Sweep

The other day, I stumbled upon RMK, a keyboard firmware written in Rust. Given that my Ferris Sweep has a Ferris the crab logo on the silkscreen, it felt only fitting that I flash it with RMK. Since I first built it, my Ferris Sweep has been running QMK, a very mature C-based keyboard firmware. QMK is a great project, and doing basic keymaps for an already-supported keyboard is straightforward and well-documented....

2025-3-29 · Gabe Venberg

The Modern CLI Renaissance

Over the past few years, it seems like the rate at which new CLI tools are being written has picked back up again, accelerating after seeing relatively little activity between ~1995 and ~2015. I’d like to talk about this trend I’ve noticed, where people are rewriting and rethinking staples of the command line interface, why I think this trend might be happening, and why I think this trend is a good thing....

2024-9-4 · Gabe Venberg

Nushell first impressions

I’ve been experimenting with the tools I use on a regular basis lately – switching up my shell, terminal multiplexer, and even trying out other editors. Today, Id like to focus on my experiments with my shell. My old setup Before this, I had been using a minimal zsh setup for a long time, with only built in features and a handmade prompt. Zsh is a good shell, probably one of the best POSIX shells out there, and I still use it when a POSIX shell is needed....

2024-3-1 · Gabe Venberg

Building My New Keyboard.

I’ve been using a split keyboard at home now for several years (specifically, the UHKv2, though nowadays I probably would have gone for something ortholinear) and I’ve always wanted one for the office. The problem was, if I was going to get a new keyboard, I wanted it to be for both the office and travel, and most prebuilts around are not that portable. I also was not confident enough in my soldering skills to solder the SMT diodes found on many handbuilt designs out there....

2024-2-6 · Gabe Venberg

Rust Embedded Unit Testing

I’ve been messing around with embedded rust recently, using the BBC micro:bit as a learning platform. Its really cool to see a high level language achieving the same results as low level c. However, one of my favorite features of rust, the ease of unit testing, is a bit less straightforward to do in cross-compiled, no-std projects. Obviously we cant run tests on our local machine that rely on hardware only found on the target board, but most of a project is going to be logic independent of the hardware its running on....

2023-10-28 · Gabe Venberg

Dotfile Management with GNU Stow

So I’ve been using git to managing my dotfiles since [checks git log]… 2018. At first, I was going to write some inevitably brittle shell script to handle symlinking from the dotfile repo to where each file should be, but before I got about to implementing it, I discovered stow. Now, after using stow for dotfile management for over 5 years, I figure I should really document exactly how I go about managing my dotfiles, with an aim to help other people who want to have an easy to manage dotfiles repo that can be quickly deployed on new machines....

2023-7-29 · Gabe Venberg

Getting the Nextcloud client to save login info on arch Linux (or any barebones Linux distro)

During the 5 or so years I’ve had Nextcloud, I’ve always been quite happy with the web client, but the device clients… need some work. I recently figured out how to resolve one of my biggest pain points on the Linux desktop client, and am recording it here, mostly so I don’t forget next time I setup a new computer, and to save others with the same problem from endless forum post and GitHub issue crawling....

2021-12-12 · Gabe Venberg

Mapping caps lock to ctrl in the TTY

In the past 2 years or so, I have been using my caps lock key as a separate ctrl key on my desktop keyboard. This is very easy to do in X11 with a setxkmap command. However, with my laptop, I try to run without X as much as possible. (I’ve found it make a nice, distraction free environment, and it seems to be pretty good for battery life) Obviously, without X, we cannot use setxkmap....

2021-5-23 · Gabe Venberg