Notes

79 total

Markdown Ate The World1. Recommended reading. Always bet on plain text!

  1. Discussion on Lobsters

#59Mar 24, 2026

I just added support for post series on both https://tech.zlliang.me and https://days.zlliang.me. There is now a /posts/series index page, each series has its own page, and individual post pages can show the other posts in the same series in the sidebar.

This felt worth adding because some posts are clearly part of a longer thread rather than standalone pieces. On the tech site, Starting a Blog at the End of 2025 and Splitting My Websites and Finalizing My Writing Framework are now grouped under How I Write. On the days site, my January and February monthly posts are now grouped under the Life Monthly series.

The commit is zlliang/zlliang@e858356, which also closed issue #79. Unlike several recent blog infrastructure changes, this one was surprisingly mostly handwritten. I only used a coding agent for a few small parts.

Update Mar 30, 2026: In late March, I renamed my two journal websites. They are now Hack https://hack.zlliang.me and Muse https://muse.zlliang.me. See: Renamed the two journal websites to Hack and Muse.

Update Apr 27, 2026: I renamed the English site again — Hack is now Mesh at https://mesh.zlliang.me. The previous hack.zlliang.me redirects to the new domain. See: Renamed Hack to Mesh.

#58Mar 23, 2026

Some Things Just Take Time1. Recommended reading. About the value of slowing down in this fast-changing world.

  1. Discussion on Hacker News

#57Mar 22, 2026

Updating the design of Notion pages. Notion is refining the spacing rules across its pages, and that feels like the right direction. I use Notion for private writing and personal databases, so this kind of change could noticeably improve the writing experience for me. I have also spent a long time thinking about spacing while designing my own personal website, so I like that this article treats spacing as a serious design problem. It is a good deep-dive reference.

#56Mar 20, 2026

OpenAI to acquire Astral1. This one is big. uv, Ruff, and ty are all best-in-class tools from Astral that have significantly improved the Python developer experience. After the acquisition, the Astral team will join OpenAI’s Codex team. Given how quickly Codex has been improving recently, this feels like a strong combination for the future of developer tooling.

Here’s the blog post from Astral’s side: Astral to join OpenAI. Here’s the Hacker News discussion.

Another interesting angle is that Anthropic acquired Bun last year. Anthropic now has deep JS/TS tooling expertise, while OpenAI is making a similar move around Python.

Update Mar 20, 2026: Simon Willison published a detailed post on this acquisition: Thoughts on OpenAI acquiring Astral and uv/ruff/ty.

  1. Post on X by OpenAI Newsroom

#55Mar 19, 2026

I just finished a fairly big notes-navigation refresh for both https://tech.zlliang.me and https://days.zlliang.me. Archive pages by year, month, and day are now fully in place, and the sidebar now has a “Writing journey” heatmap.

This makes the notes feel much easier to browse as a body of work instead of a flat reverse-chronological list. For example, visit /notes/2026 for notes in 2026, /notes/2026/03 for notes in March 2026, and /notes/2026/03/19 for notes on Mar 19, 2026. Each cell in the heatmap takes you to the archive page for that specific day.

The "Writing journey" heatmap in the sidebar, with links to archive pages by year available from the main /notes archive pageThe "Writing journey" heatmap in the sidebar, with links to archive pages by year available from the main /notes archive page

A monthly archive page, where you can switch to other months or jump to a specific day in the current monthA monthly archive page, where you can switch to other months or jump to a specific day in the current month

The work happened in two commits: zlliang/zlliang@9ed325f and zlliang/zlliang@9786f32. Most of the implementation was done with help from the Codex app and Amp.

Update Mar 30, 2026: In late March, I renamed my two journal websites. They are now Hack https://hack.zlliang.me and Muse https://muse.zlliang.me. See: Renamed the two journal websites to Hack and Muse.

Update Apr 27, 2026: I renamed the English site again — Hack is now Mesh at https://mesh.zlliang.me. The previous hack.zlliang.me redirects to the new domain. See: Renamed Hack to Mesh.

#54Mar 19, 2026

I just removed note tags from both https://tech.zlliang.me and https://days.zlliang.me.

While writing notes, I kept thinking about how tags should be organized. Sometimes I would spend quite a while deciding which tags to use, and that gradually turned them into a writing burden instead of a helpful tool. I found that tags are simply hard to plan well and maintain over the long term. On top of that, after adding search to notes a few days ago, part of the original value of tags was already covered. I would rather leave tags out for now and add them back only after I find a better way to organize notes.

Along the way, I also simplified the sidebar and reworked the /notes/types index page. The sidebar is now flatter and quieter, and the type index uses richer cards with counts and short descriptions.

The refreshed note types pageThe refreshed note types page

The main commit is zlliang/zlliang@8381e33, a cleanup and simplification pass across both sites that removed tags, flattened the sidebar, and improved how note types are presented. Most of the code was written with the help of the Codex app.

Update Mar 22, 2026: Removing tags also removed their old URLs, so I later added middleware handling for those legacy routes. Old tag pages now return 410 Gone while the other migrated note URLs keep working through redirects, which should make the cleanup clearer to search engines.

Update Mar 30, 2026: In late March, I renamed my two journal websites. They are now Hack https://hack.zlliang.me and Muse https://muse.zlliang.me. See: Renamed the two journal websites to Hack and Muse.

Update Apr 25, 2026: Following the same simplifying instinct, I later removed note types altogether. The refreshed /notes/types page described above is gone; old type URLs now redirect to /notes. See: Eliminated note types.

Update Apr 27, 2026: I renamed the English site again — Hack is now Mesh at https://mesh.zlliang.me. The previous hack.zlliang.me redirects to the new domain. See: Renamed Hack to Mesh.

#53Mar 18, 2026

I have removed the world map from my landing page for now.

When I added it in February, I liked the idea: a compact visual trace of the places I have been, with links to travel posts when I had written one. But after living with it for a while, I kept feeling that the interaction was not good enough. It looked more interesting than it actually felt to use.

So I decided to simplify the page again. I would rather leave something out than keep a feature that feels half-finished. If I come up with a better concept and can polish it properly, I may bring it back in another form.

#52Mar 18, 2026

Introducing GPT-5.4 mini and nano1. OpenAI finally refreshed its smaller and cheaper models. The previous mini/nano release was GPT-5 in August 2025, while GPT-5.1-Codex-Mini in November 2025 was a more coding-specific branch.

It feels like OpenAI is gradually tidying up its model lineup. At least in the GPT-5.4 family, there is no separate “Codex”-suffixed specialized model, and the mini and nano variants seem to be catching up too.

I checked the Codex app this morning and saw that its built-in subagents are already using GPT-5.4 Mini.

Subagents using GPT-5.4 MiniSubagents using GPT-5.4 Mini

  1. Post on X by OpenAI Developers

#51Mar 18, 2026

These days I’ve been working on new features and larger overhauls for my websites. It feels like I’m gradually preparing for the next step of their development. My three sites still share a lot of duplicated logic, including routing, components, and content categorization. Inspired by Starlight, I want to turn the theme into a reusable Astro integration. I created issue #80 to track the plan. This would not only help keep my codebase cleaner, but also make it easier for others to start writing with a minimal but opinionated framework.

#50Mar 17, 2026

Use subagents and custom agents in Codex1. Subagents are now generally available in Codex, after previously being introduced as an experimental feature called “multi-agents”.

In short, you can ask Codex to spawn subagents that run in parallel with one another and with the main agent. They use their own context windows and report back to the main agent when they are done. Subagents can have their own models and instructions. There are built-in agents like explorer, and you can define your own ones with TOML configuration files under .codex/agents.

One fun detail is that Codex picks a random nickname for each subagent. My first try gave me an explorer subagent called “Galileo”.

Galileo explored the repo for my websitesGalileo explored the repo for my websites

I first learned about subagents through Amp, which ships several curated custom agents like Oracle and Librarian. What I like about Amp’s approach is that it presents subagents as recommended workflows, not just as a feature to try on your own. By pairing carefully designed agents with specific models and tools, it also shows how subagents fit into everyday work. That has been a consistent strength of Amp: it tends to package what it sees as the current best practice, and that is also where I first started to understand the idea of subagents.

Here are other comments on this Codex release:

Now that major coding agents like Claude Code, OpenCode, and Cursor all support subagents in broadly similar ways, will subagents become a standard, like skills?

  1. Post on X by OpenAI Developers

#49Mar 17, 2026

I just added a search page for notes on both https://tech.zlliang.me and https://days.zlliang.me. There is now a search button in the header, plus a small search form in the sidebar on larger screens and on the home page on mobile. The search indexes note titles and bodies, and for post notes it also includes the full content of the related post. The implementation uses MiniSearch.

Enjoy the search feature!Enjoy the search feature!

While doing this, I also reworked note pagination across both sites. Instead of URLs like /notes/2, note archive pages now use query parameters such as /notes?page=2 and /notes/types/link?page=2. I wanted the pagination model to be simpler and closer to common blog conventions, especially after reading Google’s documentation on pagination.

The commit is zlliang/zlliang@5388c6d, which also closed issue #72.

Update Mar 22, 2026: This pagination change also changed note archive URLs, but I later added middleware-based redirects so legacy paths such as /notes/2 still resolve to the new query-parameter URLs. That should also make it easier for search engines to consolidate the old pagination routes.

Update Mar 30, 2026: In late March, I renamed my two journal websites. They are now Hack https://hack.zlliang.me and Muse https://muse.zlliang.me. See: Renamed the two journal websites to Hack and Muse.

Update Apr 25, 2026: I removed note types entirely, so the /notes/types/link?page=2 URL referenced above no longer exists; type URLs now redirect to /notes. See: Eliminated note types.

Update Apr 27, 2026: I renamed the English site again — Hack is now Mesh at https://mesh.zlliang.me. The previous hack.zlliang.me redirects to the new domain. See: Renamed Hack to Mesh.

#48Mar 16, 2026

Today I learned that Armin Ronacher also keeps two blogs: his well-known tech blog https://lucumr.pocoo.org, and a non-tech one https://dark.ronacher.eu. It made me feel that my approach to splitting writing across two blogs is a reasonable one, not just a personal quirk.

#47Mar 16, 2026

VoidZero, the JavaScript tooling company founded by Evan You, the creator of Vue and Vite, released several notable updates over the past week:

  • Vite 8, now powered by Rolldown after several years of work (btw, Astro uses Vite under the hood)
  • Vite+ alpha, now open-sourced under the MIT license after an earlier plan to make it a paid product, as mentioned in its initial announcement
  • Void, a full-stack framework and deployment platform built on top of Cloudflare’s infrastructure

I’ve liked Vue and Vite since the beginning of my career, so these releases are especially interesting to me. I have already applied for early access to Void. More immediately, I am curious about Vite Plus shipping a global Node.js version manager, vp env, and I want to see whether it could replace nodenv in my setup.

#46Mar 16, 2026

I added support for pinned posts on both https://tech.zlliang.me and https://days.zlliang.me in zlliang/zlliang@c283182, which also closed issue #77. There still are no real pinned posts on either site yet. I added the feature in advance for a post draft I am currently writing.

Over the past few days, I have been doing a series of minor blogging overhauls: reworking tags, adjusting parts of the UI, and cleaning up the agent skills and authoring references that support my blogging workflow. The more I work on both sites, the more I want to extract their highly similar logic into an Astro theme, something like my own small blog system in the spirit of Starlight.

One thing has become increasingly clear as I look back over my recent notes: I am doing noticeably better on the Chinese days site than on the English tech site. Part of that is simple fluency. But a more important part is that my technical notes still do not contain enough of my own thinking. Too often, they are just a pile of things I saw, rather than writing that helps me think or build a narrative of my own.

I want to keep that in mind and keep improving through writing.

Update Mar 30, 2026: In late March, I renamed my two journal websites. They are now Hack https://hack.zlliang.me and Muse https://muse.zlliang.me. See: Renamed the two journal websites to Hack and Muse.

Update Apr 27, 2026: I renamed the English site again — Hack is now Mesh at https://mesh.zlliang.me. The previous hack.zlliang.me redirects to the new domain. See: Renamed Hack to Mesh.

#45Mar 14, 2026

I reverted the note number prefixes on both https://tech.zlliang.me and https://days.zlliang.me. Notes are now shown as #44 again instead of #tech44 or #days44.

I made the opposite change earlier this year because I thought the prefixes would make the two spaces clearer. After using them for a while, though, I found that they mostly added visual noise and mental overhead. The note number only needs to be unique within each site, so the extra prefix was solving a problem I don’t really have.

Update Mar 30, 2026: In late March, I renamed my two journal websites. They are now Hack https://hack.zlliang.me and Muse https://muse.zlliang.me. See: Renamed the two journal websites to Hack and Muse.

Update Apr 27, 2026: I renamed the English site again — Hack is now Mesh at https://mesh.zlliang.me. The previous hack.zlliang.me redirects to the new domain. See: Renamed Hack to Mesh.

#44Mar 13, 2026

I just finished another round of cleanup on my https://tech.zlliang.me and https://days.zlliang.me websites. This time I reworked the note tags across both sites, aiming for a smaller and more durable taxonomy that better reflects long-term themes instead of one-off entities.

At the same time, I renamed the note category field to type for both websites. The canonical page is now /notes/types. This is a small breaking change, but I think the new naming is clearer.

Recently, I’ve started using Codex and GPT-5.4 heavily. They did an excellent job helping me complete this work and saved me a lot of time. Here are the commits: zlliang/zlliang@1e0c72b and zlliang/zlliang@97fb17a.

Update Mar 22, 2026: This introduced URL-level breaking changes, but I later added middleware-based redirects so old /notes/categories/... URLs continue to work. That should also help search engines consolidate signals more cleanly toward the new /notes/types/... routes.

Update Mar 30, 2026: In late March, I renamed my two journal websites. They are now Hack https://hack.zlliang.me and Muse https://muse.zlliang.me. See: Renamed the two journal websites to Hack and Muse.

Update Apr 25, 2026: I removed note types entirely. The /notes/types page is gone, and old /notes/types/... and /notes/categories/... URLs now redirect to /notes. See: Eliminated note types.

Update Apr 27, 2026: I renamed the English site again — Hack is now Mesh at https://mesh.zlliang.me. The previous hack.zlliang.me redirects to the new domain. See: Renamed Hack to Mesh.

#43Mar 13, 2026

I check X, Hacker News, and blogs every day. Recently, too many things have been competing for my attention. Whenever something looks worth revisiting, I take a screenshot first, so my photo album has quietly turned into a messy reading inbox.

I have not read or organized all of these properly yet, so this note is just a first pass: a way to get the links out of my album, lay them out in one place, and start clearing my head.

Coding agents

Products

Programming and frontend

Other

#42Mar 12, 2026

Today, Astro 6.0 was released, and I upgraded all my personal websites. I also adopted its new Fonts API. I tried the Codex app for this upgrade, and it handled everything smoothly.

All the upgrade work was done by the Codex appAll the upgrade work was done by the Codex app

#41Mar 11, 2026

I just received the VS Code 1.111 release notes, and it looks like it may have shifted from a monthly release cycle to a weekly one. Many recent releases seem focused on Copilot, which I’ve completely turned off. If this weekly cadence continues, it might get annoying.

#40Mar 10, 2026
Page 2 / 4