You'd be surprised at how fast you can create something with an SQL database, a well used backend framework (eg. Rails) and a well used frontend framework. The things big tech companies do are usually to avoid scaling problems. In particular scaling on the engineering side. The above can scale to billions on the user side if needed but 10k engineers constantly updating and messing with a traditional SQL schema doesn'…
Building for the 99% Developers
11–20 of 310 posts
Re: Building for the 99% Developers
#12My approach - I could not care less about what FAANG does. Due to their scale and org structure they are solving problems which 99% of mere mortal businesses will never face. I am not a luddite and am constantly looking for new things that can make my development easier. But I consider those from ROI point of view as I am vendor with clients and I want to make money, not waste it. Coolness factor, fashion, corporate propaganda / indoctrination mean zilch to me.
Re: Building for the 99% Developers
#13Re: Building for the 99% Developers
#14Who is trying to switch to GraphQL? Especially for service to service, internal calls?
I've seen a lot of suspect technologies in my career but GraphQL is definitely the worst
Re: Building for the 99% Developers
#15We way over complicate things. SQLite can be used for 95% of real world use cases. And whenever WAL2 + BEGIN CONCURRENT get merged into main, it will be able to handle 99% use cases. And don’t fool yourself into believing you’re not in that 1%.
The biggest single trick I learned was to use 1 sqlite connection instance for the entire lifetime of the application. You can add orders of magnitude more throughput with this path. SQLite serializes writers by default so dont duplicate the effort. You can even use the RETURNING keyword to grab insert keys without needing to lock over LastInsertRowId.
We also are close to 100% of business logic being executed via SQL queries as well.
Re: Building for the 99% Developers
#16I'd never bother suggesting it though:
- no one likes being told they're small when they think they're big
- it's bad for devs careers (Resume-Driven Development)
- as TFA points out - it's not what FAANG are doing so I'd lack legitimacy
Re: Building for the 99% Developers
#17Excellent article. Most people need to get some data from a database to a web page and back again, to paraphrase dhh (I think). This does not require a huge amount of architecture or infrastructure in most cases, even at scale. The engineering challenges should be elsewhere , not in this relatively simple and solved problem.
It’s a solved problem? The most difficult to navigate and extended codebase I ever saw was a medium-to-large sized Rails codebase.
Thing is, I see all the times web frameworks that would be used in those cases, but improve in many directions almost irrelevant for it. Performance? Ability to do same webapps in yet another boring scripting language? Very specific and rigid abstractions and fancy tools that provide for very little flexibility? Fancy reactive approaches that manage to turn the codebase inside out, create hard and undebuggable problems out of the easy ones, and sometimes provide random subset of guarantees of various degrees of usefulness (I’m actually a fan of FRP, just not the misuse of it)?
Somehow Django, with its clear admin system and other out-of-the-box QoL modules remains as close to the most practical and useful approach as one can imagine. (Still even people who use it manage to reimplement its parts for no reason. Every sufficiently big webapp contains a bad, buggy, incoherent implementation of 90% of Django)
There are incredible amounts of money and effort and time to be solved by creating frameworks and abstractions that help with the glorious use-case of “huge, annoying, evolving in all the wrong directions essentially CRUD app”. Yet we’re not even stuck with Django - I see webdev regressing into horrifying piles of JS…
Re: Building for the 99% Developers
#18We way over complicate things. SQLite can be used for 95% of real world use cases. And whenever WAL2 + BEGIN CONCURRENT get merged into main, it will be able to handle 99% use cases. And don’t fool yourself into believing you’re not in that 1%.
We've been using SQLite for 100% of our data persistence needs for the last ~5-6 years now. Our largest single environment is probably getting close to 500gb total size. Hundreds of concurrent users are no problem for us, even without these enhancements (we use WAL currently). The biggest single trick I learned was to use 1 sqlite connection instance for the entire lifetime of the application. You can add orders of m…
Would you mind sharing how you implement/use 1 connection?
Re: Building for the 99% Developers
#19Whether this distinction is relevant to you depends on where you sit. If you are a startup selling developer tools, by all means think about the 99% developers, but also know that a lot of them are in environments that don't spend a lot on tools and are averse to exploring new technologies. If you are a developer in one of these environments, well, the standard advice on Hacker News is already "You're not Google."
I feel like some of this is a bit fatalistic. The 99% can follow a DevOps playbook if they realize its value, and it's cheaper to have DevOps than to not have DevOps, in the anything-more-than-short timeframe. The 99% can certainly have test coverage standards for new code. Somehow, we moved from a world where the 99% didn't use source control, and now they do! Some technologies and practices are so impactful, you should aspire to them no matter what you're environment is (e.g. code review, CI/CD).
The 99% concept also hides a lot of important details, as it's defined by exclusion. The choices you need to make for an early stage startup, a mature WordPress shop for small businesses, and a legacy mainframe team in a F50 are as different from each other as they are from FAANG.
Re: Building for the 99% Developers
#20Earlier quoted context omitted.
We've been using SQLite for 100% of our data persistence needs for the last ~5-6 years now. Our largest single environment is probably getting close to 500gb total size. Hundreds of concurrent users are no problem for us, even without these enhancements (we use WAL currently). The biggest single trick I learned was to use 1 sqlite connection instance for the entire lifetime of the application. You can add orders of m…
That’s great to hear. Would you mind sharing how you implement/use 1 connection?