Starting a Blog at the End of 2025
Update Dec 28, 2025: Added descriptions for the “quote” category of notes.
Happy holidays! At the end of 2025, I’m starting a blog. I’ve already written several entries and feel confident I can keep it going. Here are my thoughts on the journey I’m about to start.
A thousand attempts
Actually, this is not the first time I’ve tried to start a blog. I used to have a writing habit in high school and in college, keeping a diary in Chinese. Since 2020, I’ve been writing less and less, though. Those diaries are now archived in Notion.
I registered several domains, built my website several times, trying to start blogging. During the last ten years, I’ve tried a lot of tech stacks, starting with the ancient Hexo, then VuePress, Next.js, and VitePress. I learned a lot of web technologies on this journey, and it even helped me find my first job as a frontend developer at Tencent.
But it was more like a playground for me to practice programming, instead of a place for writing. I didn’t really start writing real content in public until now.
Here are two previous attempts (I’m not good at keeping records. I asked my coding agent to dig into the Git commit history of this website and eventually found some screenshots1):
2018 version, attempting to run a mix of Chinese and English content, built with VuePress
2019 version, more of a portfolio-style site, built with Next.js
I value these previous attempts. There is no success without failure. Now it’s another attempt, a serious one (although I say that every time). I’m excited to see what I can do with this blog, on https://tech.zlliang.me.
Writers who inspired me
Throughout these years — I mean my exploration of the software development world — I’ve been inspired by many great writers. Their writings have generally been more vivid than thick textbooks, and they’ve fascinated me with both their understanding of relevant topics and their writing skills. They’ve motivated me to write, maybe just for myself, and even better, to write things that other people can benefit from.
Here are a few of the writers I admire:
Josh Comeau
At the beginning of my professional career as a frontend web developer, learning modern concepts and frameworks like React and CSS flexbox took me a huge amount of time. On this journey, Josh Comeau is a must-read. He always explains concepts from the very beginning and usually in an interactive way. He makes his blog posts interactive playgrounds, letting you understand by doing. Reading his posts was the first time I realized there are educational materials like this, instead of dull books that just throw a bunch of new concepts and definitions at you.
Some of his excellent posts about web frontend:
- An Interactive Guide to Flexbox
- Understanding useMemo and useCallback
- Understanding Layout Algorithms
- The Quest for the Perfect Dark Mode
Alex Kladov (matklad)
In the early 2020s, I invested some time in learning Rust. The language itself is a game of abstract concepts, and it’s hard to learn how to think in Rust and write idiomatic Rust code. Alex Kladov (more known as matklad) shares his knowledge and thoughts on Rust patterns, in astonishing depth. By reading his articles, you can learn some of the most clever design ideas and techniques in Rust, and more generally, in the field of language and compiler design. He’s also the original creator of the most widely adopted Rust language server, rust-analyzer.
Since 2023, he has worked at TigerBeetle, and since then he’s been writing about Zig as well. It so happens that Zig is also a current interest of mine, so I’m happy there’s a writer I can trust and learn real things from in this relatively new field.
Some highlights:
Bob Nystrom
I know Bob Nystrom from his masterpiece Crafting Interpreters. It’s the book that led me into the world of compiler design, and it’s a must-read for anyone who is interested in the “black magic” behind programming languages — it shows you that there’s actually no magic at all.
His long-form writing is just art. The famous What Color is Your Function? sheds new light on how people think about asynchronous programming, and Crafting “Crafting Interpreters” shows how much one can devote to writing a book. What’s precious is that he can put difficult concepts in an extremely simple and clear way. Many posts are about programming language design and compilers, including Crafting Interpreters, the book. A hard topic. But I can read any of them as a newcomer to the field, and take away a bunch of insightful ideas and a fundamental understanding of the topic he covered.
Highly recommended ones:
- Does Go Have Subtyping?
- Crafting “Crafting Interpreters”
- The Hardest Program I’ve Ever Written
- What Color is Your Function?
- Pratt Parsers: Expression Parsing Made Easy
Simon Willison
Lately, I’ve been turning some of my attention to AI, and inevitably I started reading Simon Willison, who innovated the famous pelicans on a bicycle benchmark method for new LLMs. Although there was a seven-year gap in between, he has maintained his blog for an impressive 20+ years. The most ancient pieces are still there, accessible to every new reader like me. In contrast, many links in his blog entries are broken — they’ve failed to persist on this rapidly changing internet.
One of his innovations is blogmarks. A blogmark looks like this:
The new ChatGPT Images is here. OpenAI shipped an update to their ChatGPT Images feature …
A link, followed by notes and comments. More often, the link is discovered via a third-party, like Hacker News or X. Simon adds a (via) to indicate the source, like:
ty: An extremely fast Python type checker and LSP (via) The team at Astral have been working on this for quite a long time, and are finally releasing the first beta. They have some big performance claims …
Unlike many technical writers, Simon maintains his blog like his own social media, with short posts like blogmarks and quotes dropping two or three times a day, along with long-form entries occasionally.
I found blogmarks a great idea, a better way to bookmark interesting things I find than just putting them in a folder. More importantly, it lets you write with less friction. Simon has written over 8,000 blogmarks in the past 20 years. What a huge amount! I believe you can get unimaginable insights from analyzing your own history if you maintain a blog like his.
Some of his excellent posts:
All of these writers have influenced me a lot and quietly motivated me to run my own blog. Following in their footsteps, I decided to build a corner of my own on the internet, and hope that one day I can help someone else on their journey.
Why, what, and how I write
I’ve read multiple motivating articles persuading you to write. The significant takeaway for me is that writing is a tool for thinking. A famous quote by Leslie Lamport, which Paul Graham later quoted, is2:
If you’re thinking without writing, you only think you’re thinking.
After several years of working as a professional software developer, I’ve become more and more convinced that writing is essential, and I’ve realized that I actually lack this essential skill. I want to be a better thinker and a better communicator, at work, in tech communities, and in my personal life. If I put this in a more ambitious way, I want to leave behind something I can confidently call my work, some day.
So here I am, starting this blog as my public thinking space. I’ve already written several short-form notes, beginning with the first note about my observations of a monospaced typeface called Berkeley Mono. I’m looking forward to seeing hundreds of notes and posts dropped here in a year or two, forming a small library of my own — an archive of my thoughts and ideas.
The topics I’ll cover may vary. Generally I’ll start with technical learnings and observations, and gradually expand into personal growth and life reflections. The following themes are currently in my mind:
- Trends and developments in fields like AI, web development, and systems programming
- Programming languages, tools, and news in communities I’m interested in, including but not limited to JavaScript/TypeScript, Python, Rust, Zig, and C
- Reflections on technical topics, and occasionally non-technical ones
- Reading notes of classic books and influential articles
- Progress updates and dev logs of my projects
Currently, there are two types of content on this blog:
- Notes: Short-form entries, typically written and published within a day. They are the main focus of this blog, flowing through the timeline. As of now, four categories of notes are here:
- Regular notes capture my scattered thoughts on relevant topics
- Link notes bookmark things I found on the internet and share my comments on them, inspired by Simon Willison’s blogmarks
- Quote notes share quotes from books, articles, and other sources
- TIL (Today I Learned) notes share things I learned today
- Post notes introduce any new post I’ve just published
- Posts: Long-form entries that take days to draft and polish, like the one you’re reading now. They are deep dives into topics I care about.
You’ll spend most of your time reading my notes in the timeline, and sometimes you’ll click into a post for a deeper dive. As I mentioned, I adopted this form, strongly inspired by Simon Willison.
I must admit that I’m far from a mature writer. My approach is to imitate the writers I admire at first — observing and learning how they write, the language they use, and how they discuss the topics they care about — and then gradually develop my own perspective and style.
How it’s built
This website is now basically a static site generated by Astro. I use Tailwind CSS for styling, Iconify for icons, Bun for dev environment, and Vercel for deployment.
I edit Markdown files in VS Code directly for content authoring.
You can find the source code, along with the Markdown files for all posts, in this GitHub repository: zlliang/zlliang.
What it looks like now
My take on AI assistance
This is a new era of AI. I’m neither a conceited programmer protesting against AI nor an AI-hype chaser, and am trying to find a pragmatic and restrained way to use AI tools to help me create a better website and deliver better content.
I’m an experienced frontend web developer, skeptical about the whole “coding agents will replace human developers” narrative. Honestly though, I didn’t invest my time catching up with this new trend until recently. In the second half of 2025, I took some time investigating the current state of AI tools, and found coding agents a promising paradigm for assisting human developers in their workflow.
I’m now using Amp as my coding agent in a very restrained way — for things like refactoring, addressing styling issues, and creating scripts for workflow automation. Most of the code is written by me, for now. I may let it create new features on my behalf more in the future, but I’m always the decision maker, and I’m the one who guides the direction of this website’s evolution.
Here are example sessions between me and Amp, working on the source code of this website:
- Rename kind field to category throughout codebase
- Create a new automated drafting workflow
- Remark-rehype footnote numbering collision issue
Then it comes to writing. Thanks to LLMs, writing in a foreign language has become more accessible than ever before. And I would not be this confident to run an English blog without the help of AI tools. But they should be used with caution.
I won’t post slops. All the content and all the thinking here are mine3. I’m using Amp only to help me review grammar, writing style, and unnatural English usage. Eventually, I hope it (and I myself) can help me build my own writing style. When reviewing my drafts, I typically use the following prompt:
Review this draft in terms of:
- Grammar and writing style
- Awkward or unnatural expressions
- The topic and overall content
Here are example threads between me and Amp, working on my posts:
- Review write-up grammar, style, and content (for this very post)
- Review write-up grammar, style, and content (for Formatting rules for AI chatbots and agents)
As a wrap-up, you can find the full instruction file for this website here: AGENTS.md.
Looking forward to this journey
Time to write, write, and write. Can I accumulate thousands of notes in a decade? Can I leave behind some articles that others find valuable too? Let’s see.
-
Paul Graham’s essay: Writes and Write-Nots ↵
-
I’ve written about this before: AI Transparent Statement - Note #3 ↵
Zilong's Tech Notes