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.
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.
Using BEM when naming your classes makes being object-oriented easy and fits right in with MVC projects.