Giới thiệu

Things Worth Sharing

Những ghi chép, góc nhìn và điều thú vị đáng chia sẻ.

KhaVan — co-founder Viet-AWS (AWS User Group Vietnam, 52,000+ thành viên · 200+ event) và AWS Study Group Vietnam. Contributor cộng đồng VMUG. Nhận giải AWS APJ Community Leader 2024 — Deliver Results.

Theo dõi tác giả ở LinkedIn · GitHub · Email.

Triết lý viết

Đây là nơi mình ghi lại những quan sát, ghi chép và những mẩu việc nhỏ mà đáng lẽ chỉ sống trong một Slack thread, một notebook, hay một file Google Docs viết dở mà không ai đọc. Chủ đề trải dài từ công nghệ đến học tập, công việc và cả cuộc sống — miễn là thực sự đáng chia sẻ.

Các bài viết cố gắng trung thực: cái gì work, cái gì không, và các trade-off đã chọn. Không "thought-leadership". Không listicle. Chỉ là những ghi chép mình tin là có ích — viết ra những gì thực sự work (và những gì không) trong production, mà không cần qua filter corporate hay marketing.

Cách build trang này

Blog viết bằng Astro 5, build ra HTML tĩnh và serve qua một Cloudflare Worker duy nhất (khavan) bằng Workers Assets binding. Nội dung là Markdown/MDX trong git — sửa bài chỉ là một commit. CI/CD chạy GitHub Actions: mỗi push lên main sẽ npm run build (Astro + Pagefind index) rồi wrangler deploy. Không có Pages, không có CDN lớp ngoài, không có container.

Phần "tĩnh" thực ra chỉ là lớp ngoài. Worker đứng sau còn chạy một loạt API Cloudflare-native:

  • D1 (khavan-subscribers) — subscribers, double opt-in tokens, webmentions, page views, AI summary cache, contact form logs.
  • Vectorize (khavan-posts) + Workers AI bge-m3 embeddings — semantic search. UI có toggle keyword/semantic, fallback sang Pagefind khi query quá ngắn.
  • Workers AI → OIDC federation → AWS Bedrock (Claude Opus) — tính năng "Tóm tắt bài" dùng Opus thật, không dùng long-lived access key. Worker tự ký OIDC token, STS exchange sang temp creds, cache qua KV.
  • Analytics Engine (khavan_events) — custom events cho page view, subscribe, summarize, abuse. Dashboard tự render ở /admin/analytics, query qua Analytics SQL API.
  • Cloudflare Access đứng trước /admin/*, Worker verify Cf-Access-Jwt-Assertion với JWKS + kiểm tra allowlist email trước khi chạy bất cứ gì admin.
  • Turnstile + abuse-guard (deny bot rẻ trước khi chạm D1/AI) gác các endpoint public write: subscribe, contact, summarize.
  • Cron trigger (0 2 * * SUN) — weekly digest, query D1 lấy bài mới của tuần, gửi qua Resend cho subscriber đã confirm.
  • Webmention receive + send, có SSRF guard (block private-range hostnames, IPv6 local, manual redirect loop bound).
  • OG image per-post render qua resvg WASM → PNG 1200×630 cho social crawlers.

Source công khai ở github.com/vanhoangkha/khavan. Chi tiết binding, migrations và runbook nằm trong CLAUDE.mddocs/ trong repo.

Liên hệ

Cách nhanh nhất là khavan.work@gmail.com. Để theo dõi bài mới, đăng ký RSS feed hoặc paste email vào ô Subscribe ở header.