What Happens When You Type a URL and Press Enter
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →The best stack is rarely the newest one. A practical framework for choosing languages, frameworks, databases and hosting based on your team, your product and the next few years.
Choosing a tech stack feels like a huge, permanent decision, and online debates make it feel even bigger. In reality, successful products have been built on almost every mainstream stack. What separates good choices from bad ones is fit: fit with your team, your product and your constraints.
Here's how to choose calmly.
Before comparing frameworks, write down:
These constraints eliminate most options before you ever get to the fun debates.
"Boring" doesn't mean bad. It means proven: mature, well documented, widely used, with answers already on the internet for the problems you'll hit.
Every new or niche technology spends some of your innovation budget: time spent learning, debugging immature tools and working around missing features. Spend that budget on what makes your product unique, not on infrastructure that a boring tool already handles well.
A reasonable rule: be adventurous in one area at most, and conventional everywhere else.
A team that knows Laravel deeply will usually ship faster and more reliably with Laravel than with a "better" framework they're learning on the job. The same goes for Django, Rails, Next.js, Spring or ASP.NET.
Productivity, debugging speed and the ability to make good architectural calls all come from experience. Don't throw that away lightly.
For each candidate, look at:
| Product | Sensible choices |
|---|---|
| Content site, blog, marketing pages | Static generation or a full stack framework with SSG; a headless or simple CMS |
| SaaS or dashboard | A full stack framework or SPA + API, with a relational database |
| Real-time collaboration, chat | A backend with good WebSocket support, or a managed realtime service (options) |
| Internal tools | Whatever your team knows best; admin-panel frameworks save weeks |
| Mobile app + web | Shared API; consider cross-platform frameworks if the team is small |
For the database, a relational database like PostgreSQL is a sensible default for most products. (SQL vs NoSQL.)
You can't predict everything, so optimise for changeability:
If you're torn between two options, build the same small, risky slice of the product in both: login plus one core feature. A day or two of prototyping teaches more than a week of reading comparisons.
Different rules apply. Side projects are a great place to learn something new. Just be honest about the goal: if you want to finish and launch, use what you know. If you want to learn, pick the new thing and keep the scope small. (Getting projects finished.)
The one your team already knows well and can ship quickly with. Popular, mature full stack frameworks with a relational database are a safe, productive default for most startups.
For your learning path, it's a reasonable factor. For a product, team skills, product needs and ecosystem maturity matter more than trends.
Look at its age, release history, how it handled major upgrades, who maintains and funds it, the size of its community and how many production companies depend on it.
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →There are dozens of HTTP status codes, but about fifteen cover nearly everything. What each one means, when to return it, and the mix-ups (401 vs 403, 301 vs 302) that confuse everyone.
Read →A, AAAA, CNAME, MX, TXT and NS records in plain English, why DNS changes seem slow, and the troubleshooting commands that tell you what is really going on.
Read →