> Some problems are straightforward to specify. A file system is a good example. I’ve got to disagree with this - if only specifying a file system were easy! From the horse’s mouth, the authors of the first “properly”…
Yes! There’s a canonical algorithm called the “Blelloch scan” for prefix sum (aka prefix scan, because you can generalize “sum” to “any binary associative function”) that’s very gpu friendly. I have… fond is the wrong…
Sure, but that’s not what the person responding to my original comment was suggesting :). They suggested that you serialize entire data structures (bloom filters, lists, sets, etc…) into a relational DB to get…
They can (and that's probably the right choice for a lot of use cases, especially for small data structures and infrequently updated ones), but serializing and storing them in a database requires you to (in your…
I agree with the author 100% (the TanTan anecdote is great, super clever work!), but.... sometimes you do need Redis, because Redis is the only production-ready "data structure server" I'm aware of If you want to access…
I use Kafka for a low-message-volume use case because it lets my downstream consumers replay messages… but yeah in most cases, it’s over kill
Your network programming guide really saved my bacon back when I was taking a networking class, I appreciate all your hard work!
That's really clever! Kudos. I'm gonna set aside some time this week to dive into the implementation
IME, yes. Here a couple problems I've run into using GQL for backend to backend communication: * Auth. Good GQL APIs think carefully about permission management on a per-field basis (bad GQL apis slap some auth on an…
Sorry if I was sloppy with my wording, instruction issuance is what I meant :) I thought that warps weren't issued instructions unless they were ready to execute (ie had all the data they needed to execute the next…
You can request up to 1024-2048 threads per block depending on the gpu; each SM can execute between 32 and 128 threads at a time! So you can have a lot more threads assigned to an SM than the SM can run at once
I was taught that you want, usually, more threads per block than each SM can execute, because SMs context switch between threads (fancy hardware multi threading!) on memory read stalls to achieve super high throughput.…
Not the OP, but Hillel Wayne’s course/tutorial (https://www.learntla.com/) is fantastic. It’s focused on building practical skills, and helped me build enough competence to write a few (simple, but useful!) specs for…
It’s not all or nothing! I work on a very “product-y” back end that isn’t fully specified, but I have formally specified parts of it. For instance, I property-based-tested a particularly nasty state machine I wrote to…
I’m surprised that this piece mentioned Microsoft, but didn’t touch on Microsoft’s solution to this problem: project silica (https://www.microsoft.com/en-us/research/project/project-sil...), which stores data on etched…
That’s a good point! I think I overstated the case a little, I definitely don’t think automated reasoning is some “secret reliability sauce” that nobody else can replicate; it does give me more confidence that Amazon…
Minimally, the two examples I cited: Shardstore and Shuttle. The former is a (lightweight) formally verified key value store used by S3, and the latter is a model checker for concurrent rust code. Amazon has an entire…
Only tangentially related to the article, but I’ve never understood how R2 offers 11 9s of durability. I trust that S3 offers 11 9s because Amazon has shown, publicly, that they care a ton about designing reliable,…
Gotcha! Thanks for the answer; so the tl;dr is, if I’m understanding: “All fsync-ed writes will eventually make it to S3, but fsync successfully returning only guarantees that writes are durable in our NFS caching…
For sure! Upon reflection, maybe I’m less curious about crash consistency (corruption or whatever) per-se, and more about what kinds of durability guarantees I can expect in the presence of a crash. I’m specifically…
This feels, intuitively, like it would be very hard to make crash consistent (given the durable caching layer in between the client and S3). How are you approaching that?
> Some problems are straightforward to specify. A file system is a good example. I’ve got to disagree with this - if only specifying a file system were easy! From the horse’s mouth, the authors of the first “properly”…
Yes! There’s a canonical algorithm called the “Blelloch scan” for prefix sum (aka prefix scan, because you can generalize “sum” to “any binary associative function”) that’s very gpu friendly. I have… fond is the wrong…
Sure, but that’s not what the person responding to my original comment was suggesting :). They suggested that you serialize entire data structures (bloom filters, lists, sets, etc…) into a relational DB to get…
They can (and that's probably the right choice for a lot of use cases, especially for small data structures and infrequently updated ones), but serializing and storing them in a database requires you to (in your…
I agree with the author 100% (the TanTan anecdote is great, super clever work!), but.... sometimes you do need Redis, because Redis is the only production-ready "data structure server" I'm aware of If you want to access…
I use Kafka for a low-message-volume use case because it lets my downstream consumers replay messages… but yeah in most cases, it’s over kill
Your network programming guide really saved my bacon back when I was taking a networking class, I appreciate all your hard work!
That's really clever! Kudos. I'm gonna set aside some time this week to dive into the implementation
IME, yes. Here a couple problems I've run into using GQL for backend to backend communication: * Auth. Good GQL APIs think carefully about permission management on a per-field basis (bad GQL apis slap some auth on an…
Sorry if I was sloppy with my wording, instruction issuance is what I meant :) I thought that warps weren't issued instructions unless they were ready to execute (ie had all the data they needed to execute the next…
You can request up to 1024-2048 threads per block depending on the gpu; each SM can execute between 32 and 128 threads at a time! So you can have a lot more threads assigned to an SM than the SM can run at once
I was taught that you want, usually, more threads per block than each SM can execute, because SMs context switch between threads (fancy hardware multi threading!) on memory read stalls to achieve super high throughput.…
Not the OP, but Hillel Wayne’s course/tutorial (https://www.learntla.com/) is fantastic. It’s focused on building practical skills, and helped me build enough competence to write a few (simple, but useful!) specs for…
It’s not all or nothing! I work on a very “product-y” back end that isn’t fully specified, but I have formally specified parts of it. For instance, I property-based-tested a particularly nasty state machine I wrote to…
I’m surprised that this piece mentioned Microsoft, but didn’t touch on Microsoft’s solution to this problem: project silica (https://www.microsoft.com/en-us/research/project/project-sil...), which stores data on etched…
That’s a good point! I think I overstated the case a little, I definitely don’t think automated reasoning is some “secret reliability sauce” that nobody else can replicate; it does give me more confidence that Amazon…
Minimally, the two examples I cited: Shardstore and Shuttle. The former is a (lightweight) formally verified key value store used by S3, and the latter is a model checker for concurrent rust code. Amazon has an entire…
Only tangentially related to the article, but I’ve never understood how R2 offers 11 9s of durability. I trust that S3 offers 11 9s because Amazon has shown, publicly, that they care a ton about designing reliable,…
Gotcha! Thanks for the answer; so the tl;dr is, if I’m understanding: “All fsync-ed writes will eventually make it to S3, but fsync successfully returning only guarantees that writes are durable in our NFS caching…
For sure! Upon reflection, maybe I’m less curious about crash consistency (corruption or whatever) per-se, and more about what kinds of durability guarantees I can expect in the presence of a crash. I’m specifically…
This feels, intuitively, like it would be very hard to make crash consistent (given the durable caching layer in between the client and S3). How are you approaching that?