Top
Best
New

Posted by tradertef 1 day ago

I run multiple $10K MRR companies on a $20/month tech stack(stevehanov.ca)
883 points | 485 commentspage 11
diebillionaires 20 hours ago|
Agree with a lot of this except sqlite, and the fact that if I commit to building something I typically put it in the cloud with basic scaling from the start for efficiency.
komat 1 day ago||
Cool but missing the Claude Code or Coding Agent part imo
PhilippGille 1 day ago|
He specifically mentions that he is using GitHub Copilot because of how Microsoft bills per request instead of token.
codemog 1 day ago||
A lot of this advice is good or at least interesting. A lot of it is questionable. Python is completely fine for the backend. And using SQLite for your prod database is a bad idea, just use Postgres or similar.
tkcranny 1 day ago||
There’s a lot to be said about his approach with go for simplicity. Python needs virtual environments, package managers, dependencies on disk, a wsgi/asgi server to run forked copies of the server, and all of that uses 4x-20x the ram usage of go. Docker usually gets involved around here and before you know it you’re neck deep in helm charts and cursing CNI configs in an EKS cluster.

The go equivalent of just coping one file across to a server a restarting its process has a lot of appeal and clearly works well for him.

berkes 1 day ago||
Yes. It strikes me as odd how many people will put forward Python with the argument of "simplicity".

It is not. Simple. It may be "easy" but easy != simple (simple is hard, I tend to say).

I'm currently involved in a project that was initially layed out as microservices in rust and some go, to slowly replace a monolyth Django monstrosity of 12+ years tech debt.

But the new hires are pushing back and re-introducing python, eith that argument of simplicity. Sure, python is much easier than a rust equivalent. Esp in early phases. But to me, 25+ years developer/engineer, yet new to python, it's unbelievable complex. Yes, uv solves some. As does ty and ruff. But, my goodness, what a mess to set up simple ci pipelines, a local development machine (that doesn't break my OS or other software on that machine). Hell, even the dockerfiles are magnitudes more complex than most others I've encountered.

wanderlust123 1 day ago||
I am not following the difficulties you have mentioned. Setting up a local dev environment in Python is trivial with UV.

The only major downside of Python is its got a bit poor module system and nothing as seamless as Cargo.

Beyond that the code is a million times easier to understand for a web app.

chrismorgan 1 day ago|||
Python will take you a long way, but its ceiling (both typical and absolute) is far lower than the likes of Go and Rust. For typical implementations, the difference may be a factor of ten. For careful implementations (of both), it can be a lot more than that.

Does the difference matter? You must decide that.

As for your dismissing SQLite: please justify why it’s a bad idea. Because I strongly disagree.

mattmanser 1 day ago||
What a load of nonsense.
danhau 1 day ago||
Why is it nonsense? Sounds reasonable to me.
blitzar 1 day ago||
> its ceiling (both typical and absolute) is far lower

If you plan to remaining smaller than instagram, the ceiling is comfortably above you.

pdimitar 23 hours ago|||
There are a myriad middle states in-between "frupid" (so frugal that it's stupid) and "Instagram scale".

Python requires much more hand-holding that many don't want to do for good reasons (I prefer to work on the product unimpeded and not feeling pride having the knowledge to babysit obsolete stacks carried by university nostalgia).

With Go, Rust, Zig, and a few others -- it's a single binary.

In this same HN thread another person said it better than me: https://news.ycombinator.com/item?id=47737151

jasdfwasd 1 day ago||||
I plan to remain smaller than two VMs
chrismorgan 17 hours ago||||
The context was explicitly single machine.
Capricorn2481 20 hours ago|||
This is a post about keeping your infrastructure simple, so Instagram is not a good ceiling to pick. People do all kinds of hacks to scale Python before they hit Instagram levels
gls2ro 1 day ago|||
Why is SQLite bad for production database?

Yes, it has some things that behave differently than PostgreSQL but I am curious about why you think that.

trick-or-treat 1 day ago||
For read only it can be a great option. But even then I would choose D1 which has an amazing free tier and is sqlite under da hood.
saltmate 1 day ago||
But then you don't get the benefits of having the DB locally, with in-process access.
trick-or-treat 1 day ago||
It's local to the worker? I don't understand what you mean.
sgarland 23 hours ago||
Unless your Cloudflare worker and the DB are scheduled onto the same physical server, they are not local to one another. I don’t know much about D1, but the overwhelming majority of cloud infra makes no such guarantees, nor are they likely to want to architect it in that manner.
kentonv 21 hours ago||
Cloudflare's Durable Objects puts your Worker and SQLite DB on the same physical server (and lets you easily spawn millions of these pairs around the world).

D1 is a simplified wrapper around DO, but D1 does not put your DB on the same machine. You need to use DO directly to get local DBs.

https://developers.cloudflare.com/durable-objects/

(I am the lead engineer for Cloudflare Workers.)

sgarland 20 hours ago||
Very cool, thanks for the response!
cenamus 1 day ago||
I think the point is that your Python webapp will have more problems scaling to let's say 10,000 customers on a 5$ VPS tham Go. Of course you can always get beefier servers, but then that adds up for every project
harvey9 1 day ago||
At 10,000 paying customers I don't think it is frivolous to move to a 10/month vps, or maybe a second 5/month one for fail-over.
the__alchemist 22 hours ago|
I concur with some of the commenters that this read as a bit of a brain dump. It has a thread connecting several loosely-related topics.

Observation #1: You can also solve the tech stack problem with Heroku. I think the author's stack probably has a steeper learning curve, but is a cheaper option. I think it's a bit of an odd comparison (I won't say straw-man, as I don't doubt some people do this) to go from a fully-controlled simple setup to using AWS with a pile of extra crap. You can also, for example, run something similar to what he or she is describing on AWS, Heroku etc. (I.e. without the things in the AWS diagram he indicated like kubernetes and load balancers.)

Observation #2: I have not found WAL mode is an antidote to SQLite locks during multiple concurrent writes. (This is anecdotal)

I think regarding Go vs Python/Ruby etc. I completely get that. I would now like to check out Go on web. I use Rust for most of my software writing, but am still on Python for web servers, because there is nothing I can use for Rust that is as powerful and easy as Django.