Code quality

How AI is quietly killing open source

LLMs generate code on demand, but they do not replace maintainers, communities, or years of shared learning. This piece explores how AI-assisted coding risks fragmenting logic, increasing technical debt, and slowly eroding the open source ecosystem.

A guide to vibe coding vs AI-assisted development

Vibe coding or AI-assisted development? The choice isn't binary, but getting it wrong at the wrong stage will cost you. This piece breaks down when to embrace speed over architecture, when to take back control, and why the best teams don't pick sides.

AI code review tools: what works, what doesn't, and how to set it up

AI code review catches what humans miss and misses what humans catch. This guide compares the tools, shows what each catches, and walks through setup without replacing human judgment.

The value of code review

Code reviews improve more than code quality. Done well, they shape better problem-solving, expose edge cases, and spread knowledge across teams. Learn how small, focused reviews and AI support help teams ship faster with confidence.

Getting started with performance testing

Performance bugs erode trust quietly until users explode. Three pragmatic steps help you catch slowdowns early: explore real bottlenecks with Sentry, test with production-sized data, and add lightweight API load tests.

How to pragmatically leverage AI as a startup

If you believe what you see on LinkedIn, startups don't need employees anymore, real founders just have agents building their companies. You write a prompt, fire off the agent, and wait for customers. In reality, you get a vague workflow that produces a mediocre demo at best.

Analyse your tables for better performance

I recently encountered a issue with MySQL query performance. A particular query would perform very badly in production, but perform very well in the testing environments.

No designer? No problem with v0

For small teams without a designer, v0 is a game-changer. The cost justifies itself by letting you explore and validate ideas in minutes rather than days.

The stainless steel lesson: why boring technology outlasts shiny frameworks

Shiny frameworks promise magic, but like cheap non-stick pans, they scratch, peel, and end up in the bin. Boring technology, like stainless steel, isn’t sexy, but it lasts for decades if treated well. The lesson? Build for the long haul, not the quick thrill.

Legacy vs technical debt: how investors can spot hidden risks in software products

What can investors do about legacy code to prevent your startup from failure? What is the difference between legacy and technical debt?

Ignoring revisions when using git blame

Tired of git blame pointing to useless formatting commits? Learn how to ignore revisions with --ignore-rev or .git-blame-ignore-revs to keep Git history accurate and helpful.

A Rubber Duck’s Guide to Better Engineering: Part 2

Professor Quacks is back with five more principles for better engineering: build tools that help, move with healthy urgency, plan wisely, work well with others, and lead by example. These aren’t just coding tips, they’re culture-shaping lessons.

Fitness for purpose: taking risks with quality

When product teams obsess over perfect quality, they risk standing still, but by embracing a 'fit for purpose' mindset and planning for instability, they can move faster and smarter.

These questions will be answered after technical due diligence

Investing without technical due diligence is like buying a used car without opening the bonnet. This article demystifies the audit process, shares what red flags we look for, and explains why investors should care deeply about code, processes and product.

What would it cost to rebuild this software from scratch?

Evaluating the cost of rebuilding software from scratch involves more than counting development hours; it requires recognising the invisible value of user feedback, lessons learned, and embedded experience.

Subscribe