I like making things.
And sometimes breaking them too 👀
Recent Photos
An airplane flies through the sky carrying water buoys Flowers and grass are blurring the foreground of a view of a river cutting through a forest Looking across the lake at Pine trees going up a steep snow-covered mountainside A moss covered Rocky Ridgeline extends into the distance surrounded by pine trees Islands and bands of land with small houses on them are interspersed with water. A lake in the foreground has an island in the middle. Go to Photos →
Recent Posts

Integrate Backblaze B2 with TinaCMS media library

Through a couple twists, I figured out how to setup the media manager for TinaCMS to work with Blackblaze B2 (and any S3-compatible provider). The media library is a critical part of its goal to allow users to control their content, and B2 provides scalable, cost-efficient storage.


Relative timestamps in Astro JS

Migrating to Astro required rethinking how to handle relative timestamps on the client side while dealing with a highly static website. It's doable, but I had to work around a minor Astro quirk.


Rebuild cached static website Docker layers in Easypanel

Self-hosted PaaS like Easypanel make serving continuously deployed websites a breeze. Unfortunately, they don't integrate so easily with external data used during a static website build process.