Writing.
Essays, playbooks, and short notes on software, digital marketing, and start-up operating. One new piece each week.
By domain.
All posts.
Showing 91–100 of 109.
React Server Components: A Mental Model That Actually Sticks
Most React developers I've onboarded onto an App Router project have the same first reaction: "Oh, Server Components are like SSR." This is wrong in a way that takes weeks to unlearn. The mistake leads to apps that ship JavaScript they don't need, fetch data i
React 19 Hooks: use(), useOptimistic, useActionState in Production
React 19 introduced three hooks that fundamentally change how production React apps handle async data and forms: use(), useOptimistic, and useActionState. Used together, they replace huge amounts of boilerplate that previously took libraries like SWR, React Qu
React Rendering Performance: When to memo, When Not to (2026 Edition)
For most of React's history, the standard performance advice was: profile, find re-renders, wrap things in useMemo, useCallback, and React.memo. The advice produced codebases full of memoisation that couldn't pass a real audit. half of it was wrong (memoising
Go Concurrency Patterns That Actually Hold Up in Production
Go's concurrency model is famously approachable: go func() and you have a goroutine. The trap is that easy to write is not the same as easy to write correctly at scale. Most production Go incidents I've debugged trace back to one of three things: leaked gorout
Go HTTP Services in 2026: net/http vs Gin, Echo, Chi, Fiber
For years, the standard advice for Go HTTP services was "use Chi" or "use Gin". anything to escape net/http's missing features. The standard library couldn't do path parameters, methods routing was awkward, middleware composition was painful. Frameworks closed
Go gRPC in Production: Patterns for Reliable Microservice Communication
When Go services talk to each other across a network, gRPC is the default for good reason: schema-first contracts, generated client and server code, streaming support, and a binary wire format that's faster and smaller than JSON. But gRPC's defaults are not pr
Spring Boot AI Error Analyzer: One Annotation, Plain-English Stack Traces
Every Java team I've worked with loses hours per week to the same ritual. An exception fires in production, an engineer copies the stack trace into a chat, scrolls past framework noise to find the one line that matters, then walks back through the code to figu
Spring Boot Modular Monolith: Better Than Microservices for Most Teams
The pendulum has swung back. After a decade of teams over-correcting from monoliths to microservices and discovering the operational tax (distributed tracing, network failures, eventual consistency, deploy-time coupling pretending to be runtime decoupling), th
OpenTelemetry in Spring Boot: A Production Observability Setup
OpenTelemetry has become the default observability stack for modern Java services. It's vendor-neutral (you can ship to Datadog, Honeycomb, Grafana Tempo, Jaeger. same code), it covers traces, metrics, and logs in one SDK, and Spring Boot's integration story i
Spring WebFlux vs Virtual Threads: Which Concurrency Model in 2026
For five years, Spring teams chasing high throughput had one answer: WebFlux. Reactive streams, non-blocking I/O, the whole reactive programming model. The cost was steep. every dependency had to be reactive (R2DBC instead of JDBC, reactive Kafka clients, reac
software hub →
Everything I’ve written on software. Start here if you want the deep stack in one place.
Marketingmarketing hub →
Everything I’ve written on marketing. Start here if you want the deep stack in one place.
Startupstartup hub →
Everything I’ve written on startup. Start here if you want the deep stack in one place.
Automationautomation hub →
Everything I’ve written on automation. Start here if you want the deep stack in one place.