Changing default branch of git init

:: git

With the planned update for Github to start using main instead of master for the initial default branch, I started moving all my projects on my personal git server. Until the git project itself updates the tools, initializing new projects locally still is a little bit of pain. With a simple shell script we can automate it.

Better IO testing through Monads

:: haskell, monads, type classes, testing

Unit Testing is a great way to try to verify consistent functionality over the life of our code. Typically we design our tests to cover ranges and edge cases of our code making sure that we can handle all inputs. This is made easy when we write in Functional Languages as there (should be) no side effects. But when you want to deal with IO and side affect code in Haskell, this becomes much more difficult.

This problem has been fixed many times, but often with very complex solutions. Let’s see if we can make it really simple (even if the post is long).

Gitolite Public HTTP Access

:: tutorial, git

I’ve always liked self hosting as it gives you the most flexability. With projects like gitolite you can ditch the heavy database, the server side scripting languages and run a nicely configured and feature rich server on something as small as a Raspberry Pi.

Gitolite supports gitweb, but when running on Debian it required me to install apache2, and configure CGI. Other distros I’ve tried were even worse with dependencies. All I want to is give public, read-only access via http. Can’t be too difficult, right?