About the service
I'm a Haskell developer and I write server services that are correct by construction, not by accident. My approach relies on the language's greatest strengths: powerful static type system, function purity and explicit effects. When I model your domain with algebraic data types and let the compiler reject invalid states, entire categories of runtime errors simply cease to exist. This is not academic idealism, but a practical way to ship software that behaves on Friday evening the same way it did in tests, and that a new team member can confidently refactor because types keep them within bounds.
Over the years I've built HTTP APIs, background workers, data processing pipelines and command-line utilities in Haskell. I'm confident with the core ecosystem: Servant and Yesod for web, STM and async for concurrency, persistent and hasql for databases, and the familiar GHC, Cabal and Stack tooling. I also care about performance: I profile with GHC tools, reason consciously about laziness and strictness, know when to reach for strict data types, unpacked vectors or streaming libraries to keep memory flat and throughput high. Property testing via QuickCheck is for me a design tool, not a formality.
You get from me a codebase that's actually an asset: small composable functions, clear module boundaries and documentation the team can maintain. I'm equally comfortable spinning up a new service from an empty repo to production and joining an existing Haskell project to fix bugs, tame tech debt, speed up code and bring the team toward idiomatic functional patterns. If correct software that's safe to change matters to you, I'll help.
— Backend HTTP APIs with Servant and Yesod
— Domain modeling with algebraic types and type classes
— Concurrency via STM, async and threads
— Database access via persistent, hasql and PostgreSQL
— Property testing with QuickCheck and Hspec
— Profiling, strictness analysis and optimization
— Building with GHC, Cabal, Stack and Nix
Over the years I've built HTTP APIs, background workers, data processing pipelines and command-line utilities in Haskell. I'm confident with the core ecosystem: Servant and Yesod for web, STM and async for concurrency, persistent and hasql for databases, and the familiar GHC, Cabal and Stack tooling. I also care about performance: I profile with GHC tools, reason consciously about laziness and strictness, know when to reach for strict data types, unpacked vectors or streaming libraries to keep memory flat and throughput high. Property testing via QuickCheck is for me a design tool, not a formality.
You get from me a codebase that's actually an asset: small composable functions, clear module boundaries and documentation the team can maintain. I'm equally comfortable spinning up a new service from an empty repo to production and joining an existing Haskell project to fix bugs, tame tech debt, speed up code and bring the team toward idiomatic functional patterns. If correct software that's safe to change matters to you, I'll help.
— Backend HTTP APIs with Servant and Yesod
— Domain modeling with algebraic types and type classes
— Concurrency via STM, async and threads
— Database access via persistent, hasql and PostgreSQL
— Property testing with QuickCheck and Hspec
— Profiling, strictness analysis and optimization
— Building with GHC, Cabal, Stack and Nix