Less is more. Wrapping primitives in custom types restricts your available operations and that’s a good thing.
Analysing API design through lens of skill floors and ceilings can help us think about the impact of adding a feature.
A little combination math goes a long way to catching edge cases.
Write Boolean expressions using operators instead of if/else for a more readable outcome.
What’s the difference between Elm’s classical and pipeline JSON decoders?
What happens when you need a bigger mapN?
Classical philosophy offers us multiple reasoning strategies for dealing with tricky bugs.
Kick-start your debugging process by turning implicit assumptions into explicit ones.
Test-driven development, object-oriented design, and functional programming converge on some similar ideas.
Some ideas from functional programming can help us improve the unit tests for our object-oriented code.