update (2026-08-24): this post is out of date. the blog has since moved again — content lives locally now, written in obsidian, managed with git, built with astro, on a redesigned theme; the 17 old posts mentioned below went through another cull as well, and only a few survived. what follows is history, not the current setup.
how it started
nothing special set it off. today i suddenly felt like picking the blog back up after it had been gathering dust for a long time.
the blog had been completely offline since 2024. even though it was already a static deployment by then, i stopped maintaining it and just shut it down. two or three years passed in between; i was busy with other things and the blog simply sat there. until today, when i saw how strong ai-assisted coding has become, and thought — why not try?
so i spent a whole day rebuilding the entire blog from scratch.
the migration path
a quick look back at how the stack has changed:
it started on typecho, then moved to hugo. this time it goes one step further than hugo and drops the framework entirely.
the setup now: all content is written and managed in notion, pulled through the official notion api, and turned into plain static html pages by a python script. no front-end framework, and javascript cut down to almost nothing — roughly just the dark-mode switch and code highlighting.
the build script was basically all vibe coding. ai really does write code much faster.
the old posts
since i was restarting anyway, the old posts had to be sorted out too.
but looking back at what i wrote before, a lot of it i no longer wanted to keep public. too much emotional writing; some of it the current me doesn’t think belongs on display anymore. the problem was that with that standard, almost nothing would have made the cut.
the compromise in the end was to have gpt reconstruct the gist of each post, cut the oversharing, and then go over it myself. out of a few hundred posts, only 17 made it over so far, 18 counting this one (maybe more later — who knows).
so if the old posts up there read like ai summaries, that’s because they went through a rewrite. i’m not putting the originals up.
why vercel
the hosting choice took a while.
cloudflare pages is the old free standby, but from inside china my domain mostly routed through the us, which wasn’t great. github pages uses fastly’s cdn, and direct connections from china hit the japan edge — decent speed, but only 2000 build minutes a month.
vercel has a more generous build allowance (6000 minutes), and from what i could see the routing from china seemed more flexible than github pages: china mobile goes through japan, china unicom through singapore. another consideration was that notion’s images are stored on aws s3 anyway, so i just pulled the source links straight out, which put the whole thing inside the aws ecosystem (a night later i found the image links expire, and since the pages aren’t public the official proxy can’t be used either — the current approach is to fetch them locally at build time). so the deployment might as well sit on aws infrastructure too, for a more unified chain, if it blows up it all blows up together, and no dependence on cloudflare.
where things stand
after a whole day of tinkering, the site is up and running. i’ll fill in content and details when i have time.