The Curious Engineer

All blogs / Haskell

CS SYD

cs-syd.eu

CS SYD: Technical consulting in Leadership, Haskell, Nix, Rust; Self-management training, Sustainable Products, Speaking engagements and over 200 blog posts

HaskellEngineering management / careersRust

Posts
220 from 29 Jul 2014 to 2 Jul 2026
Posting
monthly (6 in the last year)
Kind
personal blog
Feed
https://cs-syd.eu/atom.xml

2026 6

  1. Getting your Haskell executable statically linked with Nix
  2. Announcing Mutation Testing in Haskell
  3. I got to the front page of Hackernews and was underwhelmed by the traffic
  4. Cold takes on the NixCI Blog
  5. NixCI Blog
  6. 2025; year in review

2025 4

  1. Highly-available monitoring with Prometheus and Alertmanager on NixOS
  2. Nix does not guarantee reproducibility
  3. This blog has an RSS feed!
  4. 2024; year in review

2024 5

  1. How to get the String out of the IO String in Haskell
  2. Announcing autodocodec-nix and Nix integration for opt-env-conf
  3. Announcing opt-env-conf
  4. Announcing weeder-nix
  5. 2023; year in review

2023 12

  1. What software engineers can learn from traffic lights and turn signals
  2. Golden tests
  3. Hygienic Upgrades
  4. Announcing conformance
  5. How to turn off the nix flake registry
  6. Ad-hoc polymorphism erodes type-safety
  7. Outage postmortem
  8. Using Smos for Software Development
  9. Announcing ical: A pessimistic iCalendar (RFC 5545) library
  10. Announcing Sydtest's profiling mode
  11. A dancing space leak
  12. 2022; year in review

2022 6

  1. Announcing Dekking: Next generation code coverage reports for Haskell
  2. Tightening your feedback loop
  3. Automate your feedback loops using feedback
  4. How to deal with money in software
  5. Announcing safe-coloured-text 0.2.0.0 with a quick primer on character encodings
  6. 2021; Year in review

2021 12

  1. Announcing genvalidity-1.0.0.0
  2. Announcing autodocodec
  3. Your testing portfolio
  4. Test pollution and how to fix it
  5. Why mocking is a bad idea
  6. JSON Vulnerability in Haskell's Aeson library
  7. The undefined trick
  8. How to manage your work on GitHub with Smos
  9. The ci.nix pattern
  10. Announcing safe-coloured-text
  11. Watching changes in Yesod
  12. 2020; Year in review

2020 26

  1. Haskell Templates Launch
  2. Haskell Templates: First two templates available
  3. Haskell Templates
  4. Hacktoberfest 2020
  5. Talk: Practical property testing
  6. Self-management with Smos: Archiving
  7. How to deal with money in software (deprecated)
  8. Introduction Self-management with Smos: the waiting-action report
  9. You are going to be 30 anyway, you might as well be a doctor - @Makingsofabw
  10. Introduction to self-management with Smos: the next-action report
  11. Announcing yamlparse-applicative, a self-documenting Yaml parsing library
  12. Self-management: Clarify and Process
  13. A language-agnostic introduction to property-based testing
  14. Self-management: Capture
  15. Talk: An overview of property testing
  16. Pieces and tools of self-management
  17. Option parsing in Haskell, Part 2: A standard approach to settings in Haskell
  18. Introduction to self-management
  19. Property testing in depth: genvalidity's fixed-size type generators
  20. Fuzzy-time
  21. Announcement: Worldwide empathy for medics
  22. Announcement: Self-management training
  23. Talk: Writing a text editor in Haskell with Brick @ F(by) 2020
  24. Property testing in depth: genvalidity-criterion and genvalidity-* performance improvements
  25. Property testing in depth: The size parameter
  26. 2019; year in review

2019 24

  1. Announcing mergeful, part 3: Cooperative agreement on a collection of values.
  2. Announcing pretty-relative-time
  3. Announcing mergeful, part 2: Cooperative agreement on zero or one values
  4. Hacktoberfest in review
  5. The polyball prank
  6. Announcing mergeful, part 1: Cooperative agreement on a single value.
  7. Hacktoberfest
  8. How to put your /nix directory on a separate device
  9. Millismos: Writing a simple forest-editor with brick.
  10. Announcing cursor-brick
  11. Cursors, Part 6: The Forest Cursor
  12. Announcing yesod-static-remote
  13. Microsmos: Writing a simple tree-editor with brick.
  14. Announcing looper
  15. Cursors, Part 5: The Tree Cursor
  16. How I wrote a proof of concept in five hours and launched a first version in a week
  17. Make your phone less addicting by eliminating color
  18. Testing for beginners at Monadic Party
  19. Nanosmos: Writing a simple text-editor with brick.
  20. "Everything in moderation" is nonsense
  21. Property Testing in Haskell
  22. Cursors, Part 4: The Textfield cursor
  23. The quitting list
  24. Cursors, Part 3: The Nonempty List Cursor

2018 17

  1. 2018; Year in review
  2. Picosmos: Writing a simple single-line text-editor with brick.
  3. Cursors, Part 2: The text cursor
  4. Announcing Validity version 0.9.0.0: Validity of Double
  5. Cursors, Part 1: Introduction with the List Cursor
  6. Smos: Writing a Purely Functional Semantic Editor
  7. Job Ad: Part-time Remote Virtual Assistant
  8. Announcing exchangerates
  9. Announcing genvalidity-hspec-optics
  10. "Speaking" page announcement
  11. Merge-free synchronisation with mergeless
  12. Nix, Docker and Haskell
  13. Website overhaul and support
  14. Research as a build system with Shake
  15. 2018 04 28 intray
  16. How to get less email
  17. 2017; Year in review

2017 5

  1. Parsing command line arguments
  2. Validity Talks with Patat
  3. The madness of paths
  4. Property discovery at Haskell eXchange 2017
  5. The annoyance of twelve hour clocks

2016 33

  1. Poop deprecation and shitty code
  2. Safer paths, part 2 - Stop, Reconsider, Contribute
  3. Safer paths, part 1 - valid and typed paths
  4. I have not reached the burrito point yet. - Xavier Goás Aguililla
  5. Adding documentation to the GHC API
  6. Overcoming Boolean blindness with Evidence
  7. Custom validity and validity-based testing in Haskell
  8. Save time, not money
  9. A configuration loading scheme for tools in Haskell
  10. Writing a book in Haskell
  11. A non-trivial term-constraint oracle, and a new Haskell teaching tool
  12. Estimated reading time in Hakyll
  13. Reducing the number of slot machines
  14. It's not about how others look at me. It's about how I look at myself. - Will Fratalli
  15. How to teach numbers
  16. Mathematical induction, a practical guide
  17. A functor is not a box
  18. Sometimes magic is just someone spending more time on something than anyone else might reasonably expect. - Raymond Joseph Teller
  19. Working from home? Wear Clothes!
  20. Type safe Polyvariadic functions in Haskell
  21. You don't want to finish life knowing you've never been an additional agenda item. - Zuber Anwar
  22. Have a day - Unknown
  23. How to enforce better technical debt practices
  24. Error handling is code too!
  25. Be careful recruiters, you're being selected too!
  26. Testing the Super User Spark with HSpec
  27. Return to taskwarrior
  28. Math notation inspired by functional programming
  29. teaching Haskell to a mathematician
  30. A case against going to class
  31. Erasmus, the good, the bad and the ugly
  32. Function equality in Haskell
  33. "Announcement: Teaching/Coaching"

2015 42

  1. How I optimized for my exam
  2. "Haphviz: Graphviz code generation with Haskell"
  3. "HESS: Haskell E-mail Scraper Spider"
  4. Configuration design style guide
  5. Codomains reconsidered
  6. Do away with predictable boiler-plate using Template Haskell
  7. How not to be taken seriously.
  8. Grading a small programming competition
  9. The responsibility of an appointment
  10. Debugging random segfaults
  11. "Super User Spark: Blocks and Cards"
  12. "Super User Spark: Getting started"
  13. "Super User Spark: Outof and Alternatives"
  14. "Postmortem: Rental Scam"
  15. How to brute-force a mathematics course
  16. "Bucketlist: Lemons"
  17. "EDEN: the project Euler Development ENgine"
  18. Chronicle, A command-line journal system with optional encryption
  19. A year of blogging
  20. How to synchronise and back up your dotfiles with the Super User Spark
  21. "GTD with Taskwarrior, part 5: Doing"
  22. "GTD with Taskwarrior, part 4: Processing"
  23. "GTD with Taskwarrior, Part 3: Tickling"
  24. "GTD with Taskwarrior, Part 2: Collection"
  25. "GTD with Taskwarrior, Part 1: Intro"
  26. Stupidity can break anything - Danny Hughes
  27. Don't find fault, find a remedy. - Henry Ford
  28. Do you think he plans it all out, or just makes it up as he goes along? - Becket's Officer
  29. How to prevent someone from using your WiFi, or at least annoy them a little
  30. If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is. - John von Neumann
  31. A base n numeral system
  32. People often say that motivation doesn't last. Well, neither does bathing - that's why we recommend it daily. - Zig Ziglar
  33. Rows and columns
  34. Why I don't like TV
  35. What do we do with our time?
  36. Because I didn’t know it couldn’t be done, I was enabled to do it. - Bill Atkinson
  37. Another new keyboard
  38. The annoyance of percentages
  39. Get some paper, put it in a typewriter, type FADE IN... and keep typing. - Peter Falk
  40. "A sleep experiment: The results"
  41. "A sleep experiment: The setup"
  42. How to start single-tasking

2014 28

  1. Every piece of meat I have is the best - Banzan
  2. Stress free mailboxes
  3. You don't say "Good luck!". You say "Don't give up!". - The Roots
  4. A poor man's backup system
  5. If you’re the smartest person in the room, you’re in the wrong room. - unknown
  6. Monads by Example
  7. How to get up early
  8. I like offending people, because I think people who get offended should be offended. - Linus Torvalds
  9. "The hidden 'at least'"
  10. The less you do, the more of it you can do. - Scott Hanselman
  11. The magic of audiobooks
  12. Altruism doesn't exist, but that's a good thing!
  13. Change the way you use your terminal use with this function
  14. Today is a gift. That's why it is called the present. - Unknown
  15. Confusing definitions
  16. We were all huddled together, as wet as water could make us. - Benjamin Franklin
  17. Getting started with git
  18. Everyone you will ever meet knows something you don't. - Bill Nye
  19. "Between programming and mathematics: Statements and Expressions"
  20. I stopped believing in God when I realised it's just dog backwards - Neil Sutherland
  21. The switch to dvorak and an ergonomic keyboard
  22. If you're skating on thin ice, you might as well dance. - Anita Shreve
  23. The magic of thinking paper
  24. How to synchronise and back up your dotfiles with the Super User Stone
  25. Obsessed is just a word the lazy use to describe the dedicated. - Russel Warren
  26. Intersections of Circles
  27. The magic of getting up early
  28. Why I don't like GUIs