This is a public lab notebook. Every post is a Markdown file in src/posts/.
Write in Typora or Obsidian, drop the file in, and push — that’s the whole workflow.
This first post is a cheat sheet for everything the site can render. See my
first paper review for a real example.
Front matter
Every post starts with a small YAML block:
---
title: How this notebook works
date: 2026-07-11
tags: [embodied-ai] # omit for an untagged note; use valuation too
summary: One line shown on the index.
draft: true # true = visible in preview, hidden when published
---
Callouts
Obsidian-style callouts render as boxes. Type is anything after [!:
Start a blockquote with [!note], [!tip], [!warning], [!danger],
[!question], [!quote], and so on.
$ is the math delimiter. Digit-adjacent currency like $5B is safe, but when
in doubt escape it — \$ always renders a literal $. Reserve bare $...$ for
real math.
Foldable callouts
Add + or - after the type to make it collapsible. This one starts closed.
Math
Inline math like uses single $. Display math uses $$:
It’s rendered to HTML at build time — no MathJax loading in the browser.
Footnotes
Drop a reference inline[1] and it collects at the bottom of the post.[2]
Code
Fenced code blocks are syntax-highlighted at build time:
def value(fcf, r, g, n):
"""Two-stage DCF, terminal growth g."""
pv = sum(f / (1 + r) ** t for t, f in enumerate(fcf, start=1))
tv = fcf[-1] * (1 + g) / (r - g)
return pv + tv / (1 + r) ** n
Tables
Standard Markdown tables work; align a column right with ---: to get
tabular, right-aligned numbers:
| Metric | 2024 | 2025 |
|---|---|---|
| Revenue ($M) | 120 | 180 |
| Gross margin | 62% | 64% |
Linking between posts
Use [[filename]] or [[filename|link text]] to link to another post by its
file slug — for example [[generalist-robot-policies]]. Regular
Markdown links work too.
That’s everything. Replace this post with your own writing whenever you like.