Geo-distributed blog for $7/mo
Just needed to sell my soul to Jeff
Reverse engineering a basic gym app
modern solutions to problems that don't exist
Adding OCR support to the local translator
we have Google translate at home
Using local translation models on Android
...and losing my sanity along the way
Making a client side IPVS-based load balancer
eBPF fun for the whole family
Spawning VMs for unreasonable workloads
Running VMs just because it's quick and easy
Booting x86-64: from firmware to PID1
All I (now) know about booting x86-64
A skeptic's first contact with Kubernetes
Key concepts & much deserved YAML ranting
Learning about PCI-e: Implementing an option ROM
Getting the PCI adapter all the way to Linux
Learning about PCI-e: Driver & DMA
Creating a simple driver for a simple PCI-e device (in QEMU)
Learning about PCI-e: Emulating a custom device
Creating a very simple PCI-e device in QEMU
Investigating crashes on self-modifying code
Replacing vDSO entries on more architectures with a bang
Exploring HUB75
Driving a HUB75 display from ESP32 and RP2040
Homelab backup LTE connection
Setting up a wireguard backup tunnel over LTE
Minimizing Linux boot times
Getting Linux to boot in 6ms
Running a cross-architecture Nomad cluster
Spicing up a robot vacuum
Playing sound on a robot vacuum
Writing a compiler & Lua runtime
"strict mode" Ansible
Applying software-engineering practices to our IaC
Rust's Default in Python
Implementing recursive defaults for dataclasses with dacite
Cursing a process' vDSO for time hacking
Replacing time-related vDSO entries at runtime
Pico8 performance
Improving the performance of my RP2040 based Pico-8 handheld console
Making a handheld Pico8 console
Building a RP2040 based Pico-8 handheld console
Measuring keyboard to display latency
Building a GTK based mobile app
Learning GTK to build a mobile hackernews app, with ad-blocker and reader mode
Docker-based images on baremetal
The process behind creating multiple flash-able OS disk images from Dockerfiles and swapping between them on the host
Building an MQTT client for the Kindle
The never-ending rabbit hole I found while trying to build a simple MQTT client for the kindle
Cross compiling for OpenWRT platforms
Reverse engineering the Bose QC35 bluetooth protocol
Creating a golden CentOS image
How to create a flash-able CentOS disk image
Flashing Linux disk images from an initramfs
What is involved in flashing a disk image over PXE, includes grub, kernel, initrd and disk expansion
Revamping an old tv as a gift
Putting a raspberry pi in a 60's CRT for a gift
Bookworm - Utility to download books via IRC
Developing a tool to download e-books
BSD inspired network setup
I replaced my home dnsmasq with nsd, unbound and dhcpd for a more reliable environment.
Messing up backups
Never try to restore backups when sleep deprived
Simplifying the IOT framework's API
A small refactor in my IOT framework with the goal of simplifying the API
Logging and remote debugging on the IOT house
Extending the capabilities of dumb devices
Hooking non-smart devices into the house automation framework
Automated Debian install
Fully automated debian vm creation
Integrating a Kindle into house automation
Rewriting history on Firefox to get reddit's old UI back
2018-11-18
OTA updates for the IOT house
IOT house with Sonoff and MicroPython
Segregating my home network
Monitoring my home network
3D printer woes
Custom router with espressobin
Hacking the HG659
2018-03-10
GPU Passthrough in Debian
2018-02-27
Debian stretch headless install
Meta blogging
2017-08-17
Good luck, I'm behind 4 reverse proxies
2017-06-29
nginx, caching and X-Accel-Redirect
Patching over Backblaze's B2 lack of CORS
2017-04-03
Backups, Backups, Backups
Migrating single disk to RAID1 on Debian