Skip to content

Engineering notes

What actually broke, and what we shipped instead.

Notes from building production websites and applications — framework trade-offs, performance work that moved a real number, tooling that earned its place, and where AI-assisted development helps or quietly costs you. Written while shipping client work, not in theory. If you want that capability pointed at your business, that is custom web application development.

Contact

Backend

Tech News

Web Development

DevOps

More engineering

Engineering — common questions

Astro for the site layer, React for interactive islands, Tailwind for styling, Supabase for Postgres, auth and storage, and Netlify for hosting and CI/CD. GSAP handles motion. The bias is toward shipping static HTML and hydrating only what genuinely needs it.

Most agency and service-business sites are content-led, and Astro ships zero JavaScript by default while letting individual components hydrate when they need to. That suits a marketing site better than a framework that assumes a React runtime on every page. Next.js is the better answer when the product genuinely is an application. The choice is about the workload, not about which framework is superior.

Yes, on real production work, and the writing here reports both what it does well and where it costs time. The useful boundary in practice: it is strong at mechanical breadth — sweeps, migrations, tests, refactors across many files — and weakest on decisions where being confidently wrong is expensive. The judgement stays human.

Yes. The posts include working code rather than description, and nothing here depends on a proprietary framework. They document decisions made while shipping client work, including the ones that turned out to be wrong.

These are written for developers — frameworks, performance, tooling and architecture. The business software articles are written for owners deciding whether to buy or build, and live under /software/. Same studio, different audience.

Let us make some quick suggestions?

Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.