Ruby by default comes bundled with synchronous mechanisms for asynchronous programming. Most applications work fine with existing libraries, so for many people these synchronous mechanisms are taken for granted. However, occasionally you may have the inclination to design your own synchronous mechanisms. Maybe you just learned about some elegant synchronous mechanism (Linda), or about popular mechanisms in other languages (channels in Go), or maybe you were pressured by the creators of popular libraries to come up with a better design yourself. All this leads you to consider the "primitives" of synchronous programming, and give your ideas a try. In this session, we will learn techniques for implementing synchronous mechanisms, like channels in Go, in Ruby, by actually designing and implementing some of your own. Together we will discover the joy of designing a minimal interface, and the joy of implementing one.