--------------------------------------------
        Automate all of the things
        2018.01.08 13:09:50 CET
        --------------------------------------------
       
        Happy New Year to all readers!
       
        For some unknown reason, I started this year with an unusual amount
        of energy and motivation towards reaching my yearly goals. Last
        week I planned my first quarter and started implementing my plans.
       
        One of my professional concerns for some time is how locked-in I feel
        with the tools, practices and technology we use at work. It's no
        mystery, after 10 years in the same company it's expected one would
        develop a deep understanding of the "internal" matters.
        Unfortunately, I feel the downside to this knowledge (which is
        definitely useful; don't get me wrong, I'm not complaining about
        having it) is the disconnect with the outside world and practices.
       
        So I decided to look outside and start applying the ideas and
        principles we have at work on my personal life. This aligned very
        well with one of my previous posts - when I remember how tiresome it
        can be to manage your own infrastructure.
       
        The first idea I implemented this week was to automate all of my
        personal projects. I've always done the responsible thing and used
        source control for my projects, but I left integration testing and
        deployment as manual tasks. For example: the code for my blog lives
        in a Git repository. I used to build it with Hugo and then deploy it
        to my server manually.
       
        This week I implemented Continuous Integration and Deployment for all
        of my personal projects. Of course the time savings from this
        automation is small, but that was not my goal. My objective is to
        learn what tools other developers are using for CI and CD.
       
        I really enjoy the result: now all my interface with these servers is
        through my VCS: I can make changes locally and once tested
        individually locally all I have to do is check them in. The
        automation takes care of running any integration tests, building,
        deploying and testing a canary and, if successful, deploy to
        production.
       
        Another side-effect of this reduced contact interface with the
        services is the simplification of my workstation setup: for normal
        and usual changes, all I need is the VCS tool and a compiler for
        example.
       
        One item on my quarter objectives done.
       
        I hope all of you had a great start of 2018 too!