7 ms·
My free book "Rust Projects – Write a Redis Clone" is out
- stefanos82 2y ago> This book is 40% complete Shall we wait until it reaches 100% first and then people buy it?
- thedigicat 2y agoHi! The book is actually free, you can set the price to zero. Anyway, whatever way you choose, you get access to all future versions. Thanks!
- stefanos82 2y agoThat's not what I meant; Leanpub shows us that the actual book is INCOMPLETE, it's only 40% ready, not 40% discount LOL! :D
- thedigicat 2y agoHa ha ha sorry I didn't get it!
- brainless 2y agoI guess what the other person means is that there is no "buying", you can take the book for free. Yes it is incomplete but you'll get access to future work on the book.
- InkCanon 2y agoThe remaining 60% is trivial and has been left as an exercise to the reader.
- zerr 2y agoGet it from Library Generis or similar places for now. Buy when it reaches 100% and if you feel it is worth the value.
- tracker1 2y agoHaven't read the book. I feel like this is effectively "Rust: The Hard Parts" as a topic. Mostly in that from my admittedly limited understanding of rust, lifetimes and shared memory, Redis in rust semantics is almost an anti pattern. I intend to look into this book as I find the topic interesting. But do feel that it's tackling some of the more cumbersome areas of rust. I'm also curious if there will be an effort to be binary file compatible. With the Redis licensing kerfuffle and since fork of valkey I wonder about some of the other redis alike databases there are and will be. I think that rust is just a hard fit for this use case. But who knows.
- tayo42 2y agoI think redis design is probably easy becasue it's single threaded. So probably not But wasn't the use you described the whole point of rust getting alot of investment from Mozilla in the first place. The browser had all those problems you describe and they thought the language makes it easier
- tialaramex 2y ago"Fearless concurrency" yes. In Rust's model we can't make a lot of the easy mistakes. Safe Rust won't let you, for example, try to share an Rc<T> between two threads, because while Rc<T> is perfectly sound and has good performance locally, if it's possible for two concurrent operations to touch the object bad things may happen, so we can't ever (in Safe Rust) see such an object from more than one thread - in this case you should use the (more expensive on some hardware) Arc<T> if there might be more threads. In safe Rust understanding why all this works isn't your problem, it just does. Hardcore implementation work (say, you're making a new kind of mutual exclusion primitive) will need unsafe and also rely on proper understanding of how to (and whether to) enable use of your type this way.
- nemothekid 2y agoWriting a Rust clone was one of the first projects I did when trying to learn Rust ~4-5 years ago. On top of that I opted for an async version with a database-per-core design. Throughout the whole project I never once ran into lifetimes, and I gave up once I had to think about cross thread transactions, which had nothing to do with Rust the language.
- rollschild 2y agoThis reminds me of Tim McNamara's course Implement RougeDB, a Redis clone from outer space (https://learning.accelerant.dev/view/courses/implement-rougedb https://learning.accelerant.dev/view/courses/implement-rouge...). I paid somewhere around $100 for this course (through some coupon code, I remember the original prices was $200-ish). It was supposed to be completed by Aug 2023, yet almost one year and a half later, it's still incomplete. I almost gave up at this point.
- kinow 2y agoHave you reached out to Tim? I know him and I believe he wouldn't do that intentionally. Maybe he is busy with something else or just lost track of the schedule.
- rollschild 2y agoOf course I did. I DM'ed him on Twitter with no response. Then I commented under one of his tweets and he did respond. He mentioned it would be complete by Aug 2023 (this was before Aug 2023). Some time this year I commented under one of his linkedin posts asking for update - no response. There are multiple comments from other users on that web page I linked above - most of them had no replies. Of course he's been busy. Everyone is busy. But charging $200 (or $100 with coupon) for a course which is delayed for more than 1.5 years and still has no sign of completion is another story.
- zerr 2y agoDid you ask for a refund? If you were refused, you can proceed with a chargeback procedure with your bank.
- rollschild 2y agoNot yet. I'm willing to pay for stuff like this. I was reading Tim's Rust in Action at that time and I liked the book so when he announced that he was starting such a course I immediately singed up, although the price was a bit crazy. I got the coupon code from a guy on Reddit so that's pure luck. I am really willing to pay for other peoples IP. I am still hoping that one day he could complete the project but before that I've got some other projects to work on. Side note: I've finished Build your own Redis in C/C++ (https://leanpub.com/build_your_own_redis https://leanpub.com/build_your_own_redis) and it's pretty decent. The title of the book is a bit weird since it's almost 100% C++ so I don't know why they put "C" in there. But it's a pretty decent book (and reasonably priced).
- jgarzik 2y agoBy amusing coincidence, I wrote a Redis clone in Rust: https://github.com/bloq/memds https://github.com/bloq/memds
- andy_ppp 2y agoSo, just out of interest how close does this get to the performance of redis? It’s interesting to see a highly optimised production product compared to a presumably more trivial implementation I can read in a book. Still this might be a great way to learn rust!
- thedigicat 2y agoThanks! So, I didn't consider performances at all, as it's not the goal of the project, but it would be interesting to have a look. Good idea!
- andy_ppp 2y agoYes it's definitely not about winning, if you can get say 75% of Redis performance with simpler and memory safe code I'd say that is a big win and great advertising for the book! And maybe some examples of how performance can be improved/optimisations made also improves the book!
- reconditerose 2y agoYou might be able to get near 100% of Redis performance without a lot of tuning. Redis has a lot of overhead to make it a production ready system like performance counters, safety checking, and conditionals for features like replication/clustering/etc which slows it down. Hell, you might even be able to use a concurrent hash map implementation and show multi-threaded performance much better than Redis :).
- postalrat 2y ago[flagged]
- deleted 2y ago[deleted]
- ubisol 2y agoAnybody knows if there is a golang version of a write a redis clone ?
- thedigicat 2y agoYou can solve the CodeCrafters challenges in many languages, and Go is one of them, yes. Not sure if there are books or blog posts about it though. Through the CodeCrafters portal you can access the code of other people and the related repositories, however, so that can help.
- ubisol 2y agoOk, thank you, I'll check CodeCrafters.
- melon_taeppe 2y agoI was doing the codecrafter course then went off-script when creating the parser, this is good to have all the steps in one place so I dont need to jump through the hoops on the website