This is where I'll dump field notes from shipping software and on-chain systems. Expect short, opinionated posts with real code — not breathless announcements.
Writing a new post
Posts live in content/blog/ as .mdx files. Frontmatter at the top, MDX body below.
---
title: "Your post title"
description: "One-line summary used in cards and SEO."
date: "2026-05-11"
tags: ["nextjs", "web3"]
---
Your content. **Bold**, _italic_, `code`, [links](https://nextjs.org).
\`\`\`ts
export function hello(name: string) {
return `hi, ${name}`;
}
\`\`\`Thumbnails / cover images
Add a cover to any post's frontmatter. Local files live under /public, e.g. drop welcome.jpg into /public/blog/ and reference it as:
cover: "/blog/welcome.jpg"Remote URLs work too — just whitelist the host in next.config.ts under images.remotePatterns. When a post has no cover, a gradient placeholder is generated from the title hash so every card still has a unique look.
Drafts
Set draft: true in the frontmatter to hide a post from the index, RSS feed, and sitemap. Drop it when you're ready to publish.
What's next
A few queued posts: gas-optimization tricks for ERC-721, why most "Web3 onboarding" pages get UX wrong, and a deep-dive into building type-safe subgraphs.