A little more than words.
An open notebook for ideas of every shape. A living guide to everything you can put in a post.
On this page
Some ideas need a sentence. Others need a table, an interactive sketch, or a small diagram. This notebook has room for all of them.
This is a working showcase, not a screenshot of one. Open the tabs, copy some code, enlarge an image, and try the little counter at the end. The source is in content/posts/everything-you-can-write.mdx.
The everyday essentials#
Start with bold ideas, a little emphasis, a thought you changed your mind about, and inline code. Add a useful link, nested lists, or a footnote when the tangent deserves its own space.1
- A place to collect your thoughts
- A place to try something new
- With room for the smaller details
- And one more layer of context
- Notice something.
- Write it down.
- Make it your own.
- Markdown and MDX, side by side
- Light and dark themes
- Your next good idea
A simple blockquote can make space for a thought without taking over the page.
Tables that don't break the page#
| Building block | Write it with | Good for |
|---|---|---|
| Text and structure | Markdown | The everyday parts |
| Rich content | Premade components | Diagrams, media, callouts |
| Something unique | Your own React | Anything you can build |
A note worth noticing#
Code, with a little context#
Syntax highlighting, filenames, line numbers, line highlights, word highlights, and a copy button are built in. Copying takes just the code, not the line numbers.
export function Greeting({ name }: { name: string }) {
return (
<p>Hello, {name}.</p>
);
}Code tabs#
npm install
npm run devpnpm install
pnpm devbun install
bun devA little room for maths#
Inline notation sits right in the sentence: . Display maths has a little more breathing room:
Draw the idea#
A Mermaid diagram is text you can edit, not an image you need to redraw. Its source stays available below it.
Loading diagram…
Diagram source
graph TB
A[An idea] --> B[A first draft]
B --> C{Does it feel right?}
C -->|Almost| B
C -->|Yes| D[Publish]Images with breathing room#
Images support captions and keyboard-accessible zoom. Select an image to enlarge it, then press Escape to return.
A small gallery#
Moving pictures and sound#
Local video and audio use the browser's own controls. These tiny demo files are included, so the examples don't depend on a media host.
YouTube, without the surprise#
Third-party players are click-to-load: no request goes to YouTube or X until you choose to load their embed. External embeds may be blocked by your privacy settings or the provider; their original links remain available.
Details, on demand#
The main thought belongs here. Tabs let related ideas share a little space without making the reader lose their place.
This is the second panel. Move between tabs with the arrow keys, Home, or End.
Can I nest components?
Yes. Any of these blocks can sit inside another when the structure makes sense.
What about regular HTML?
Use elements like ⌘ K, highlighted text, MDX, or a download link. JSX uses className instead of class.
Cards, links, and next steps#
Read the latest notes and explore by topic.
Cards work with or without a link. Add a title and whatever belongs below it.
Previews use metadata you supply. They don't send private URLs to an external scraping service.
Default badge Ready In progressCreate a file
Add a .md or .mdx file in content/posts/.
Write your way
Mix Markdown with the built-in components, or register a component of your own.
Preview and publish
Run the local preview, check the mobile layout, then commit and push.
Give the idea enough space to be understood.
Your components belong here, too#
This little counter is a custom React component. It has state, buttons, and room to become something completely different.
Register a component once in components/blog/mdx-components.tsx, then use it in any post. Server components work too. The README has the full authoring guide.
The rest is built in: heading links, a table of contents, reading time, tags, covers, author details, series, related posts, RSS, and a generated share image for every post.
