Haskell, Nix, and Our Journey with Legacy Systems
Recently, we were discussing talks we’ve enjoyed at conferences. Among our favourites are talks where the speaker takes you through their personal experience of a software project, including road bumps and dead ends. When you’ve found an elegant solution it seems obvious, and it’s difficult to remember the struggle you went through to get there.
At Mpowered we make an effort to document and discuss our decisions, including the branches not taken, and attempts that didn’t work out the way we had hoped. This information can aid new team members getting up to speed with a long-running project, and is a useful record when reflecting on decisions we made and the assumptions we based them on.
In this blog we will share experiences from our work, maintaining the Mpowered suite of applications, in a similar spirit. Initially, we will focus on:
- Haskell programming in a “line of business” setting, including web development, databases, testing, and systems integration.
- Deployment based on Nix and NixOS, in both traditional VPS and modern cloud configurations.
- Working with legacy systems built using Ruby on Rails, gradually migrating and evolving systems using Haskell, and our strategies for progressing without doing a Big Rewrite™.
Whether it’s looking at ways to improve your code, or finding the right tools or libraries, perhaps you have hit some of the same issues that we’ve come across. By sharing this knowledge we hope to help others in their journey.