Reusable NixOS images on Hetzner Cloud
Deploy NixOS configurations to Hetzner Cloud, fast.
Notes on code, open-source, security, and tech in the social sector.
Deploy NixOS configurations to Hetzner Cloud, fast.
A clojure ring middleware for extracting client IPs from HTTP headers without the usual security vulnerabilities.
Simplifying Datomic Pro deployments for NixOS and non-NixOS systems.
Modern Java bindings for libwayland that let you create Wayland clients/servers without stepping outside the JVM.
Creating a screen-free, RFID-powered audio player for my children using Raspberry Pi, Clojure, and a lot of soldering.
A reflection on taking down my old travel blogs and how both the internet and I have changed.
How to build a DIY 4G/LTE failover solution for Unifi USG using a Raspberry Pi and a USB dongle.
Say it with me: I will not have Google-scale problems. I have customer-scale problems.
In the aftermath of the Arab Spring, I consulted on a project developing a mobile application for citizen journalists.
How well-intentioned security recommendations can create dangerous vulnerabilities for human rights defenders working in challenging contexts.
Learn how to use a Yubikey instead of a smartphone for Google's 2-factor authentication.
PBM gaming created experiences of depth and anticipation that modern games can't match—and there's still a place for this imaginative style in our fast-paced world.
Piet is a programming language where code looks like abstract art. Frustrated by the lack of tools, I built a graphical IDE to make coding in colors actually usable.
Internet technology is seeing an overall trend towards increased connectivity (always on), information sharing (openness), and most importantly, data existing in "the Cloud" (anywhere access)