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
A design file you can diff is harder than it sounds
Why readable FNX was not enough: Fanta's 25,311-line diff, overwritten source edits, and the move to project files as the authority.
6 min · Sep 30, 2026
What 40,000 nodes taught us about Fanta's canvas
We opened a 128 MB, 40,141-node Figma file in Fanta, then followed the copies, image decodes, saves, and agent responses that made large designs hard to use. Here are the measurements and the work still left.
7 min · Sep 30, 2026
All tags
- #ai
- #blender
- #build-in-public
- #cubemap
- #design-tools
- #diamond
- #environment-art
- #expo
- #fanta
- #file-formats
- #git
- #graphics
- #houdini
- #huggingface
- #image-generation
- #licensing
- #macos
- #mdx
- #meta
- #next.js
- #ocr
- #onnx
- #open-source
- #performance
- #procedural
- #python
- #r3f
- #ray-tracing
- #react-native
- #rendering
- #replicate
- #revenuecat
- #rust
- #sam2
- #segmentation
- #shaders
- #shipaton
- #technical-art
- #three.js
- #vercel
- #wasm
- #web-worker
- #webgl
- #webgpu