2026-03-18
TL;DR: I built a digital version of the popular poetry magnets kit. You can play in your browser here or view the code here.

I didn’t post last week because I spent all my time trying and
failing to set up a pleasingly small template repo for Android
development with Rust. My goal was more or less to achieve the
simplicity of gcc foo.c -o foo in an Android context. This
turned out to be really hard because of the high complexity of Android,
some of which is unavoidable but the great majority of which—in my
opinion—is artificial. The best realization of this dream to date is rawdrawandroid,
but I’d rather not write C when I could be writing Rust. android-activity
exists and actually works pretty well, but the enormous
boilerplate of wgpu discouraged me. Maybe someday I’ll
go back and try to replicate rawdrawandroid in Rust by
binding directly to the Android NDK, but in the short term I was
generally feeling pretty unhappy with the technical bureacracy required
to paint pixels to my phone screen.
I decided that I needed a palate-cleansing project, so I built this
little toy. This was a good excuse to learn egui, whose
immediate mode approach to GUI management is refreshingly direct. The
app code is only about 200 lines and compiles to a 3.5 MB WASM blob,
which is larger than I’d like but probably acceptable because it gets
cached anyway. I built the repo with the thought that maybe I’d
eventually add a collaborative mode where multiple users can move
magnets around on the same board in real time, but I didn’t get that
far. It might also be fun to add a way to save screenshots. For now the
app runs locally and saves its state to localStorage, so
magnet positions persist across reloads. I copied the word
list from the official (physical) product’s site.
It turns out to be pretty fun to collect the randomly scattered tiles into abstract poems and assign meaning to them, which I guess shouldn’t be surprising because that’s the whole point of the original product.
Next week I’ll get back to the piano.
