Managing MikroTik RouterOS with Nix

My home network runs on a MikroTik router. It's a capable piece of hardware with a powerful but deeply imperative configuration system. RouterOS gives you a CLI, a GUI (WinBox), and a scripting language that feels like it was designed for a world where "just SSH in and change it" is a valid way to operate.

For a while, that was exactly what I did. Then I tried to bring the same declarative thinking I use for everything else to my router. It took three attempts to get it right.

1 Year on Nix

For eight years, Ubuntu was my home. I knew the system inside out — or at least I thought I did. I had a dotfiles repo, a symlink manager, and a comfortable routine. Everything was version controlled. Everything was under control.

It wasn't.

Getting Started with Haskell

Haskell is a purely functional programming language known for its strong static type system, lazy evaluation, and mathematical elegance. In this post, we will walk through the basics that make Haskell a great choice for building reliable software.

The Rise and Fall of Scala

I have been writing Scala for almost ten years. It is, without a doubt, the best programming language I have ever worked with. Expressive type system, pattern matching, immutability by default, a concise syntax that gets out of your way — Scala at its best is a joy.

And yet, I am learning Haskell. Not because I fell out of love with Scala, but because I can see where things are going.