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 output
  • give back value — return statement
  • again — 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.