洞察本质 · 尊重现实 · 长期复利
Insight · Realism · Compounding
一份被当成产品来打磨的双语笔记本。
A bilingual engineering notebook treated like a long-term product — not a dump of markdown files with a theme slapped on.
You can call me Mark. I write about computer science, finance, product, and marketing — and I hold the page to the same standard as the code.
Clarity over noise. First make the problem legible, then scale it.
Structure before scale. Systems beat accumulation.
Restraint still has to ship. Reliability outruns novelty.
If you came here looking for npm install, you are already in the wrong century of this repo.
| English | 中文 | |
|---|---|---|
| Insight | See through to the underlying logic. Look past the surface to find what actually drives outcomes. | 洞察本质。看透问题的底层逻辑,不被表象带走。 |
| Realism | Acknowledge constraints. Accept uncertainty. Decide on real conditions, not idealized assumptions. | 尊重现实。承认约束,接受不确定性。 |
| Compounding | Choose work that accumulates. Let today's effort become tomorrow's foundation. | 长期复利。做时间的朋友。 |
Motto underneath: Clarity over noise. / 清晰优先于堆砌。
What the site actually is, not a feature laundry list:
- Homepage as an object. Custom Tahoe liquid-glass cards, not the default VuePress hero. Hover / click, then read.
- Two locales, one source of truth.
/English,/zh/简体中文. Same architecture, same sidebars, same conventions. - Blog. Essays auto-discovered from
docs/blog/anddocs/zh/blog/. - Notes. Structured textbooks with manual sidebars. Shipping now: Git and GitHub, Typora and Markdown.
- About / Friends. Resume-grade about page, and a friends directory.
- Writing tools that stay out of the way. Mermaid, KaTeX, local search, Giscus comments, self-hosted fonts. No Google Fonts CDN.
The notes catalog lists more volumes as Coming Soon. Those cards are a roadmap, not a ship date.
| Layer | Choice |
|---|---|
| Generator | VuePress 2.0.0-rc.28 + Vite |
| Theme | vuepress-theme-plume 1.0.0-rc.157 |
| Package manager | Bun only (packageManager: bun@1.3.14) |
| Fonts | Inter (theme) · Sora / Manrope / JetBrains Mono (@fontsource/*) |
| Host | Vercel primary · Netlify fallback |
| Analytics | @vercel/analytics + @vercel/speed-insights |
VuePress's own CLI still rides a Node shebang. That is the raccoon in the vents. We do not invite npm back to feed it.
Requires Bun >= 1.2.
bun install
bun run docs:devOpen http://localhost:8080.
bun run docs:build # production build → docs/.vuepress/dist
bun run docs:preview # serve the built site
bun run docs:clean-dev # wipe VuePress cache, then dev
bun run docs:clean-buildbun run dev / bun run build / bun run preview are the same commands without the docs: prefix.
If you type npm install, the preinstall guard will refuse. That is not a bug.
docs/
├── blog/ English essays
├── notes/ English textbooks (manual sidebars)
│ ├── git-and-github/
│ └── typora-and-markdown/
├── more/about/ About
├── more/friends/ Friends
├── zh/ Chinese mirror of the above
└── .vuepress/
├── config.ts VuePress, SEO, sitemap, base URL
├── plume.config.ts Navbar, blog, note sidebars
├── client.ts Global Vue components
├── components/ Home, notes catalog, friends, typewriter
├── styles/ Tahoe / replica CSS
└── public/ Favicon, avatar, social icons
Do not look for docs/about.md. It does not exist.
autoFrontmatter: false— write frontmatter yourself.- Blog posts are picked up from
blog/**/*.mdandzh/blog/**/*.md. - Adding or renaming a note chapter means updating both
/and/zh/sidebar arrays inplume.config.ts. - Highlighter languages:
ts, js, vue, json, bash, sh, css, html, python, markdown. - Do not re-add
fonts.googleapis.comorfonts.gstatic.com.
Vercel is primary.
| Setting | Value |
|---|---|
| Install | bun install --frozen-lockfile |
| Build | bun run build |
| Output | docs/.vuepress/dist |
Vercel sees bun.lock and stays on Bun. Do not leave a package-lock.json in the tree — it will try to drag npm back in.
Netlify is the fallback: bun run docs:build → docs/.vuepress/dist.
Set SITE_URL=https://me.markchu.work in the host so canonical URLs and the sitemap do not fall back to GitHub Pages.
Other env the config already understands: SITE_BASE, VERCEL_PROJECT_PRODUCTION_URL, VERCEL_URL, VERCEL_BRANCH_URL, URL, DEPLOY_PRIME_URL, DEPLOY_URL.
本仓库严禁 npm。 没有例外,没有「就这一次」,没有 fallback。
| 只用 | 禁止 |
|---|---|
bun install |
npm install / yarn / pnpm |
bun run <script> |
npm run <script> |
bunx <pkg> |
npx <pkg> |
提交 bun.lock |
提交 package-lock.json / .npmrc |
scripts/only-bun.sh 会在安装时拒绝非 Bun 客户端(先读父进程的 user-agent,不让 Bun 改写后再查)。scripts/check-no-npm.ts 会在提交时再查一遍。.npmrc 已删除;不要把它加回来。
I treat this site as a long-term personal product — a place to sharpen thinking, document progress, and build in public.
VuePress · Plume · Bun. Clarity over noise.