I wanted to know where my money goes without handing my bank history to a third-party app, so I built one. Importing bank CSVs, idempotent re-imports, rule-based categorization, and charts.
2026
Next.js has become the default for new web apps, but most projects don't have the problems it solves. When the heavy option is overkill and what to reach for instead.
Make was created in 1976 and is still one of the most useful task runners ever written. Why a small Makefile beats reinventing the project entry point.
Every package you add is code you did not write, do not control, and probably never read. When to use a library and when to write it yourself.
Comparing JSDOM and Happy DOM — two headless DOM implementations for JavaScript testing. When speed matters and when spec compliance matters more.
Do We Really Need Server-Side Rendering? looks at why SSR has become popular again, what it actually does in modern frameworks, and when it helps or hurts real applications.
Exploring Biome, a modern JavaScript linter and formatter that combines speed and simplicity into one tool—rethinking the ESLint + Prettier stack.
2025
An example of Vitest and Testing Library usage
An example of enforcing strict API with typescript
An example of how to build a wizard form
Fundamental practices that separate good developers from mediocre ones.
A few tips about code reviews
Writing some suggestions about good maintainable frontend code.
An example of how to fetch data in React