Refactor common Boolean smells using enums (union types).
Complexity makes apps harder to use and harder to maintain. We can avoid that unnecessary complexity by starting with good defaults and from there making informed decisions about where to diverge from them.
Choose the right tool for the job when building modular software.
Using composition to build modular object-oriented systems.
Solving the combinatorial explosion problem with multiple inheritance.
Using inheritance to share common logic.
Simplify and clarify your code by carefully choosing abstractions.
let can lead to bloat. Be careful.
Duplication is cheaper than the wrong abstraction.
How and why we split the doorkeeper project into different rubygems.