design
2024
Event sourcing migrations retrospective -
Designing strongly typed range -
Haskell Legacy: Adding features -
Haskell Legacy: Pure projection -
Haskell Legacy: Going event-first -
Haskell Legacy: Reversing writes -
Haskell Legacy: Creating events -
Haskell Legacy: Extracting business logic and introducing effects -
Haskell Legacy: Introduction -
OOP has not invented encapsulation -
Types for building and types for running -
Type-driven development applied: librarian -
Architecture Heuristic YNIA: Events metadata -
Bypassing Prometheus SDK push model -
Naming has a social convention -
Prescriptivism and Descriptivism -
2023
Architecture Heuristic YNIA: Participants -
From custom Monad to Polysemy -
Implementation-oriented Monad -
Architecture Heuristic YNIA: Queues -
Haskell Type Reflection Anti-pattern -
QuasiQuoting Smart Constructors -
Test-Driven Development Freedom -
Abaks: Interface Adapters - API -
Polysemy: Onion architecture -
Polysemy: Design heuristics: Hiding vs Exposing -
Polysemy: Design heuristics: Dispatcher -
Polysemy: Design heuristics: Hiding interpreters -
Polysemy: Design heuristics: Grouping interpreters -
Polysemy: Design heuristics: Effects layering -
Polysemy: Design heuristics: Split by responsibility -
Polysemy: Design heuristics: IO hunting -
Polysemy: Strategy internals -
Polysemy: Higher order Effects and combined interpreters -
Polysemy: Tactics binding deprecated workaround -
Polysemy: Strategies binding -
Polysemy: Higher-order effects with Final -
Polysemy: Higher-order effects introductions -
2022
Polysemy: Interceptors to buffer -
Polysemy: Introduction to Interceptors -
Polysemy: Interpretation and effects inline injection -
Polysemy: Interpretation and effects injection -
Polysemy: Introduction to Effect interpretation -
Polysemy: Introduction to Effect definition -