Notes in 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.
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.
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
- Harness engineering
- Comparisons of agentic tools
- Andrej Karpathy’s posts on AI-assisted programming
- I’ve never felt this much behind as a programmer (Dec 27, 2025)
- A few random notes from claude coding quite a bit last few weeks
- 1 year anniversary of vibe coding, and introducing a better name: “agentic engineering” (Feb 5, 2026)
- It is hard to communicate how much programming has changed due to AI in the last 2 months (Feb 26, 2026)
- We’re going to need a bigger IDE (Mar 12, 2026)
- Agentic engineering practices
Products
- Cursor
- The OpenClaw hype (I haven’t tried anything out yet)
- Ghostty
Programming and frontend
- The Missing Semester of Your CS Education (Discussion on Hacker News) (revised for 2026)
- Advancing Python typing, a new PEP by Vercel
- Details that make interfaces feel better
- Evolving the Node.js Release Schedule
Other
- AI is a 5-Layer Cake, by Jensen Huang
- The Brand Age, Paul Graham’s new essay
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.
Two notable articles on AI and career:
- An AI agent coding skeptic tries AI agent coding, in excessive detail, and Simon Willison’s comment on it
- Yes, and…, the answer to the question “Given AI, should I still consider becoming a computer programmer?”, by Carson Gross, author of htmx
Two articles on sandboxing for AI agents:
- A field guide to sandboxes for AI, and Simon Willison’s comment to it
- The surprising attention on sprites, exe.dev, and shellbox
Individuals I’m following, who actively write and contribute in the AI field:
- Simon Willison. A must-read in this field now. He’s been topping Hacker News in 2023–20251. I can’t believe how he manages to cover nearly every aspect of the frontier. If you could only follow one source, make it him. He’s also the co-creator of the famous Django web framework.
- Armin Ronacher. He’s the creator of a lot of Python libraries, like Flask and Click. Now he’s writing a lot about LLMs.
- Mario Zechner. I discovered him through his tiny but curated coding agent Pi, which has been turning heads recently2. I haven’t taken a look yet, but will do.
- Mitchell Hashimoto. Ghostty’s creator. He’s writing a lot about his AI adoption in real development.
-
Simon Willison’s post: The most popular blogs of Hacker News in 2025 ↵
-
Armin wrote about it: Pi: The Minimal Agent Within OpenClaw ↵
The Value of Things. Another article about the AI trend (see the previous one). This time from Bob Nystrom, one of my favorite writers.
Two articles on work habits:
I Started Programming When I Was 7. I’m 50 Now, and the Thing I Loved Has Changed. The AI trend makes everyone who loves programming as a craft wonder if what we love is disappearing. Emptiness, though there’s still room for optimism.
I just added a world map to my landing page, showing where I’ve been. Have a look! I’m looking forward to exploring more of this world!
Screenshot of the world map
Update Mar 18, 2026: I have removed this world map from my landing page for now. The interaction did not feel good enough, and I would rather keep the page simpler until I have a better, more polished idea. I wrote a short follow-up note about this change: Removed the world map from my landing page.
Here’s what I missed in the AI field this week — I was on holiday in Tokyo.
Two new models dropped within about 15 minutes of each other: Claude Opus 4.6 and GPT-5.3-Codex. Amp immediately adopted Opus 4.6 for its smart mode, but GPT-5.3-Codex is only available in their Codex app, not yet via the API. I believe Amp will adopt it for its deep mode once it’s generally available.
Amp is sunsetting the editor extension next month. It hasn’t been officially announced yet, but the team mentioned it in their latest Raising An Agent podcast episode. I use Amp exclusively through the editor extension, so unfortunately I’ll have to switch to the TUI version and get used to it.
Ghostty’s author Mitchell Hashimoto has been busy lately:
- Ghostty’s updated AI usage policy for contributions. More and more open source projects are drowning in AI-generated issues and PRs submitted without human review — the slop. He proposed a new policy for dealing with this trend. It’s not against AI, but makes every AI-generated contribution accountable to a human.
- Vouch, a community trust management system. A tool that puts the policy above into practice. To mitigate the slop burden, open source projects should build a network to identify trustworthy contributors.
- My AI Adoption Journey. Mitchell’s reflections on his AI adoption journey. Most of it resonates with me — and probably with every thoughtful developer.
Beautiful Mermaid1. Mermaid is the de facto tool for describing diagrams in plain text and embedding them in Markdown. GitHub supports it, for example2. But I’ve never liked the default theme — that’s why I still haven’t adopted it.
Today I found out the Craft team felt the same way, and they released a new rendering engine for Mermaid diagrams. It outputs both SVG and ASCII art, and the default theme looks great.
I haven’t looked into it deeply yet, but it looks promising at a glance. I hope it becomes a catalyst for better-looking diagrams — either by maturing into a drop-in replacement that the ecosystem adopts, or by pushing the Mermaid team to ship a better default theme.
Beautiful Mermaid
Mermaid's default theme
-
GitHub blog post: Include diagrams in your Markdown files with Mermaid; GitHub documentation: Creating diagrams ↵
Tw93, and his Mole. I heard of this macOS cleaner app called Mole before, but today I finally tried it out — a neat CLI utility that digs through and cleans up your macOS.
I checked out its author, Tw93. He’s also a Chinese programmer, and keeps a blog that caught my eye immediately. I’m glad to see programmers like him sharing tech thoughts and personal life, reminding me I’m not alone. He’s doing a great job — another role model to look up to. From his GitHub profile, I believe Simon Willison influenced him too.
Follow him on X: @HiTw93.
I just added a new note type called “collection notes”.
Collection notes gather resources on a single topic — books, articles, videos — in one place. Think of them as better-organized bookmark folders. Here’s the commit: zlliang/zlliang@db12925.
I’ve already written one on my Zilong’s Days (Chinese) website: Shinobu Yoshii’s works.
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.
Simon Willison on Technical Blogging. Simon was the direct catalyst for me starting my own blog (see my post), so it’s great to see him share more about his blogging experience.
Zig’s new juicy main is here. Not quite following Zig’s new features recently, and a quick check yesterday made me find that the juicy main has landed!
Andrew Kelley proposed it directly (see #24510) to enhance the main function by providing useful variables like memory allocators, I/O instance, environment variables, and command line arguments as parameters. It reduces the boilerplate we previously needed to set up these variables.
Now there are three allowed argument signatures for the main function:
pub fn main() !voidpub fn main(init: std.process.Init.Minimal) !voidpub fn main(init: std.process.Init) !void
The definition of std.process.Init is as follows:
pub const Init = struct {
/// `Init` is a superset of `Minimal`; the latter is included here.
minimal: Minimal,
/// Permanent storage for the entire process, cleaned automatically on
/// exit. Not threadsafe.
arena: *std.heap.ArenaAllocator,
/// A default-selected general purpose allocator for temporary heap
/// allocations. Debug mode will set up leak checking if possible.
/// Threadsafe.
gpa: std.mem.Allocator,
/// An appropriate default Io implementation based on the target
/// configuration. Debug mode will set up leak checking if possible.
io: std.Io,
/// Environment variables, initialized with `gpa`. Not threadsafe.
environ_map: *std.process.Environ.Map,
/// Named files that have been provided by the parent process. This is
/// mainly useful on WASI, but can be used on other systems to mimic the
/// behavior with respect to stdio.
preopens: std.process.Preopens,
/// Alternative to `Init` as the first parameter of the main function.
pub const Minimal = struct {
/// Environment variables.
environ: std.process.Environ,
/// Command line arguments.
args: std.process.Args,
};
};The changeset is in #30644 and there’s a follow-up issue #30677 for a minimal CLI parsing mechanism.
Zilong Liang / Hack 