Expensify Blog
blog.expensify.com · Company blog · on HN since 2009
Expensify's company blog, with posts from its engineers and CEO on SQLite performance, hiring, startups and running a company.
What HN saysHN links it for the SQLite scaling post and the controversial .NET hiring post, which commenters discuss alongside SQLite's limits and WAL options.
83HN people shared it
50linked it in comments
40stories submitted
617story points
4 months agolast shared
2009people per year2026
Most-shared posts
- 1Scaling SQLite to 4M QPS on a Single Server (EC2 vs. Bare Metal)26 people · 248 points · first shared 2018 · 42 comments on HN
- 2CEO Friday: Why we don’t hire .NET programmers15 people · 114 points · first shared 2011 · 75 comments on HN
- 3Scaling SQLite to 4M QPS on a single server (2018)13 people · 6 points · first shared 2023 · discussion on HN
- 4How to take your whole company overseas, and live to tell the tale4 people · 5 points · first shared 2013 · discussion on HN
- 5The secret experiment behind the Expensify Lounge4 people · 3 points · first shared 2023 · 1 comments on HN
- 6Questions to Ask Before Joining a Startup2 people · 38 points · first shared 2014 · 23 comments on HN
- 7Expensify and the surprisingly difficult challenge of finding the right people2 people · 6 points · first shared 2011 · 2 comments on HN
- 8Amp2 people · first shared 2018
- 9Expensifys comp review process2 people · first shared 2016
- 10Bringing Silicon Valley to the Midwest1 people · 89 points · first shared 2014 · 79 comments on HN
- 11Expensify's firing strategy1 people · 59 points · first shared 2016 · 58 comments on HN
- 12Is the TechCrunch50 DemoPit worth it?1 people · 17 points · first shared 2009 · 8 comments on HN
- 13Cross platform mobile development, Oh My!1 people · 5 points · first shared 2011 · discussion on HN
- 14Adverecruiting: Our Latest Bart/Muni Ads1 people · 4 points · first shared 2016 · discussion on HN
- 15CEO Friday: Startup Management as a P2P Network1 people · 3 points · first shared 2012 · discussion on HN
What HN people wrote when they linked it
Devasta · 2024-05-29
> Encourage workers back in with a carrot not the stick
Expensify tried this, making the best office they possible could, the end result was people would come in to try it, leave positive feedback then never go back.
https://use.expensify.com/blog/the-secret-experiment-behind-the-expens…
infamia · 2022-12-11
> It’s high quality software that is being pushed well past its intended use case. Maybe it will work out fine but rqlite is taking something designed as an on disk file format for one program and trying to use it as a network distributed concurrent database system. It would be surprising if they didn’t expose bugs in SQLite.
Expensify is pushing millions of queries/sec by layering Bedrockdb over top of SQLite. You can go a long way and do amazing, unexpected things with a very solid foundation.
https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
alberth · 2022-04-25
a. I'm surprised no one has mentioned WAL2 + BEGIN TRANSACTION, both of which are in separate branches with the plan to be merged into main.
Even though SQLite can handle 99% of peoples use cases, WAL2 + BEGIN TRANSACTION will greatly close that last 1% gap.
b. Expensify has created a client/server database based on SQLite called https://bedrockdb.com and years ago it was scaling to 4M+ qps https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
dest · 2019-08-23
Interesting pick from one of the links in the article:
"SQLite has fantastic write performance as well. By default SQLite uses database-level locking (minimal concurrency), and there is an “out of the box” option to enable WAL mode to get fantastic read concurrency — as shown by this test. But lesser known is that there is a branch of SQLite that has page locking, which enables for fantastic concurrent write performance."
https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
781 · 2019-05-27
> I don’t remember any “we don’t hire people on Windows/using an IDE”
Two famous examples:
http://charlespetzold.com/etc/DoesVisualStudioRotTheMind.html
> If you are a startup looking to hire really excellent people, take notice of .NET on a resume, and ask why it’s there.
https://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-…
V-2 · 2015-10-13
Some of this criticism was outdated already, or has gone out of date since.
WebForms (with their underlying concept of abstracting away how web really works) were already in decline two years ago, replaced by MVC.
As a former C# developer, turned Android developer, of course I have to admit there is some walled garden mentality among .NET devs, but I think they get stigmatized for that way more than average. If a Rubyist never sticks nose outside their beloved technology stack, noone makes such a big deal out of it.
Also it's nothing in compare to vitriolic anti-M$ hater mentality, often directed at developers themselves.
Or bizarre anti .NET-bias, case in point: http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-p… (I'm sure Jon Skeet was devastated).
And what's changed since 2013? Quite a lot: Roslyn... open-sourcing .NET...
bitcartel · 2013-02-28
It's not just Heroku, it seems a lot of start-ups love to beat down on C# and .NET.
"Why we don’t hire .NET programmers" http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-p…
59243 · 2021-02-01
Expensify | Full-Stack, PHP, Java, C++, iOS, Android, and/or Infrastructure Engineer | San Francisco, Portland, Michigan, London | REMOTE, VISA welcome | Full-time | we.are.expensify.com | $135K+
Expensify is the most widely used expense management system in the world, with millions of users and more customers than the rest of the industry combined, processing billions of real dollars annually. Expensify has ~130 employees, is self-managed (no VC control), is extremely profitable, and is working to buy back all shares to become 100% employee owned, intending to create liquidity through internal buyback programs and eventual dividends. As an equal member of the team:
- Your voice will carry weight on day one.
- Your responsibilities will increase quickly and without limit, as there is virtually no formal management structure to constrain your growth.
- You will work on every part of the codebase, without being constrained to any team, layer, or platform.
- You will receive a fair, proactive raise bi-annually, without you needing to ask.
- You will have the option (not required) to travel with the team domestically and internationally multiple times a year -- spouses and kids welcome (and paid for).
- You will be provided the best equipment, a personal mentor committed to your success, tools to encourage a healthy work/life balance, and a workplace that is safe, respectful, collaborative, and inspiring.
- You will be truly welcome regardless of age, race, gender,…
mintplant · 2019-05-09
michael_storm · 2016-07-14
For another laugh, try https://blog.expensify.com/2016/06/17/expensifys-comp-review-process/. This quotation sums up both the pretentiousness and the bullshit nicely:
> We don’t negotiate during the hiring process. Our first offer is our last and best offer. If it’s basically in the right ballpark, then we encourage you to take it and we’ll adjust it later if we were off. But if we’re so far off that we’re not in the right ballpark, then clearly this isn’t going to work anyway. There’s no need to fight over a few percent: let’s just get started and adjust later.
Apparently they'd like to hire "10x engineers" (lol), but not quite enough to actually talk with them to determine a mutually beneficial compensation scheme. Their offer is the fair one, and a counter-offer is the engineer quibbling over a couple percent. If that's the case, why can't that few percent go the engineer's way? Nice to see that they've resolved the problem in their favor.
If a prospective employer gave me a non-negotiable offer and refused to countenance alternatives, I'd run far, far away from that paternalistic prison, no matter the offer or company.
HackerThemAll · 2026-07-19
Have you ever contemplated the true performance of SQLite? Expensify reached 4M point database queries per second, and an artificial (more like parser-testing, not database-touching) 160M qps.
If your backend is on a single machine of predictable performance, and you properly index your queries, and you don't require remote DB connections, you don't need anything else but SQLite for 95% of use cases.
https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
andersmurphy · 2025-12-02
https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
Linked at the bottom of the article is the most extreme I've seen.
randomdrake · 2024-09-12
Worked here. Changed my mind on SQLite. Hipp worked alongside us. SQLite can be crazy performant:
https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
AlexErrant · 2024-06-25
What does "scale" here mean? Sqlite can go quite far https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
I agree with you w/r/t "Why build your own query builder" though since (AFAIK) you can't touch the underlying SQL. I'm making heavy usage of FTS5 in my app, and it doesn't look like they support that.
And, to be fair, feathers/rethink also have the weaknesses you list:
- Why build your own query builder
- This also isn't really something you could drop into an existing project very easily
Personally, I've been pretty happy with https://github.com/vlcn-io/cr-sqlite/ which is just a sqlite extension that can run in the browser.
_xnmw · 2024-05-20
I wonder if 1.7 petabytes of data (1T indexed records) could fit on a single (very) beefy baremetal server for under a couple thousand dollars a month, served by SQLite.
Like this: https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
rjbwork · 2024-04-13
https://use.expensify.com/blog/ceo-friday-why-we-dont-hire-net-program… this article again, but in HN comment form this time. yawn
frompdx · 2024-04-08
You might be interested in how Expensify use(s/d) SQLite for their product. https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
spiffytech · 2023-12-11
Also Expensify's Bedrock, which powers their widely-circulated "Scaling SQLite to 4M QPS" article:
https://bedrockdb.com/
https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
sbstp · 2023-10-11
Expensify has blogged[0] about having terabyte sized SQLite databases.
[0] https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-se…
yawaramin · 2023-08-31
Would 4M qps be enough? :-)
SQLite can achieve this with some help: https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
More seriously, I suspect that plain SQLite by itself, running in process in the main service, writing to a ':memory:' database for ultimate speed or perhaps to a local file with WAL mode for slightly more durability, could achieve pretty nice efficiency and work as the main transaction manager database.
markusw · 2022-12-07
@levelsio famously runs a dozen websites all backed by SQLite, with 200M reqs / month: https://twitter.com/levelsio/status/1520356430800617472
Expensify got 4 million request _per second_ out of a custom SQLite-based setup (on a huge machine, but still): https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
I would call those serious production apps.
tiffanyh · 2022-09-01
In 2018, folks were getting 4M queries per second using SQLite (BedrockDB) [0].
This was also accomplished from just 1 server, not needing 40 shards like blog post.
[0] https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
akrymski · 2022-05-25
Not trolling, I genuinely think it's a lot of money for a simple database though. Maybe yours isn't, but I don't know any provider that charges less than 300 for a hosted db.
Btw Sqlite can go a long way:
https://fly.io/blog/all-in-on-sqlite-litestream/
https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
mwcampbell · 2022-05-10
Maybe the monolith shouldn't use PHP and MySQL. But what about, say, a high-performance managed runtime (e.g. JVM or CLR) and SQLite? Expensify's findings [1] suggest that with vertical scaling, SQLite can go very far.
[1]: https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
smarx007 · 2021-11-12
I always admired their use of SQLite: https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
yread · 2021-04-15
50k reads per second? And you need how many servers for that? Sqlite can't do infinite reads but pretty close
https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
jakoblorz · 2021-03-25
Depending on the use case (SaaS offerings with per customer shards) you can actually scale sqlite quite high.
Expensify scaled to 4 mio qps (queries per second) [1], so if one of your customers is exceeding that, you better be looking at another DBMS but below that - well sqlite is an option.
[1] https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
nijave · 2021-03-25
Sqlite can handle that https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…
I've been toying around with it locally for playing with big data sets (50-100s GB) uncompressed and it works pretty well. It's much easier than postgres and mysql which have a lot more knobs and tuning required)
fmajid · 2021-03-25
Surprised no one has mentioned how Expensify use SQLite as their main data store:
https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-si…