Blog
Short reads on building software.
Tips, tool reviews and news for people who build for the web. One idea per post, explained plainly.
56 postsPage 3 of 5RSS feed
Structured logging: make your logs searchable
Plain text logs are easy to write and painful to search. Structured JSON logs with levels and consistent fields turn finding one failed order into a single query.
How to reduce JavaScript bundle size
Every kilobyte of JavaScript is downloaded, parsed and run before a page responds. Measure the bundle, split it by route, lazy load the rest and trim dependencies.
Dependency hygiene: audit, update and prune npm packages
Outdated and unused packages are a security risk and a tax on every install. A short routine with npm audit, npm outdated and a cleanup tool keeps a project healthy.
Microservice observability: logs, metrics and traces
When a request crosses ten services, one log file cannot explain a slow checkout. Logs, metrics and traces each answer a different question. Here is how they fit.
React 19: Actions, the use API and Server Components
React 19 made forms and async state much simpler with Actions, useActionState and useOptimistic, added the use API and stabilized Server Components. A practical summary.
Software supply chain security: SBOMs and signed builds
Most of your application is code you did not write. SBOMs, automated scanning, trusted registries and signed artifacts show what you ship and prove where it came from.
Client-side caching for API responses
Refetching the same data on every visit wastes time and bandwidth. HTTP cache headers, an in-memory cache and browser storage each solve a different part of the problem.
Web Workers: move heavy work off the main thread
Heavy JavaScript freezes the page because it shares a thread with the interface. A Web Worker runs that work in the background. A working example and the limits to know.
WebAssembly beyond the browser: what WASI enables
WebAssembly began as a way to run fast code in browsers. With WASI it runs on servers, at the edge and inside plugins: sandboxed, portable and quick to start.
Angular Signals: fine-grained reactivity explained
Signals give Angular a precise way to track state: when a value changes, only the views that read it update. How signal, computed and effect work, with examples.
Tree shaking: why your bundle still ships unused code
Tree shaking removes code you never import, but only when the bundler can prove it is unused. ES modules, the sideEffects flag and your import style decide what goes.
Monorepo dependencies with pnpm and npm workspaces
Workspaces let a frontend, an API and shared packages live in one repository with one install. How pnpm and npm workspaces work, and when each one fits.
Tell us what’s in the way.
A few lines is enough. You get a candid yes, a candid no, or a sharper question.
- Working software in week four
- A reply in one business day
- Handover is the deliverable
Prefer email? hello@2haas.com