RSSAmplifier

Blog

BackSlasher

My blog

blog.backslasher.netRSS feed ↗10 posts

Latest posts

Returning to The Sims: 128 errors in a fresh lot

This is part of TSaaS (The Sims as a Service), my series about adding LLM-plays capability to The Sims 1.

Downloading a data uri as file

While browsing some website, I ran into an audio player that had a source that was embedded: <audio autoplay=""> <source type="audio/mpeg" src="data:audio/mpeg;base64,...LONG_BASE_64..."> </audio> I wanted to save that audio, but it wasn’t trivial (no “save as” ui, no clear resource I can save from the network tab). I ended up with a small reusable method. Start with right click the source element…

ESPHome proxy for Switcher

I have a Switcher at home, which is a smart water heater controller. It lives in the IoT wifi jail, where they’re not allowed to reach to the open internet, and can only reply to requests from other devices (i.e. HomeAssistant). My problem is and was that the Switcher updates state via UDP broadcasts, which don’t propagate to the HomeAssistant which lives in another subnet. For years, I’ve been…

“Can you paint this apple orange?”

One of my gigs was about migrating a workload from one hyperscaler to another. I was paired with a team lead that was chronically busy, which is why they couldn’t attend to this project themselves. Managed Kubernetes on both ends meant I didn’t have to worry about images and server provisioning. Easy in and out, I figured. The problem started when we discussed performance comparison. The original…

Audible MP3 Downloader

I have a friend that is an avid Audible user. They have a big library and enjoy the service very much. They are also an avid swimmer, and have a water-proof media player they can listen to when swimming. They would really like to listen to legally-purchased audiobooks in the pool, but found no proper device that can both do Audible and survive underwater.

Ship Today, Scale Tomorrow #1: Different Servers for Different Jobs

Working with early-stage CTOs, I see two traps repeatedly: over-engineering that steals time today, or decisions that choke growth tomorrow. I wanted to share lessons from the field.

Getting a Git remote from a Sapling repo

Assuming you have a git-backed sapling repo (e.g. you used sl clone on a git repo, or sl init --git) and you want to access the commits from a git repo, here is the git remote incantation: git remote add local $PATH_TO_SAPLING_REPO/.sl/store/git

Flashing ESPHome with Docker

ESPHome’s WebSerial connection didn’t work for me, and the computer running ESPHome was a bit far. Instead, I decided to run a local copy of ESPHome to flash the firmware over USB, and figured it’s an incantation worth keeping

Tapestry

This is a big writeup of a project I’ve been ideating for a couple of years, and working heavily on in the last couple of months. It involves Python, hardware, 3D printing, a bit of computer vision, and a surprising amount of vibe coding . All code and 3d models are available in: BackSlasher/tapestry-node BackSlasher/tapestry-controller BackSlasher/tapestry-case What and why TL;DR - a big display,…

Introducing ESLint to your codebase smoothly

When adding a linter to an existing codbase, my methodology is as follows: Create lint config files and approve them with the team (people have strong opinions about tab widths), add them to the repo Run the linter a single time over the entire codebase, autofixing what it can, and adding comments to ignore what it can’t. Add some pre-commit / pre-merge rule to run the linter and preventing new…