2018 Retrospective

So around this time of the year, many people will be thinking about their New Year’s resolutions. I’ve gradually gotten less interested in resolutions as I never seem to follow through with them. This year, I’d like to try something different. Let’s look back at what I did accomplish this year. I think this is valuable as every New Year’s resolution tends to get broken because I’m busy doing other stuff.

This Year

At the start of the year, I moved in with my partner and left my job I had been at for many years. I got a new job working for a much larger company which was really interesting. I learned quite a lot and I’m grateful for the time I spent there, but I ultimately left about midway through the year as it wasn’t right for me.

My 2018 resolution did include learning Rust, but I ended up learning Haskell instead! I have no regrets, and it’s an excellent example of why New Year’s resolutions don’t work so well for me. Learning Haskell was like a breath of fresh air, and it was truly mind opening to discover completely different ways of writing code with monads and algebraic types. In September, I released a tiny proof-of-concept Haskell library; an E.164 parser. I would like to continue learning Haskell.

Around the middle of the year, I added some basic IndieWeb features to my website, getting up to IndieMark Level 1. Next year, I would like to continue working on IndieWeb support, including improving the hovercards implementation and working on Webmentions support. It would help if I wrote at least once a month so I will try to make an effort to blog about things happening in my life.

Around August, a friend got me into Star Trek! Initially just on Voyager, but now I am enjoying TNG. 🖖

Towards the end of the year, now working from home for a different company, I started my BSc which has been going really well so far. My long-term plans here are to get a Bachelors and eventually a Masters degree. I’d like to continue to learn advanced computer science such as Dependent Types. I aim to keep thinking about how to further improve the quality of my work.

Looking Towards 2019

A few things that are on my mind for 2019. While none of these are goals or targets, they are general themes I want to have on my mind.

More Eco-Responsibility

As I don’t drive (I walk or take the bus everywhere), I imagine my carbon footprint might be relatively small, but I do eat a lot of meat. Meat isn’t something I want to give up, but I am thinking about meat replacements, carbon offsetting, and changing my energy provider. I’d like to be carbon neutral by the end of 2019. That’s a difficult goal, and I barely understand how to accurately measure my carbon footprint.

Additionally, looking after the environment could also be reducing or eliminating the release of other greenhouse gases, growing food, buying locally, and reducing the consumption of plastic-based products. More ideas would be greatly appreciated. Not all of these are possible for me, but I will do what I can and try to encourage -- but not push -- others to do the same.

Better Haskell Tooling

I truly felt a lot of pain when I started using Haskell partly as complex ideas like Monads are so hard to pickup, but also because the tooling story doesn’t seem as strong as it is in other languages. While no language is perfect, I found documentation, especially, rather deficient in Haskell. It felt depressingly common to find interesting, but abandoned, packages that were created as someone’s Ph.D. thesis. If I want to do anything in 2019, it’s to be the change I want to see in the world; I want to help this situation in any way I can.

That could include taking on maintenance of abandoned packages I understand and use. Nothing comes to mind right away, but as I continue to learn Haskell, the opportunity may arise in the future. It could also be sending pull requests to packages to add features or documentation.

One thing I have found so far is a fantastic Stack template called haskeleton which sets you up with a CHANGELOG markdown file, a clean library-executable separation, unit testing, code coverage, benchmarking, and documentation! Additionally, the Stack YAML file defaults to using -Wall for GHC and version numbers are also SemVer. I spent a lot of 2018 trying unsuccessfully to get code coverage to work in my projects so I am grateful for this template as everything is compatible out of the box. That’s an example of something I’d like to make.

Closing Note

It’s all too easy to feel despair these days. Just the other day the headline I read was “CO2 emissions rising for [the] first time in four years” (BBC, November 2018). I’d like to encourage everyone to reflect on the last year and think about a few realistic things you can do to make the world just a little brighter and a little better.

Here’s to 2019! Let’s make it better than 2018.

Picture of me wearing a cowboy hat, October, 2016Mr.

MarkDain

Gopher by day, Haskeller by night. Interested in security and privacy.