Intro

January 15, 2024

Whether you've been curious about how distributed file systems function or wanted to explore the inner workings of your favorite RPC framework, you're in the right place. Here, you'll have the opportunity to build a fully functional toy version yourself.

The exercises are mainly standalone tasks, each focusing on a specific topic. Every exercise includes a C++ (20) boilerplate implementation that you will need to modify.

Get ready 🍿

Scenes from distributed systems, X (Twitter)

Catch: Why do we need distributed systems anyway?

License

The source and documentation are released under the MIT License.

Contributing

This is a very early exploration that is yet to be proved to be useful; the contents are very immature and incomplete. If you want to contribute, you are very welcome! File an issue, and we will chat. If you have found a bug, please create an issue (or pull request) in the repository.

Working with source code

Make a private fork of the repository and clone it:

git clone git@github.com:<username>/getrafty.git
cd getrafty/tasks/tutorial

Setting up dev environment

Launch dev container with configured development environment

./tasklet.py boot

The container is now running on port 3333 and accessible under ubuntu user. To continue in terminal login via ssh ubuntu@localhost -p 3333 or simply ./tasklet.py attach. It's recommended to configure an IDE of your choice.

🧠 Task

Your goal is to complete the method FluxCapacitor::computeTimeBreakBarrierSpeed in flux_capacitor.cpp.

// In flux_capacitor.cpp:
Speed FluxCapacitor::computeTimeBreakBarrierSpeed() {
    ...
};

The method should return a minimum speed (measured in miles per hour) for a DeLorean vehicle to be able to travel in time.

Testing

Ensure your code passes clang-tidy lints. Every task comes with tests, and you should be able to run it via CMake.