adding type level port conflict detection to Propellor
 
Propellor is a confguration management system, like Puppet or Ansible, but written, extended and configured in Haskell.

Using Haskell lets Propellor break new ground in applying type safety to things. For example, Propellor already uses type level programming to make sure that properties added to a host support the host's OS.

The next big idea I want to implement here is type level port conflict detection. This will let a Propellor config file be checked at compile time to make sure that all the services assigned to each host use non-conflicting ports.