Home

Recent Posts

Raspberry Pi 4 Model B Bare Metal Debugging with GDB and OpenOCD

Instruction for setting up an efficient workflow for bare metal development for the Raspberry Pi 4 Model B including full system reset from GDB - no more power cycling!

Raspberry Pi 4 Model B Das U-Boot

Setup a Raspberry Pi 4 Model B to boot using Das U-Boot

Uwe Steinmueller Printer Evaluation Image

A short descripton of an excellent printer test image. A link to it is also included because the original website link does not work.

Easy Privacy-Friendly Self-Hosted Website Analytics with GoatCounter

A quick overview of setting up GoatCounter website analytics with Postgresql, NGINX, and LetsEncrypt on Debian 11 (Bullseye).

Hide Powered by Commento

A simple trick to hide the “Powered by Commento” branding.

Canon PRO-1000 Printer

Various tips, tricks, and advice for the Canon PRO-1000

My Favorite Photos

These are some of my favorite photos that I’ve taken over the years.

Asciidoc: A Superior Alternative to Markdown?

Recently I’ve been trying out Asciidoc as my go-to markup language for text docs.

Neovim and rust.vim Plugin

rust.vim plugin is included with Neovim 0.6.1, but it is buggy. Manually installing rust.vim fixed the bug I was noticing.

Display Backlight Control in the Sway

This is just a quick reference for anyone setting up Sway on a laptop. By default the brightness control function keys do not work. To get them functioning, there are a couple of not-so-obvious steps required.

Building a skarnet.org s6 Init System

Per skarnet.org/software/ s6 is “skarnet.org’s small and secure supervision software suite. Comes with an ultra-fast init replacement, process management tools, an asynchronous locking library, and more.” After a little bit of reading and a lot of tinkering, I was able to assemble an s6 based system and learned a lot about linux userspace initialization in the process.

Using a Chroot

A chroot is an operation that changes the apparent root directory for the current process and its children. It effectively isolates the current process and its children from anything outside of the new root directory. This can be useful for running or building software in a clean environment with only the required dependencies. The resulting environment is called a chroot jail.

Building and Installing the Sway Wayland Window Manager on Debian 10 Buster

Wayland isn’t mainstream quite yet, but if you want to experiment with it and you prefer tiling window managers, then Sway is the way to go. However, building it on Debian requires a little work.

Gentoo Install

My first Gentoo install.

A week with Neovim … Meh

I tried the switch to Neovim for a week and was underwhelmed by the differences between it and Vim 8.1, but I love what a little competition has done.

vimrc from Scratch: Vim vs Neovim Defaults

And now for something a little different…

vimrc from Scratch: My Defaults

My “sane” vimrc default settings.

vimrc from Scratch: Debian Defaults

Using the default Vim configs in Debian as a starting point for a clean-slate custom vimrc.

Serving Default index.html Files with AWS S3 and CloudFront

AWS S3 combined with CloudFront is a great way to serve a static website, but I found a gotcha that was almost a deal killer for me.

gRPC Authentication with Keycloak in Go

A credentials.PerRPCCredentials implementation for authenticating with a Keycloak server to get an access token and submitting it with every RPC call.

Hosting a Static Website on Google Cloud Storage

There are a lot of ways to build a simple website, but for the somewhat technically inclined (i.e., you know what CLI and git mean), a static site generator is a compelling option.