37 years since my first diary entry
I've kept a diary since I was little — almost without a break, even squeezing in entries during the busiest stretch of high school. The earliest page I can find is June 2, 1989, online here. That's thirty-seven years. Not a small span.
I'm turning those notebooks into a digital archive.
Along the way I wrote a small Python package for anyone who shares the habit. For now I'm calling it xuanxin.
The idea: bilingual entries for the same day (20260609.md for English, 20260609_zh.md for Chinese, with a language switch on the page), static HTML generation, a local preview server, themes, images and video in galleries, and solid navigation — previous day, next day, paginated index, and so on.
The first version already works. Drop dated Markdown files into a folder, run one command, and you get a flat site: a paginated index and one HTML page per entry, with math, images, and carousel galleries (GALLERYS … GALLERYE). Add password: mypassword to gate a gallery — a simple threshold for friends and family, not bank-grade security. Large PNGs are converted to _small.jpg automatically to save bandwidth and space.
Install:
pip install xuanxin
Source on GitHub: xuanxinjushi/xuanxin. Bugs, ideas, and pull requests are welcome.
Local preview:
xuanxin diary -i xx-diary -o output_folder -gtag gtag.js -home wu-99.com --page-size 20
python -m http.server 8080 --directory output_folder
Open http://localhost:8080 in your browser.
Recent additions: bilingual same-day entries (20260609.md + 20260609_zh.md) with a one-click language switch; video in galleries; previous / next day links at the bottom of each entry.
Thirty-seven years of paper notebooks — getting this far still feels a little remarkable to me. Digitizing old days and building a small tool for fellow diary-keepers is what I want to do as Xuanxin Jushi.
Start with the old notebooks: June 2, 1989. The new chapter starts with today's entry.
Syntax demo¶
A few Markdown patterns xuanxin turns into HTML. Rebuild the site and open this page to see them live.
Math¶
Inline: thirty-seven years is roughly $37 \times 365 \approx 1.35 \times 10^4$ days.
Display math on its own line:
MathJax is on by default for diary builds; pass --no-mathjax if you do not want it.
Single image¶

Put assets in a folder named for the date (e.g. 20260608/). Large PNGs become _small.jpg automatically.
Gallery (GALLERYS … GALLERYE)¶
Horizontal carousel; images and video can mix:
Password-protected gallery¶
Add password: … on the GALLERYS line; the page prompts before showing slides:
Code and more¶
xuanxin diary -i xx-diary -o output_folder
| Feature | Markdown |
|---|---|
| Chinese entry | 20260609_zh.md |
| English entry | 20260609.md |
| Gallery bounds | >GALLERYS / >GALLERYE |
External links: June 2, 1989 entry · xuanxin on GitHub


