However we have a whole team working to improve Postgres and we always prefer to contribute those efforts to the Postgres community.
1,528 karma · joined March 27, 2011
[ my public key: https://keybase.io/kelp; my proof: https://keybase.io/kelp/sigs/BnRbIM-2QS4jsMclFvHJr9J9q-HioxWHvteK6DhGR1c ]
However we have a whole team working to improve Postgres and we always prefer to contribute those efforts to the Postgres community.
Vitess today is not the Vitess of 2021. About 70% of the current codebase was written in the last five years, based on lessons we learned running it at scale.
Neki is built for Postgres from the ground up, by the engineers who did that work.
On the Multigres comparison, I'll admit we get a bit salty, mostly because "Vitess for Postgres" invites the comparison. But to date there's no public evidence of a working sharding implementation in Multigres. Their sharding design doc landed this week, and it lists cross-shard query planning and resharding execution as explicitly out of scope.
Neki does sharding today, including online resharding that switches traffic without a maintenance window. It isn't open source, but you can spin up a cluster and try it yourself.
https://github.com/vitessio/vitess/graphs/contributors?from=...
ls -lh hello.wasm
-rw-r--r--@ 1 tcole staff 24M Apr 22 14:18 hello.wasm
This is on macOS. That is hello.py compiled to wasm with Py2wasm. cat hello.py
print("Hello, Wasm!")
time python3 ./hello.py
Hello, Wasm!
________________________________________________________
Executed in 26.86 millis fish external
usr time 16.37 millis 0.13 millis 16.24 millis
sys time 7.25 millis 1.14 millis 6.11 millis
time wasmer hello.wasm
Hello, Wasm!
________________________________________________________
Executed in 84.77 millis fish external
usr time 50.26 millis 0.14 millis 50.12 millis
sys time 28.97 millis 1.21 millis 27.76 millis
time wasmtime hello.wasm
Hello, Wasm!
________________________________________________________
Executed in 141.72 millis fish external
usr time 120.86 millis 0.13 millis 120.72 millis
sys time 16.65 millis 1.20 millis 15.45 millisI think you're suggesting they might have a canary fleet, but there wasn't anything/enough that preventing a mistake from bypassing the carry fleet before going to production?
Could be!
When I first got the Volvo the GPS and LTE connection would periodically stop working for a day or two. They pushed a fix for it. Later they added CarPlay, which wasn't there when I got the car. Good updates. But not as frequent at Rivian.
Was Volvo able to fix it with another OTA or did people have to go in for service?
I got my R1T in June 2023 and since here are a few things they've improved, just off the top of my head, not bothering to look it up:
1. Significant improvement to ride quality via different / better suspension tuning.
2. Ability to schedule warming the cabin and pre-condition the battery
3. Completely redesigned the UX for setting drive modes and suspension height (for the better IMO)
4. Added a ton of car info, like battery temp, motor temp, and other info like altitude, various angles the vehicle is at (for off-roading), degrees the front wheels are turned
5. Added additional settings for ride softness / firmness (I got this update yesterday and haven't tried it yet)
When an update is ready I get a notification in the car and from the Rivian app on my phone. I can just hit apply and it installs it.
IMO a USB install would be a substantially worse experience and it would be much less likely that customers would actually install it.
But, for the type of person who just wants the car to stay the same as it was the day they bought it, and never change, it's not the vehicle for them. Personally I really like that it's continually improving and I don't have to go in for service or even go out to the truck to do an update.
For me, I don't want to have to tinker too much, but I want to be able to. I think the ideal would be something like SteamOS on Steam Deck where you can get into the system, and you can change or add things. But the default is just having it all take care of for you.
That said, cars have all sorts of regulations about how certain things work. I have no idea how any of the above ideas would interact with those regulations.
The "financialzing" is just that we decided owning a home was the best way for the middle class to build wealth.
The downside of this is now every homeowner wants their residence to go up in value. So they support policies that encourage that. We've done that for so long, few people can afford to buy a home anymore.
The alternative would be to 1) not have the gov involved in incentivizing homeownership 2) change zoning and permitting policies to encourage much much more supply
Yes, there would be financial instruments involved in all of this. But it might look more like car ownership, where the asset depreciates over time. (Like is often the case in Japan with housing).
But housing would not be something people look at as a way to build wealth.
However, you could still make money building housing, apartments, etc. Or even owning apartment buildings and charging people to live in them.
They put every kind of shape, texture, and material all into one house, in one room.
This kind of maximalist design is trying to seem luxurious. But it ends up being overwrought, shocking to look at, and filled with unusable features like that weird fireplace in the 'dome sweet dome" house.
If you can trivially move existing code to run in a WASM VM you get the benefits of isolation and a convenient artifact to move around for deployment and scheduling.
I think the history of successful platforms are ones that still supported the old way of doing things, while enabling a new and better way. Of course that comes with lots of tradeoffs that are often hard to stomach.
And yes, lots of echoes of Java's "write once run anywhere" but as lots of people have pointed out, wasm is language agnostic, and many languages have support for it.
Since I've been web applications and distributed systems, the evolution has been something like this.
1. Copy files around, into the web or application servers directory. This was simple but isolation, repeatability and testability was hard. The application dependencies were directly tied to the host, so you had to be very careful about your upgrades breaking applications. The lack of isolation is not suitable for multi-tenant environments for security and capacity planning reasons. It's pretty hard to run multiple-applications (1)
2. Things like bundler, and other language specific tools that let you bundle your application dependencies together. Avoids some of the host OS related upgrade issues, but again, no real isolation.
3. VMs. The whole cloud industry started on this. You get true isolation of your whole application at the cost of complexity and weight. Scheduling new VMs is not a fast process because you're copying around or at least booting a whole OS. You still have to manage OS images. There is also generally a tax on memory that you have to pay, so you waste some resources with VMs to get the isolation. Amazon invested in Nitro to avoid paying a lot of this tax.
4. Containers. Lighter than VMs, good enough isolation in a lot of cases, especially inside of an organization. Lower tax than VMs. More testable. But containers are still fairly heavy, startup time can be slowish. So you have some limitations on how fast you can scale up and down in response to load. Also isolation isn't good enough for some workloads. So we see things like firecracker VMs being used to improve isolation.
5. Wasm on the server side. Much lighter than containers. Less memory overhead, way less startup time. Probably faster startup time than even firecracker. So for lambda like workloads you could could have a lot better cold start latency. You probably have good enough isolation that you don't need to resort to things like firecracker to isolate customer workloads. Because of the fast startup time you could probably pack your long tail of workloads even tighter to get better effective utilization out of your server infrastructure.
(1) In the early 00s I worked at a place where we wrote our own simple process supervisor and used some tricks with LD_LIBRARY_PATH to let us bundle all application dependencies with the application. So you could run multiple application that needed different libraries on the same host, and upgrade your host without as much worry about host OS library changes breaking our applications. It was a kind of proto-container, without all the other isolation cgroups give you.
Everyone just starts to assume that person is drunk, on drugs, whatever.
Yes, many many people jumped to some terrible conclusions about SF because of this story. And by American standards SF isn't bad with violent crime.
But also the streetscape and property crime in SF are terrible.
Both can be true.
It was cool. But I cringed every time I wrote my property tax check.
The neighborhood got worse and I got married and my wife didn’t feel comfortable there. Sold it (at a loss) and moved out of SF.