Guidance on how to break down problems and structure solutions.
Category: Design
Episode #139: Timed Queue
Continuing to build our own thread-safe queue class, today we give it the ability to handle time out enqueues and dequeues.
Episode #138: Condition Variable
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.
Episode #137: Mutex
In this episode we introduce the concept of a "critical section", and learn about one of the fundamental primitives that makes multithreaded programming possible.
Episode #128: Enumerable Queue
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.
Episode #119: Intention Revealing Argument
Some techniques for making boolean flag arguments read more meaningfully.
Episode #117: Client Session Object
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.
Episode #116: Extract Command Object
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 …
Episode #114: Null Object
In today's episode, we encounter a starship in trouble, and a software pattern that helps cleanly disable whole categories of behavior.
Episode #112: Special Case
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.