Crafted RC | Maker Gear & Tools Curated by Code
← Back

I Built the Site I Wanted, Then It Got Weird

By Joe Stasio on May 1, 2025

I started building an anonymous posting site. Something like LowBrow meets Reddit, but simpler—and with Stripe hooks. I wanted weird stuff like SuperVotes (paid boosts) and maybe even the ability to delete someone else's post if you paid enough. It made sense in my head.

Somewhere along the way, I lost the concept and just kept building. Before I added CAPTCHA, bots had already created 200+ accounts. Instead of wiping them, I promoted them to my QA team. Now they simulate real users—voting, posting, and stress-testing the whole thing. Controlled chaos, but fun.

I wrote everything to be fast and purpose-built for the Pi 5. It's lean, cache-aware, and relies heavily on Redis. Eventually I’ll Dockerize the whole thing and deploy across multiple Pis with a load balancer, but right now I’m still battling Docker image builds for the Pi 4. One thing at a time.

On the hardware side, I cloned the system from SD to NVMe with `rpi-clone`. The whole process took about 30 minutes, and it just booted. I edited the boot order in EEPROM, flipped it to boot from NVMe first, and that was it. No issues. Paired with the Argon ONE V3 case, it’s a tight setup. The fan, the temps, the IO—rock solid. I’m a fan. (Literally.)

I outgrew my 5-port switch last week and had to move to an 8-port. Between Pis, a camera hub, and other dev boards, I’ve officially saturated the lab. It’s a good problem to have.

I’ve also split my work into dev and prod environments, which I know is standard, but I still enjoy setting up these little stools and systems for myself. Each one feels like a step closer to something real.

Probably half of my development time is spent on admin tools. It’s fun to write internal stuff that makes things faster or more visible. And I need them. I’m now using my own Core API product to build the very tools that help me maintain the system.

Recently I had to delete a column because I set the wrong data type. I could’ve just changed the backend, but I added a column delete feature to the API instead. I try to build every new feature like I’m justifying it to a future user—because I kind of am.

I'm my own customer now. That keeps it honest.