Posts
-
The Event Loop Is Not Multithreading: The Most Common Concurrency Misconception in Node.js
Node's non-blocking I/O looks like parallel execution, but it runs on a single-threaded event loop — a distinction that hits hard the moment your workload turns CPU-heavy.
-
Interfaces and Composition
Go interfaces are satisfied implicitly, making composition over inheritance natural and powering the adapter pattern.
-
Semantics Lost at the Boundary, and Why the Monolith Keeps Pulling
When a large system is hard to compose, the components are usually fine. What broke is the meaning, flattened into bytes the moment it crossed a service boundary.
-
"It Builds" Is Not the Same as Well-Designed
A working build is just the floor, not a signal that the design is sound.
-
Types Are Not Safety
TypeScript's type system is a tool for thinking through your data and your boundaries, not a way to buy a feeling of safety.
-
Struct Tags and reflect
Struct tags are Go's back door for tooling; reflect reads them. Groundwork for declarative routing.
-
One Responsibility per Layer, and the Discipline It Takes
Blur a layer's job and debugging turns into guesswork across layers. On over-abstraction, under-abstraction, and when not to abstract at all.