On this page

Why a blog#

When running experiments, a lot of ideas and pitfalls only live in terminal output and scattered notes, and a few weeks later they’re gone. Writing things up forces me to think them through, and makes them easy to find again.

How this blog is built#

  • Generator: Hugo — posts are Markdown, output is plain static HTML
  • Hosting: Cloudflare Pages, rebuilt and published automatically on every push to GitHub
  • Theme: a small hand-written theme with bilingual support and dark mode

A quick formatting test#

Inline code python train.py --seed 0, and a code block:

import torch

def rollout(model, obs, horizon=16):
    """Roll the world model forward `horizon` steps in imagination."""
    states = []
    for _ in range(horizon):
        obs = model(obs)
        states.append(obs)
    return torch.stack(states)

Math works too. Inline p(st+1∣st,at)p(s_{t+1} \mid s_t, a_t), and display:

L=Eq(z∣x)[log⁡p(x∣z)]−KL(q(z∣x) ∥ p(z)) \mathcal{L} = \mathbb{E}_{q(z \mid x)}\left[\log p(x \mid z)\right] - \mathrm{KL}\left(q(z \mid x) \,\|\, p(z)\right)

Make it work, then make it good.