I’ve posted a few keyboard builds here over the years. Each one was me looking for some kind of efficiency, or just wanting to try something different. This time, I wanted to solve 3 problems: I wanted to move my hands less I wanted to really explore layers and combos I didn’t want to buy… Read More


I have 2 linux machines: local and remote. local is the laptop I carry around to different networks–into the office, coffeeshops, library. But I want to be able to log into remote when I need it. It’s pretty simple to do this with tailscale + x11vnc. SSH keys On local: ssh-copy-id remote and enter the… Read More


A story about a raspberry pi laptop Once upon a time I was excited about typewriters. Wait a minute, I am still excited about typewriters. Once I was excited about typewriters, but also computers. I knew I liked the immediate typing experience and the “nothing can interrupt me now” flow of having one and only… Read More


On my new pi laptop (to be described in a later post) it always boots to console without numlock. I would prefer numlock to be ON always. Raspbian GNU/Linux 10 (buster) Working directory /home/pi/Dev/ Script setNumLockOn INITTY=/dev/tty[1-8] for tty in $INITTY; do setleds -D +num < $tty done Service setNumlock.service [Unit] Description = Set numlock… Read More


Conda solves a bunch of python environment problems. It makes it easy to manage different environments and use different dependencies for different projects. But sometimes it hangs and then tells you that the packages you are trying to install won’t work together–but not exactly WHY. I spent much of the day trying to debug a… Read More


There are many good fonts, but a few are terrible. In linux, we can force a replacement of a particularly hated font: Comic Sans Terminal sudo vim /etc/fonts/local.conf In this file, this will do it: <?xml version=”1.0″?> <!DOCTYPE fontconfig SYSTEM “urn:fontconfig:fonts.dtd”> <fontconfig> <match target=”pattern”> <test qual=”any” name=”family”><string>Comic Sans MS</string></test> <edit name=”family” mode=”assign” binding=”same”><string>Ubuntu</string></edit> </match> </fontconfig>… Read More


Purpose Audio baby monitors are cool and all, but how do you know when your 1-year old decides she’s big enough to climb out of the crib? Enter the baby spycam. This project follows: jacksonliam/mjpg-streamer (github) start-service-at-boot (Linode) Download and build Create a dev directory, clone the github link, and compile for install. mkdir dev… Read More


I am a linux guy. Since Windows Vista, I’ve found that I prefer the simplicity and predictability of open source software to the arbitrary (and silly) business decisions that Microsoft keeps foisting on its users. However, I also run Windows in order to use Excel and for games. I have come to peace with it–mostly.… Read More


I built a one handed keyboard last year and it got me hooked. This week I finished my third keyboard build: I’ve been using may handmade split planck for a while now, and I love it. It is fast and efficient and a joy to use. However, it is not awesome for games. The lack… Read More


My most recent project is a bit more difficult to show. Instead of using steel tools to make wood a different shape, this one is all in bits and bytes. I wanted a simpler way to share links to this blog, so I bought another domain (I know, this hobby is getting expensive). After much… Read More