Why a blog?
I've been building things on the internet for a while now. Most of what I learn stays in my head or scattered across random notes. This blog is an attempt to change that.
Writing forces clarity. When you try to explain something, you discover the gaps in your own understanding. That's the real value here — not the audience, but the process.
The stack
This blog is intentionally simple:
- Next.js for the framework
- MDX for content (markdown with React components when needed)
- Tailwind CSS for styling
- Local files, no CMS, no database
Every post is a .mdx file in the repo. I write, commit, deploy. No admin panels, no content APIs, no complexity where it isn't needed.
Why MDX over a CMS?
A CMS introduces a dependency. It means another service to maintain, another point of failure, another thing that can change its API on you. For a personal blog, that overhead isn't worth it. MDX gives me full control.
What to expect
I'll write about:
- Software engineering and architecture
- Tools and workflows I find useful
- Lessons from building products
- Occasionally, things completely unrelated to code
The best time to start writing was years ago. The second best time is now.
A code example
Here's a simple TypeScript function to make sure syntax highlighting works:
interface BlogPost {
title: string;
slug: string;
date: string;
tags: string[];
}
function getLatestPosts(posts: BlogPost[], limit = 5): BlogPost[] {
return posts
.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime())
.slice(0, limit);
}
const featured = getLatestPosts(allPosts, 3);
console.log(`Found ${featured.length} featured posts`);
And here's some CSS for good measure:
.article-body {
font-size: 1.0625rem;
line-height: 1.8;
max-width: 42rem;
color: #333;
}
What's next
More posts, more experiments, more building in public. Stay tuned.