Posts
2022
Understanding the Nintendo Switch secure boot vulnerabilities
Improving physical security at a hotel
How to run an unattended install of Alpine Linux
Tinyrenderer in Elixir (part of it, anyway)
Traveling 20+ years back in time
Generating birthday party invitations
How to install low dependency Let's Encrypt client
Upgrading SSL (TLS) on Kerio Workspace 2.1.4
Three commands to make serial console awesome
Replacing pkexec with sudo
Configuring IPv6 on EdgeRouter for Fiber7 and PiHole
Fixing memif's poor performance in a VPP tutorial
BEAMitude: What if GenServer.call times out?
Getting Erlang's observer working on Alpine Linux
2021
Rethinking number formatting
How to call renameat2 syscall in Ruby
Controlling fan speed the right way
Loadtesting EdgeRouter 4 in more depth
Making AlpineLinux load ZFS keys for all pools on startup
Reversing Yamaha SR-C20A [by Michael Obst]
Engineering a better Anagrammer, part II
Fixing grub 2.06 "error: verification requested but nobody cares"
Engineering a better Anagrammer, part I
Beating procrastination with these 4 simple (but hard) techniques
Arbitrary workflows with GitHub Actions for fun and pages
Loadtesting bunch of routers
Succeeding at a network loadtest
Failing at a network loadtest (for now)
Graphviz plugin for Jekyll
Adding capacity to an existing ext3-on-luks-on-LVM-on-raid1 setup
Making an iOS custom dialer app with Shortcuts and elm-spa
How cryptocurrencies keep going to the moon
6 burning questions for the self-proclaimed blockchain singularity (dfinity)
Putting an old digital clock (with an outdoor thermometer) on steroids
Yamaha YAS-207 vs. Shairport Sync over TOSLINK
Yamaha YAS-207's Minimal Client (and a Soundbar Fake)
Yamaha YAS-207's Bluetooth protocol reversed
Yamaha YAS-207's Bluetooth protocol: first real progress
Streaming Bluetooth Capture Data to Wireshark without Btsnoop Net Support Enabled
Yamaha YAS-207's Bluetooth protocol: basic recon
Reversing the Yamaha YAS-207 infrared remote protocol
Multi-weekend project intro: Putting the fear of AirPlay into Yamaha YAS-207 soundbar
Comparison of USB Bluetooth adapters in Linux
The evolution of (my) note taking
Urbit :: the good, the bad, and the insane
How to make a USB cable for APC Smart-UPS SC450RMI1U
Setting up secure boot with fully encrypted filesystems on Alpine Linux
Fixing IKEA Trofast lid with a simple 3d model
2020
Cracking the three.js object fitting (to camera) nut
3D printed curtain holder
Fixing an umbrella with 3D printing
Designing a curtain rod holder for 3D printing in Fusion 360
Designing a 3d-printed anti-gravity pen holder
2017
Designing a towel rack for 3D printing in Fusion 360
Designing a 3d printed vegetable peeler hook
2008
Wordpress leading whitespace fix
How to setup passwordless disk encryption in Debian Etch
A HTTP(S) healthcheck script
Why I LOVE Apache httpd hooks and pools
A simple Ruby-based HTTP request tracer
2006
GeoIP update client + server
Apache patch to optionally disable Partial Content
How to hunt for kernel memory leaks
Master's Thesis
Diplomová práce
Spec.rb, a saner alternative to Markdown
2005
Guard free space and status of your RAID devices
Eicar and Gtube are your friends
How to prevent hotlinking without mod_rewrite
My email address
Conway's Game of Life redefined
On file change run...
2000
Test page