Writing
- 01
Hiring in the AI era, and the change in paradigm
2026-08There's one claim I think is right, that hiring, the whole approach and the whole system, is going to change over time, especially now in the AI era. Because coding by hand the old way pays less and less...
- 02
What Bun's full rewrite taught me
2026-08I've mentioned process-based quality control before, and you can see something close to it in How Anthropic runs large-scale code migrations with Claude Code. What they put at the center of the whole rewrite is the process...
- 03
On reading code
2026-08Let me say something about my own view on whether you actually have to read the code. For me, I take the position of don't read code line by line, which I already talked about in Process-based quality control...
- 04
Rust concepts
2026-07The interesting thing about Rust itself is that it's a strongly typed, memory-safe language, so a lot of things are nailed down hard. It gives up some dynamism and gets a lot of safety and stability back...
- 05
What Rust is good for in AI development
2026-07I have been thinking about Rust's features lately. A language with strong compile-time verification catches most of the potential problems at compile time, which means that even without tests, anything you manage to write already comes with tests built in...
- 06
Distributed systems
2026-07The key problem in distributed systems is getting the system to converge toward consistency as it runs. There are three core factors, the expected calibration point you set, observation, and error. What we want is to shrink the error between what actually gets carried out and the calibration point, so each measurement gives you the direction to correct in, and you keep iterating and converging...
- 07
Single responsibility
2026-07My heuristic reading of single responsibility (SRP) is "unit-testable, no side effects, a function does one thing only", and I know that isn't fully rigorous. But as a quick judgment I think it's a good one. Unit-testable...
- 08
Process-based quality control
2026-07More and more I think Agent-take development has to rely on a good enough quality control process to hold it up. It's like QA in manufacturing, sampling the critical parts, or controlling the whole process flow...
- 09
Complexity and software design
2026-07Analogizing complex software design to biology really is illuminating. Especially the self-organization principle of complex systems — since a large biological system can run fine without holding global information...
- 10
Asynchronous behavior and local information
2026-07The distinction between level-triggered and edge-triggered is pretty interesting. It's an important concept in async I/O, and what it refers to is the mode of triggering...
- 11
Modularization and package management
2026-07pnpm workspace is an interesting way to do things. It formalizes each subdirectory into a program module under unified management, so that each module exists as a package you can bring in through the @xxx/xxx form...
- 12
FROM, CTE and APPLY
2026-06The main table in FROM is usually the left table, and LEFT JOIN is really just the left table plus the intersection of the two, with the part of the right table that didn't intersect coming back as null; INNER JOIN takes the intersection directly...
- 13
AI Coding as engineering
2026-06Andrej Karpathy: From Vibe Coding to Agentic Engineering w/ Stephanie Zhan - YouTube Stop Prompting...
- 14
Taste and aesthetics
2026-06In the AI era, every programmer has turned into the exact kind of team leader they used to hate. Six months without a line of code, coding ability badly rusted, still calling himself a technical guy...
- 15
Over-abstraction
2026-05Abstraction is good, no argument about that, it hides the details behind a complex implementation and exposes only the result, but all of this has a cost. For the user, what we normally want is convenience, solving the problem with one call without having to understand everything behind it...
- 16
LINQ
2026-04This one's kind of interesting. It's called Language Integrated Query, and it lets you write sql-like queries in C#. Anything enumerable can use it...
- 17
Observable's pipe
2026-04It's like a pipe that intercepts things partway through, the middleware of an Observable, you could say. It has RxJS handling methods predefined inside, which let us hold back the returned result and preprocess it the way I want...
- 18
Signal state and form
2026-04There's one spot where Angular isn't quite like React, a property change here triggers a re-render by itself, while over on the React side you need state for that...
- 19
SimpleChanges
2026-04This is a class made for recording Input changes in a child component, usually paired with ngOnChanges and passed into the method as an argument...
- 20
Subject, Observable and Observer
2026-04Over in Observable's pipe I talked about supplying water, but that was passive supply. What if I want to add water partway through and have everyone drinking from it get the new water? Say switching from groundwater to spring water, with that sweet taste (well......)...
- 21
Context management
2026-04Use progressive disclosure to make the entry document a table of contents, then keep building layered indexes so it gets revealed a piece at a time...
- 22
Full stack and the learning science of crossing fields
2026-04I really have noticed lately that full-stack development does let you see more, especially the traps and landmines that are different on the frontend and the backend. Sometimes a frontend bug is purely the backend taking the fall...
- 23
Reflection
2026-04Reflection looks a bit like a delegate in places, but the two are pretty different. The point of a delegate is compile-time safety...
- 24
Reactive forms
2026-04The biggest difference between angular's design principles and react's is that in react, state is basically everything, while angular wraps every feature up for you...
- 25
Gotchas
2026-04There's a gotcha here, these two can't be used together. If you want to add a lone ngModel inside a reactive form, you have to put it in standalone mode...
- 26
Delegates
2026-04C#'s delegates are already in use inside DI. Say I define a func type called A and then call A() below. I didn't explicitly write the delegate keyword, but that's already a delegate...
- 27
Inversion of Control
2026-04If you don't get IoC you'll only ever use DI as a bloated factory pattern. Take converting between XML, JSON and TXT, where you new up a pile of things inside and switch on an enum to decide...
- 28
Data-oriented module design
2026-04What I've found is that instead of coupling every kind of state inside the code, it's better to use the database as unified, shared, persistent state management. Then the functional modules can be decoupled from each other, and as modules they only care about data...
- 29
Services
2026-04The way you use Angular's Service looks a lot like a Hook. The biggest difference between them is that a Hook in React can only share state inside a component...
- 30
Passing data between parent and child components
2026-04angular really does carry subscriber-receiver all the way through, and that includes child-to-parent, which also runs on the Observable mechanism, the child publishes an event...
- 31
The strangler fig pattern
2026-04The strangler fig is a parasitic plant. It wraps around its host bit by bit and draws off its nutrients, until the host withers and the fig grows vigorously in its place, hence "strangling"...
- 32
Harness engineering
2026-04Harness engineering (harness as in reins and saddle, the gear that keeps a horse in line) is an interesting idea, and it looks more like an extension of context engineering...
- 33
Decorators
2026-04The ts decorator is essentially still a higher-order function, and its use cases are about the same as py decorators: when I need to "wrap" some object but don't want to rewrite the whole original...
- 34
Going back from two-way binding to one-way
2026-04The template form of two-way binding is really a one-shot piece of syntax sugar in Angular. At bottom it packages binding the data once and having a change fire an event callback and update, all into one thing, which is the default banana-in-a-box form...
- 35
CRTP
2026-03CRTP is a pretty interesting thing. The full name is generic base class, and the acronym stands for Curiously Recurring Template Pattern...
- 36
DI
2026-03The core of DI is defining structure, and there are generally two ways to do that, interface and abstract class. The key thing is that the DI container has to know the structure of the object it handles before it can do anything further with it...
- 37
MVC and MVVM
2026-03The biggest difference between these two is that the second one adds a reactive modern frontend framework. It used to be the controller driving page updates, all by hand...
- 38
Learning in the AI era
2026-03Anthropic's latest research has pretty much confirmed what I thought before, especially combined with learning science. Put those together and we find that learning something new does need some...
- 39
Where plan and SDD fit
2026-03plan and SDD fit when: you know what needs to be done or you trust what the AI is going to do In akr's words, this kind of AI use, where the situation and the process are decided up front...
- 40
The constitutional structure of context
2026-03This paper is also interesting. It shows that even with a context file like agents.md, writing everything into it isn't always best...
- 41
Dependency injection
2026-03Dependency injection (DI) is pretty interesting. At bottom it's a more abstract kind of encapsulation that makes a whole class more general or more single-purpose. Say I need a converter...
- 42
Singletons and static classes
2026-03Right now a static constructor looks like the better option. I don't have much use for singletons or a base class here, there's no shared mutable data anyway...
- 43
Factory pattern
2026-03This one is kind of interesting. It's essentially another use of higher-order functions: you expose your public interface as taking a key and a func\<key,V>...
- 44
Composition and inheritance
2026-03The key reason for composition over inheritance is decoupling, or rather, modules like building blocks, with state handed in from outside...
- 45
Composition
2026-03If you can describe it with "has a", use composition; only use inheritance for "is a". The way I read that is, if there's no real inheritance or dependency relationship between them and you're only...
- 46
Inheritance and constraints
2026-03This part is kind of interesting, inheritance and constraints seem to overlap a little, and when you get down to it, inheritance itself also means inheriting the structure itself...
- 47
Decoupled design
2026-03The core of a design philosophy like dependency injection still comes down to one word, decoupling. Simple interface, complex core...
- 48
Serverless site deployment
2026-02Reactive pages mostly means reacting to data flow, but as far as the whole page display on the frontend goes, it's really a static page...
- 49
TS generics and extends
2026-02The \<T> generic object is probably one of the harder concepts to understand in a static language. But in essence it's like a placeholder: you tell the compiler that some type will show up here...
- 50
TS utility types
2026-02If you want the type a method returns, there's a quick way to get it. typeof A means: get the type of the value A that follows it...
- 51
TS destructuring
2026-02Destructuring assignment generally gets used on an object. Basically it splits the properties out and assigns them to local variables...
- 52
The design of Claude Code
2026-02Kind of interesting. Claude Code probably uses an agent team rather than a single agent. The top layer sorts out the requirements first, then produces an intermediate prompt and a todo list...
- 53
On full stack
2026-02There really is a view that full-stack engineers are fine, but the problem is their knowledge has breadth and no depth, not specialized enough...
- 54
Backend interaction
2026-02I know the onion model: all the requests come in, and on the way out they go through part of it again. Middleware, the way I understand it, is a bit like the @ decorator in Python...
- 55
Microservices
2026-02Generally there are microservice frameworks that sit between microservices, and the core of them is calling back and forth over RPC...
- 56
The right way to use it
2026-02I think the key to using an LLM is getting yourself out of the fixed mindset of just writing code. You act as the manager who plans the work, or the micro-managing supervisor who inspects it...
- 57
Notes
2026-02The main reason we used agno back then was to get agent functionality: actually our tech plan didn't have this at first, the earliest idea was plain prompt engineering plus a ragflow-based knowledge...
- 58
Debouncing and race conditions
2026-02Debouncing matters, especially when there's network IO between frontend and backend. If every user action fires a request to the backend...