## 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: 1. Software engineering and architecture 2. Tools and workflows I find useful 3. Lessons from building products 4. 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: ```typescript 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: ```css .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.