My posts on design.

I write about anything and everything that interests me.

Vintage telescope bearing Google’s logo, hourglass, and coins against a starry sky and clouds.

Why I Didn't Use Google Programmable Search

Google's search API sounds perfect for static sites. It isn't. Here's why the pricing model and indexing delays make it impractical for most blogs.

A floating grassy island with a cottage and giant pink slabs amid planets and stars.

Meilisearch is the Best Search You'll Never Need

Self-hosting Meilisearch with Docker, Traefik, and Astro - complete with API key management, content indexing, and rate limiting.

A glowing compass rests on a central map tile, surrounded by ancient maps in space.

Why I Switched from Orama to Pagefind

Why I use Pagefind: A deep dive into chunked indexing, bandwidth scaling, and setting up a production-grade search for Astro.

Open wooden card catalog drawers float among clouds and planets, revealing a glowing spiral symbol.

The Right Way to Add Orama Search to Astro

Stop using the Orama Astro plugin. Here is how to build a type-safe, metadata-rich search engine that actually works in Dev Mode.

A futuristic laser machine blasts stacked cardboard boxes amid flying debris and vibrant clouds.

Honey, I Shrunk my Frontend Bundle Size!

How I replaced Lottie with Canvas sprites, migrated to Preact, and removed heavy dependencies to cut over 300KB from my bundle.

Four watercolor paintings—coastal village, cat, teacup, and bicycle—hang beneath a brass sliding rail.

Automating Accessibility: Generating Alt Text with AI

How I automated accessibility across my portfolio by building a build-time pipeline that uses Gemini Flash to generate accurate alt text for hundreds of images.

Framed mosaic-style painting of a coastal village beneath a warm sunset, with a cursor visible.

Building a Smooth Pixelation Reveal Effect with Canvas

How I built a high-performance, interactive pixelation effect for image transitions using HTML5 Canvas and custom easing interactions.

Color palette points toward framed watercolor of a coastal village beside blue sea.

How to generate blurry placeholders for your images

How I eliminated layout shift and improved perceived performance by generating 20px base64 placeholders automatically at build time.