Guidance on how to break down problems and structure solutions.
Continuing to build our own thread-safe queue class, today we give it the ability to handle time out enqueues and dequeues.
As we continue to explore the fundamental building blocks of multithreaded programming, today we encounter the Condition Variable, and what it has to do with my local delicatessen.
In this episode we introduce the concept of a "critical section", and learn about one of the fundamental primitives that makes multithreaded programming possible.
Queue, somewhat surprisingly, is not enumerable. Which is all the excuse we need to have some more fun with the Enumerator class, in today's episode.
Some techniques for making boolean flag arguments read more meaningfully.
In another peek into my ongoing behind-the-scenes work on RubyTapas, today I extract the responsibility for representing a logged-in screen-scraping user-agent session into its own class.
In today's live-recorded episode I show one of the most fundamental refactorings for breaking up a large class into smaller classes. Since this is a live episode there is no …
In today's episode, we encounter a starship in trouble, and a software pattern that helps cleanly disable whole categories of behavior.
In this episode we take a look at the Special Case pattern, and see how it can be used to drastically simplify some typical logic around logged-in and anonymous users.