Projects
A curated selection of my greatest triumphs and most spectacular failures. These are the projects that defined me, broke me, and then defined me again.
Project: Home Network That Requires a Dedicated Cooling System
Status: It’s running. Don’t touch anything.
Timeline: 2022 — The Heat Death of the Universe
What started as “I’ll just add a second access point” has spiraled into a 42U server rack in the guest room (the guests stopped coming). Three switches, two firewalls, a PoE injector that runs at the temperature of the sun’s surface, and a UPS that beeps at me like a disappointed parent.
The pièce de résistance is the dedicated air conditioning unit I installed specifically for the rack. My ISP technician cried when he saw it. Not from awe. From concern.
Technologies used: Unifi, PfSense, Proxmox, Kubernetes, spite, thermal paste, denial
Lessons learned: A homelab is never finished. It simply reaches a state of mutually assured instability.
Project: Custom Password Manager Because Trusting Professionals Is for Cowards
Status: I forgot my master password again.
Timeline: 2024 — Present (mostly present, sometimes absent)
I wrote my own password manager in Rust. It’s called crypt-keeper and it stores passwords in an encrypted SQLite database that I sync via a custom protocol that I designed while sleep-deprived and emotionally vulnerable.
The encryption is AES-256-GCM with Argon2id key derivation. My cryptography knowledge comes from a single Wikipedia article and a YouTube video that was mostly ads for a VPN service. I have no idea if it’s secure. I assume it’s not. I live with this fear every day.
The CLI interface is beautiful. It shows a little lock emoji when you log in. That alone makes it worth the risk of total data loss.
Technologies used: Rust, SQLite, AES-256-GCM, hubris, late-night caffeine
Lessons learned: Just use Bitwarden. Please. For your own sake.
Project: Self-Hosted Everything (The Digital Sovereignty Manifesto)
Status: I spend more time maintaining than using.
Timeline: 2020 — Whenever my last hard drive dies
Email. Git. DNS. File sync. Media server. Home automation. VoIP. If there’s a self-hosted option, I’ve spun it up, tuned it, broken it, fixed it, and then forgotten about it until it breaks again at 2 AM on a Sunday.
The pièce de résistance is my custom mail stack (Postfix + Dovecot + Rspamd + OpenDKIM). It took me three weeks to configure. I send approximately 12 emails per month. Each one is a sacred ritual. Each one arrives with the full SPF/DKIM/DMARC alignment that the gods intended.
Technologies used: Docker, Ansible, 47 docker-compose files, 3 unfinished migration scripts
Lessons learned: The cloud is just someone else’s computer. My computer is also the cloud now. I’ve become the thing I swore to destroy.
Project: IoT Coffee Automation That Evolved Into a Smart Home Empire
Status: My house now has more API endpoints than most SaaS startups.
Timeline: 2023 — I can’t stop. Send help.
I automated my coffee maker with an ESP8266 relay. Then I added a weight sensor to the coffee bag. Then I added a temperature probe to the water reservoir. Then I added a camera to count sips. Then I built a Grafana dashboard to visualize my caffeine consumption patterns.
Then I realized I could apply this same energy to literally every other appliance in my house.
I now have:
- Light switches that can be triggered via MQTT (but not by the physical switch, because I disabled that and now I have to use my phone to turn on the bathroom light at 3 AM)
- A toaster with a health check endpoint (it DDoSed my network once)
- A washing machine that sends me motivational quotes when the cycle finishes
- Blinds that open based on solar position and my circadian rhythm (they opened during a Zoom funeral)
Technologies used: ESPHome, Home Assistant, Node-RED, MQTT, my sanity (depleted)
Lessons learned: “Smart” does not mean “good.” It means “you can debug why the kettle won’t boil from anywhere in the world.”
Project: The Blort Programming Language
Status: 3 GitHub stars. 2 of them are mine.
Timeline: 2025 — Living rent-free in my head
Blort is a dynamically typed, interpreted programming language that I created because someone on the internet said “how hard could it be?” I am a weak person.
Features include:
yell "text" at the void— console outputgive back value— return statementagain— loop terminator (placed at the end of loops, like nature intended)- Garbage collection that sometimes collects the wrong things
I wrote a language server for it. Nobody uses it. I still update it. This is my life now.
Technologies used: Go, ANTLR, a complete misunderstanding of language design principles
Lessons learned: Creating a programming language is easy. Creating one that anyone would willingly use is impossible.
Project: This Website
Status: Perpetually broken then fixed then broken again
Timeline: 2022 — ∞
You’re looking at it. This very website. The one with the WebGL shader background and the ASCII skull overlay. The one that’s been rebuilt approximately 47 times in the past 4 years because I keep changing my mind about the aesthetic.
It started as a basic Hugo site. Then I added a theme. Then I replaced the theme. Then I removed the theme and wrote my own layouts. Then I added a WebGL background because the static background wasn’t enough. Then I added scanlines. Then a vignette. Then ASCII art.
At this point the page weight is 90% CSS animations and 10% actual content. This is a feature.
Technologies used: Hugo, WebGL2, Caddy, Docker, questionable life choices
Lessons learned: A personal website is never finished. It just reaches a state where you’re tired of working on it. Welcome to that state. I’ll change it again next week.