Building CodeLab: Why I Finally Made My Own Blog
The story behind creating this blog, the tech choices I made, and what I learned building it with SvelteKit, Tailwind, and a bit of AI assistance.
Building CodeLab: Why I Finally Made My Own Blog
For years, I’ve been telling myself I should start a blog. You know how it goes—you learn something cool, you think “I should write about this,” and then… you don’t. The excuses pile up: not enough time, who would even read it, I’ll do it when I have the perfect setup.
Well, here we are. This is that setup, and this is me finally doing it.
Why Now?
I’ve been coding for a while now, jumping between different technologies and projects. Game development with Bevy and Rust. Backend systems with Supabase. Mobile apps with Flutter. Web stuff with Svelte. Cloud infrastructure with Kubernetes. Each time I figure something out, I find myself wishing I had written it down somewhere.
Not for anyone else, really. For me. Because six months from now, I’ll have completely forgotten how I solved that weird ECS bug, or why I structured that database schema the way I did.
So CodeLab isn’t really about building an audience or becoming a “thought leader” (ugh). It’s about having a place to dump my brain, organized by the tech stacks I work with most. If someone else finds it useful, that’s a bonus.
The Tech Stack
Choosing the stack for a developer blog is dangerous territory. You could spend months evaluating options and never actually write a single post. I gave myself a simple rule: use what I already know and enjoy.
SvelteKit
I’ve been using Svelte for a while now, and SvelteKit just makes sense. It’s fast, the DX is incredible, and Svelte 5’s runes API ($state, $derived, $effect) makes reactive code feel natural. No virtual DOM overhead, tiny bundles, and the compiler does the heavy lifting.
Plus, I wanted more practice with SvelteKit for real projects. What better way than building something I’ll actually maintain?
Tailwind CSS v4
I was a Tailwind skeptic at first—all those utility classes looked messy. Then I actually used it on a project and never looked back. The new v4 is even better with its CSS-first configuration. No more fighting with design systems; I just write what I want.
mdsvex for Content
Markdown is non-negotiable for a blog. mdsvex lets me write posts in Markdown while still using Svelte components when I need something interactive. Code blocks get syntax highlighting via Shiki, and I can embed custom components if a post needs something special.
Cloudflare for Hosting
Edge deployment, blazing fast, free tier that actually works. The SvelteKit adapter handles everything. I literally just push to main and it deploys.
The Features I Actually Wanted
Instead of copying some template, I thought about what features I would actually use:
Search — Because I’ll forget what I wrote. Cmd+K opens a fuzzy search that looks through titles, descriptions, and tags.
Series Support — Some topics need multiple posts. The blog automatically detects series from slug patterns (like space-sim-part-01) and links them together with proper navigation.
Category Colors — Each tech stack has its own color scheme. Bevy is orange, Supabase is green, Flutter is cyan, Svelte is that distinctive orange-red, and Kubernetes gets a classic blue. It makes scanning posts faster and adds some visual personality.
Reading Time — So I know if I’m about to commit to a 5-minute read or a 30-minute deep dive.
Infinite Scroll — Pagination feels outdated. Just scroll and posts lazy-load as you go.
Copy Code Button — Essential for a tech blog. One click copies the code block.
Table of Contents — For longer posts, a sticky TOC that highlights the current section as you scroll.
What’s Next
The blog is live, which means now comes the hard part: actually writing content.
I’ve got a 14-part series on building a space trading sim in Bevy that I’m working through. Some Flutter architecture posts in the drafts. Notes on Supabase patterns I’ve figured out the hard way.
The goal is consistency over perfection. One post at a time. If I write something and it helps future-me understand a problem I already solved, that’s a win.
And if you’re reading this and it helped you too? Even better.