1 min read
Welcome to the new blog
A short tour of the new MDX-powered writing setup, complete with syntax-highlighted code blocks rendered by Shiki at build time.
On this page
This site now uses an MDX-based blog system. Every post lives in
content/blog/*.mdx, and the rendering pipeline is wired up through
@next/mdx + rehype-pretty-code. The result: zero client-side JavaScript for
syntax highlighting, perfect dark/light theming, and full Markdown +
Github-flavored Markdown support — including tables, footnotes, and task lists.
Why MDX
MDX lets me mix prose and React components in the same file. So I can drop in an interactive widget mid-article without leaving Markdown behind.
import { useState } from "react";
export function Counter({ start = 0 }: { start?: number }) {
const [count, setCount] = useState(start);
return (
<button
onClick={() => setCount((c) => c + 1)}
className="rounded bg-stone-900 px-3 py-1 text-white"
>
Clicked {count} times
</button>
);
}Highlighted lines and inline code
You can call out specific lines by appending {1,3-4} to the language hint,
mention a token like useEffect inline, or highlight a phrase with
/useState/:
import { useEffect, useState } from "react";
const [value, setValue] = useState("");
useEffect(() => console.log(value), [value]);Tables and task lists work too
| Feature | Status |
|---|---|
| Frontmatter | ✅ |
| Reading time | ✅ |
| Per-post OG images | ✅ |
| RSS feed | ✅ |
JSON-LD BlogPosting | ✅ |
- Set up MDX
- Add syntax highlighting
- Write the next post
Good engineering writing is just code review with more context.
That's it for now — more soon.
Comments
Tags in this post
Keep reading
Making AI feel realtime with hybrid segmentation
Segmentation is the substrate for nearly every AI photo workflow worth shipping in 2026 — inpainting, object swaps, controlled generation. Here is how to make it feel instant on the web by splitting SAM2 across a notebook on the user's hardware and a decoder in their browser.
23 min · May 5, 2026
Building a 3D ring configurator in Expo
A React-Native-first take on the classic R3F ring configurator: GLB loading on device, four metal materials, gesture-driven rotation, Zustand state, and ARKit / ARCore preview — all behind one Expo build.
11 min · May 5, 2026
Running ONNX models in the browser without losing your weekend
A working recipe for shipping image segmentation in a tab — Web Workers, WASM, pre-encoded embeddings, and the small things that decide whether the demo is fast or felt-fast.
4 min · May 4, 2026
All tags