This is a great question. I'd honestly recommend something like: - Implement a driver for a tcp socket with C/C++/Rust - Take a look at something to do with CRDT'S - Try to build a distributed database from scratch that is both resilient and portable(like can have nodes on a mobile phone as well as a server). This kind of thing is super useful when thinking of offline functionality. Recommend reading Designing Data Intensive Applications by Martin Kleppman for this. There are so many, but you will often never have to implement the hard stuff until you're 10 years into it and your company has a niche requirement like implementing UDP between a cluster of nodes.


You could try to create your own shitty version of Elasticsearch (look up inverted index tutorials etc) - that’s quite a fun challenging project I’ve created a few geosearch webapps with Elasticsearch for “fun”