Expensify's company blog, with posts from its engineers and CEO on SQLite performance, hiring, startups and running a company.
HN links it for the SQLite scaling post and the controversial .NET hiring post, which commenters discuss alongside SQLite's limits and WAL options.
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,…
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.
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-programmers/ (I'm sure Jon Skeet was devastated).
And what's changed since 2013? Quite a lot: Roslyn... open-sourcing .NET...
What does "scale" here mean? Sqlite can go quite far https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a-single-server
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.
> 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-single-server/
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-single-server/