Show HN: Advent of Distributed Systems (aods.cryingpotato.com)
Hey! I built a playground called Advent of Distributed Systems (https://aods.cryingpotato.com/) where you can work through the Fly.io distributed systems challenges (https://fly.io/dist-sys/1/) directly in your browser. Running challenges like this directly in the browser has often been the best way for me to get the activation energy to start them since it bypasses all the annoying dev environment setup that has to happen as a precursor to working on it.
The coding environment was built with another project I'm working on called Cannon (https://cannon.cryingpotato.com/) that aims to let you embed codeblocks of any language in your browser. Right now the Go environment runs on a Modal backend using their sandbox, but I'm hoping to use the excellent work done on Hackpad (https://github.com/hack-pad/hackpad/tree/main) to run the whole thing in your browser, with no network calls necessary, soon.
Let me know what you think - week 3 is coming out soon!
23 comments
[ 5.2 ms ] story [ 55.3 ms ] threadfeedback: I was a bit confused as to why the answer to the first week was prefilled, was that intentional? Also, the buttons 1-6 aren't working for me (I'm on 2021 M1 Pro w/ Firefox 120.0.1)
I prefilled the answer for week 1 was to help people understand the boilerplate needed better, but maybe that was giving too much away. I'll try putting something more minimal in.
Unfortunately you can't use the buttons inside the iframe because of CORS issues. Not sure if there's any easy workaround for that :(
> I'll try putting something more minimal in.
That would be great, do please add the boilerplate to all the weeks not just week one, because starting from a completely blank page is also challenging, especially for people who aren't familiar with Go all that much.
Kind of like this codecrafters.io where i get a working KV Store/Blob Storage/Kafka Stream out at the end. Code crafters sounded good in the beginning, but it looks too beginner friendly (their web server example is just writing hard coded text back to a socket and i'm sure the other examples are just as shallow).
If anyone has any examples of this, lemme know.
You make a key-value store using multiple techniques, from a basic single-node KV store, to a primary/replica, to PAXOS, to sharded PAXOS (which is essentially what AWS DynamoDB is, minus all of the features they've added since launch).
It's written in modern Java, and the tests that validate your implementation are very thorough.
I learned a ton from this, although I gave up at the last milestone because my grade was satisfactory in the class :)
Alternatively, you could enroll in the OMSCS and take the course yourself. It's only $600 per class at a top-10 school! The application is very easy and they accept anyone who has a reasonable chance of completing the degree. If you have any questions about the program feel free to email me (check my profile) https://omscs.gatech.edu/
Here's the course page [2] if you want to see more details, the syllabus, etc., and some student reviews [3] if you want more context. Many students found the course difficult -- it's one of the hardest rated courses in the program and rated it rather unfairly IMO -- it's a difficult subject but the course itself is about as approachable as you can make distributed systems.
[0]: https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-W...
[1]: https://book.mixu.net/distsys/
[2]: https://omscs.gatech.edu/cs-7210-distributed-computing
[3]: https://www.omscentral.com/courses/distributed-computing/rev...
When I came back here, it the additional context of your text post made everything make sense. Can I recommend that you start with that on the page itself? Even a quick explanatory modal with a "don't show this again" checkbox would help a lot.
[1] https://docs.rs/async-maelstrom/latest/async_maelstrom/
Personally, I would really appreciate either a) a way to change the theme, or b) a more accessible default theme.
I'm a bit late to the party, but thanks!