f32ae90cf06f7b6f6d855291813f5c9c7d3b5599
Deploy / build (push) Successful in 39s
Reviewer's five "highest priority" items, each checked against the source before acting: * 38% speedup -> 38.1% less render time (352s -> 218s, 1.61x throughput); says it was a single run each, same clip, same machine, same encoder settings. * "microsecond-accurate" -> frame-accurate: at 30 fps one frame is 33.3 ms, and the text now states that word-level timestamps are not microsecond-accurate. * "Three minutes later" -> "a few minutes later", plus the one measured number (218 s render for the 4-minute track) so the claim is checkable. * Zero Jitter / Zero Light Flashing -> "no visible jitter" / "no dark flash at the cut", scoped to the clip that was measured. * ti.mode 0o666 -> 0o644. Hygiene, not the syntax error he reported: source and live HTML both read 0o666 (the live page splits it across two highlight spans and his text extraction inserted a space), and 0o666 is legal Python. * "0 MB RAM spike in Chrome" now scopes itself to the Chrome container and says the Python client still buffers the whole tar. New "What this pattern does not solve" block: client buffering, target directory must already exist, tar member names become container paths, Portainer key / CDP 9222 are root-equivalent. All three posts get a TL;DR and inline cross-links (the trio had zero internal links before); the ZH links use the real /posts/zh/<slug>/ path. Not done, because it needs the owner's data rather than invention: end-to-end timing table, benchmark conditions, whether 1.89 s was a single run, before/after jitter clips, the "what still needs a human" list. Task list: docs/consultant-review-2026-10-22-3-video-posts.md. Artwork for the three slugs regenerated (1600x900 banner, 1200x630 share cards EN+ZH, 400/800 list thumbs); the ZH pipeline card already carries the corrected description.
hoelee-blog
My personal technical blog — where I write about what I build and learn.
Built with Astro 5 + Markdown, deployed via self-hosted Gitea CI/CD to an nginx container on my unRaid server, served through Cloudflare tunnel + CDN. Live at blog.hoelee.com.
Purpose (read this first)
This blog exists so that when a recruiter, hiring manager, or freelance client Googles "Lee Teong Hoe", they land on a stream of concrete technical work that proves I can build things — plus a clear, trustworthy picture of who I am. It backs the job hunt and the freelance funnel (Upwork / Fiverr / Codeable).
- 67% of hiring managers check a candidate's online presence before deciding (Stack Overflow 2025).
- SEO is a long game — while posts rank, the blog doubles as a portfolio and inbound-lead magnet.
Every decision below optimizes for credibility + discoverability + speed of shipping, not monetization or vanity traffic.
Stack
- Framework: Astro 5 (static output, zero runtime JS by default)
- Content: Markdown + MDX, versioned in git
- i18n: English (default) + Chinese (
zh) — English-first - CI/CD: Gitea Actions →
act_runneron unRaid → nginx container - Host: nginx on unRaid → Cloudflare tunnel → Cloudflare CDN
Structure
src/
content/
posts/ # English posts (flat)
zh/ # Chinese posts (subfolder -> /posts/zh/<slug>/)
pages/
index.astro # homepage
posts/[...slug].astro # post template
about.astro
layouts/
BaseLayout.astro
lib/
lang.ts # derives en/zh from folder path
docs/
content-guide.md # what to write, what to avoid (READ before writing a post)
post-guideline.md # HOW to write it: title case, locale, frontmatter, publish flow
design-guide.md # what the design must have, what to avoid (READ before touching UI)
seo-reference.md # E-E-A-T / name identity, SEO + GEO checklist, syndication
ops-runbook.md # pipeline, publish steps, build pitfalls, health checks
project-state.md # enhancement backlog (Tier 1/2/3) — work through one by one
Knowledge guides (my rules of thumb)
| Doc | When to read |
|---|---|
docs/content-guide.md |
Before writing/planning any blog post — categories, post types, the "hard job → post" template, and the anti-patterns. |
docs/post-guideline.md |
Before writing/editing a post — title case, locale folder structure, frontmatter, publish flow. |
docs/design-guide.md |
Before changing theme, layout, typography, color, or SEO markup. |
docs/seo-reference.md |
Before adding posts/<head> markup or debugging search visibility. |
docs/ops-runbook.md |
Before debugging CI/CD, deployment, or hosting. |
docs/project-state.md |
To see what's next — the prioritized enhancement backlog. |
Write a post
- Create
src/content/posts/<slug>.md(English) orsrc/content/posts/zh/<slug>.md(Chinese) with frontmatter (see content guide — nolang:field, it's derived from the folder). - Push to
main. - CI builds and deploys automatically.
Categories
engineering · devops · ai · web3 · tutorials · case-studies · notes
Conventions
- Repo publishing order: push to git.hoelee.com (Gitea) first, then GitHub. (My standing convention.)
- Language: English posts flat in
posts/; Chinese posts inposts/zh/; no Malay. - Theme: defaults to dark mode (light is opt-in via the toggle).
- No overclaiming — especially Web3 (learning projects, not production DeFi).
- Name identity is consistent everywhere: "Lee Teong Hoe" / "Mr Hoelee" + same photo + same
sameAshandles across blog, LinkedIn, GitHub, git.hoelee.com.
Description
Personal technical blog of Lee Teong Hoe (Mr Hoelee) - full-stack engineering, DevOps & self-hosting, AI automation, and Web3. Built with Astro 5 + Markdown, deployed via self-hosted Gitea Actions CI/CD. English-first, Chinese under /posts/zh/.
https://blog.hoelee.com
Readme
86 MiB
0 Stars
1 Watchers
0 Forks