This is my digital gardenβ€”a place where I share thoughts, projects, and ideas in various stages of completion. My philosophy is simple: just get things up. Perfect is the enemy of done, and I’d rather share something that’s 80% complete than wait for that elusive 100%.

Some posts are works in progress, marked with their completion percentage. Others are finished pieces, but even those might get updates over time. Nothing here is truly β€œfinished”!

DIGITAL GARDEN 🌱

Welcome to my digital gardenβ€”a living collection of ideas, notes, and thoughts that grow over time. Unlike traditional blogs with polished, finished posts, this space embraces the messy process of learning and thinking in public.

Some posts are seedlings (just starting), others are growing (being actively developed), and a few reach evergreen status (well-established). TILs (Today I Learned) get posted frequently as I discover new things.

Feel free to wander, explore connections between topics, and watch ideas evolve. Read more about 🌱 digital gardens.

FEATURED POSTS

Building a resume website with eleventy

i share how i built a fully customizable resume website with eleventy, complete with seo-friendly features and pdf generation.

Deploying this site+and many others easily

EasyPanel gives you a cPanel/Heroku (retro!) way of managing sites, but self hosted. Click to deploy a template, which is thousands of self-hosted services.

How to Information at Work

How to listen and process information at work, leading to stronger relationships and less checkins

GROWING IDEAS

TODAY I LEARNED

TOPIC COLLECTIONS

RECENT LINKS

ALL POSTS

JoCo Cruise 2025

A week-long cruise with a bunch of nerds!

Blog CLI tool: my secret weapon

My small typescript CLI I use to automatically scaffold blog posts

Using :has() for parent selectors

How to use the new :has() selector in CSS for parent element selection

CSS Grid Techniques

A growing collection of CSS grid techniques and examples