![]() |
|
![]() |
|
That class scheduling one is a good place to grok the basics. Just extending the kind of approach introduced there will get you decently far. The best resource after the tutorials is: https://github.com/FoundationDB/awesome-foundationdb Unfortunately, I think a lot of the advanced 'tricks of the trade' (alternatives to use cases for long-running transactions, when exactly to dispatch to a cloud object store, how to migrate whatever schemas you end up creating, etc.) that all the big serious users of FDB are doing are not as well covered. |
![]() |
|
Yes I’m sad that still nobody did a rock solid implementation of the Postgres API… I will use it all the time if someone did. I would have the best of both worlds.
|
![]() |
|
Seems like these companies want to be like Vercel or Supabase, a full backend as a service where you just write code and deploy and the backend handles everything for you.
|
![]() |
|
Why shouldn't a hosting provider create a framework optimized for their infrastructure? How is this a bad thing? They aren't stopping anyone from using or creating other frameworks.
|
![]() |
|
Can a language that is not running on top of a VM pull this off? I do not think so? Which is why it seems to me we need to revisit JVM for example.
|
![]() |
|
You can also just use sqlite and deno on your own server. Bun will also build their own cloud at one point. They need to monetise somehow.
|
![]() |
|
yes. took part in a hackathon and decided to make my own webframework while doing it. It was supposed to be compatible with deno and bun and I chose deno deploy to deploy my stuff. But 17 hours before the deadline this happened:
https://twitter.com/spirobel/status/1786665928954085562 deno deploy just showed a completely useless error message and stopped working. I installed caddy on a vps and got it to work in 5 minutes. I ripped out the deno compatibility and switchded to bun sqlite instead of turso and the website got even faster. That is because the server has the data in the sqlite db. No need to roundtrip to turso. btw. the framework is open source now: https://github.com/spirobel/mininext It is like a non bloated version of nextjs. My intention is to displace php and wordpress. It is possible to get started with just html and css knowledge, but you have the whole javascript ecosystem at your fingertips. It has no external dependencies, just 3 modestly sized files you can understand in an afternoon and it will reload your browser and rebuild when you save your code. |
![]() |
|
I happened to use foundationdb for the leaderboards for an experimental game recently, for which fdb was the main experiment. The big difference was I used the “record layer”, however, naively believing this meant only needing to understand the record layer . . . No. In foundationdb it is vital to understand all the layers up to and including the one you are using, partly so you can make sense of the documentation, but also because the problems you run into are so tied to the semantics of the lower layers. That said, the great thing about fdb is deploying it is so easy. It is like a secret weapon hiding in plain sight. The game https://luduxia.com/showdown/ |
![]() |
|
Thanks! I also added them to my other game that's been here before: https://www.luduxia.com/whichwayround/ The funny thing is I modeled the service for leaderboards on a commercial product an old boss of mine wrote v1 of in PHP/MySQL over 20 years ago. https://web.archive.org/web/20040806114005/http://www.macros... Games people end up with things like massively sharded mysql and replication fun. One of the nice potential things with fdb is keeping transactions within user scope, and not having to deal with the sharding/replication yourself, you just have to arrange the keyspace correctly instead. I have worked on games where people sorely underestimated the complexities of db replication and literally burned tens of millions in recovering from the mistake. |
![]() |
|
I'm used to KV systems being really simple shallow systems. WASI-keyvalue for example is quite simple, stopping at providing an increment capability. https://github.com/WebAssembly/wasi-keyvalue/blob/main/wit/a... I knew Deno KV was built on FoundationDB, expected this would be a neat but simple systems architecture rundown. But... Turns out Deni really went super deep in building a KV, by adding atomics! > To maximize performance and concurrency for atomic operations, we built the Deno KV Transaction Layer that manages the global order of atomic operations. For each transaction that is received by this Transaction Layer: I thought it was particularly creative how a .get returns not just the value, but some reference to what the get was. So when the atomic change comes, they can check the get. This was a neat way to let some sets use previous data safely, I thought. Does anyone else have any other examples of thicker kv APIs? It feels like we're nearing a cap'n'proto level of promise pipelining, as we extend kv this way; I though Denos dodge was extremely expertly picked to limit how complex references to existing operations would need to be. |
I used it a couple of times locally with Sqlite for CLI apps, if you want to do some data manipulation stuff with TS from the CLI and need a db, don't look further.
I also used it in Production with FoundationDB on Deno Deploy.
It does not replace your postgres/mysql database but a different beast entirely for many reasons. One is pricing. You pay per read and write.
An issue I had is that it's hard to migrate from using KV with Deno Deploy. You can migrate to a local SQLite backed instance but will need to develop your own solutions on how you migrate and it will cost more the larger your database gets because you pay for reads.
I do think it's great, but I would recommend using Deno Deploy only if your reads and writes produce value that offset the costs, else you can find yourself in the issue of needing to migrate.
For example, use it for features you offer to authenticated users, but don't use it for things available in the open, else you open up yourself to high fees from DDOS.