Projects

Ryan Pek (b. 2001) | 3rd Year Undergraduate SUTD | Canned food enjoyer

About the Project

Corestack / Tetrish is my current systems-style project direction around taking a predefined service interface and thinking about how far I can push it into a distributed setup. The basic requirement is to speak the provided protocol correctly, parse the expected headers/messages, and make the service behave. The interesting part is what happens after that.

I started thinking about running multiple tetrisd services and multiple client/game binaries, then immediately ran into the classic distributed systems questions: who owns the state, what order do inputs happen in, what happens during leader changes, and how do you avoid a client rendering a reality that the cluster later overwrites?

Ideas Being Explored

Status

Current status: design / implementation exploration. The main lesson so far is that distributed consensus is not just "run three services and vote". Once user input and live rendering are involved, the awkward edge cases become visible very quickly.

Why This Is Interesting

This sits in the nice painful intersection between Unix/network programming and distributed systems. It is one thing to read about consensus, totally ordered multicast, Lamport clocks, and state machines. It is another thing to ask "okay, but what happens to the falling block on screen if the leader dies now?" I'm pretty noob at these stuff so trying my best at C and relearning/implementing the ideas would be fun.