Simplifying assertions with lenses
Explores using lenses in Haskell to simplify test assertions for nested data structures, improving test readability and precision.
Mark Seemann — Independent software architect and author based in Copenhagen, known for clear thinking on software design, dependency injection, testing, and architecture through his ploeh blog and books.
12 articles from this blog
Explores using lenses in Haskell to simplify test assertions for nested data structures, improving test readability and precision.
Explores how software architecture principles for human cognition, like fractal design, could improve AI's ability to work with large codebases.
An analysis of using AI to generate automated tests, arguing it misses the point of TDD and reduces testing to a superficial ceremony.
Explores strategies for implementing and testing complex data filtering logic, balancing correctness and performance between in-memory and database queries.
Explores two distinct ways of using Git: for collaboration with immutable shared history, and for tactical, local development.
Explores software coupling and the DRY principle through the lens of big-O notation, analyzing the number of code edits needed for changes.
A critique of perpetual 'improved Git integration' in IDEs, arguing developers should learn core Git instead of waiting for tools.
Explores using test-specific equality (Eq) instances in Haskell to simplify unit test assertions for complex data types that lack built-in equality.
Explores why unit tests sometimes pass unexpectedly, focusing on tautological assertions and the discipline required for effective test-driven development.
A Haskell developer explores using pattern guards to simplify protocol logic for a cellular automaton simulation of finch behavior.
Argues for applying the same coding standards and quality practices to test code as to production code to ensure maintainability.
Explains why the Result/Either type is the fundamental, most abstract sum type in functional programming, and why it's a poor starting point for understanding algebraic data types.