Finished shipping a few features today. Ability to remove the phone number from 2FA, with email notifs for both add/remove phone.
Now it’s time to play soccer with my son. A well deserved break in between builds.
It has been so fun building as a solo founder. I no longer write code by hand; or less often nowadays. I am an engineering manager - reviewing and rejecting code more often. As a result, I’m more productive.
Locked it in with two guard tests: one fails the build on a barethrow new Error, one on raw console.*. Each test sits at the root of the tree it scans, so the path tells you its scope (lib-only vs whole-app).
This ensures error handling is done properly and doesn't rot back to other mechanisms.
Spent a while collapsing my backend's error handling onto one kernel: a BaseError class + 3 subclasses (Domain, Infrastructure, Invariant). Each class answers one question: how should the caller react?
The decision I went back and forth on most: errors from generic infra with no bounded context. E.g. discord webhook, rate limiter, otp persistence. Leave the 'domain' field absent instead of faking one for the sake of having one.
Introducing text-to-lottie: an open source skill and harness for generating production ready Lottie animations with codex/claude code.
$ npx skills add diffusionstudio/lottie
Prompts guide and repo in the comments.