2021 Review
I perform personal reviews twice per year, on June 30th and December 31st. I do the following in these reviews:
- I evaluate how various aspects of my life have been over the previous six months. I think about what is going well and what I need to put more effort toward.
- I identify the highlights of the previous six months. This is a good reminder of what is actually important in life. Many highlights tend to involve sharing experiences (and food) with family and friends, while solo highlights tend to involve nature.
- I establish goals for the following year. These goals tend to be concrete and are used as a basis for my evaluations.
- I establish lifetime goals for two life spans: six more years and sixty more years. Many of these goals are general, but they help me think about priorities.
I do not share the evaluations or goals with anybody. They are personal. I like to share highlights with my family, however, and I enjoy hearing any highlights that they want to share. Knowing one another’s highlights helps us plan more fun times in the future!
I am a pretty private person, so I do not write much about my personal life on this website. I am also especially careful to not write much about family members or friends, in respect of their privacy. I will not share details about the review that I did this morning, but I would like to do a separate review in this blog post about the part of my life that this website is concerned with.
Personal Life
My second daughter was born in 2021! She is happy and healthy, and my oldest daughter is doing really well with her. Managing my older daughter’s busy schedule while simultaneously living on the schedule of an infant has been challenging.
I would like to live a life with no cars. One thing that I have enjoyed about living in Japan is that it is possible to get along without using them. I love bicycling and walking, and public transportation here is very convenient (though too crowded in overpopulated areas such as Tokyo). I had no need for a car when I was single, but family adds variables to the equation. After marriage, my wife and I would rent or borrow cars when needed. With kids, we are a member of a car share and have about six cars that we can use parked within a few minutes walk from our door. At this point, we still use cars infrequently enough that it is not worth purchasing our own, but it is starting to look like we will need to get a car at some point in the future.
Released Projects
I have made pretty good progress on my open source projects this year. It is a little disappointing that I have only had time to release small projects, however. I have done a lot of work on larger projects that have not yet been released.
I released three new projects in 2021:
- LiterateX transforms literate source code to Markdown. It is one of my older ideas that I finally got around to implementing.
- bm opens bookmarks and performs web queries from the command-line. I created this utility after frustrations with Firefox.
- lsupg lists items in a container that can be upgraded. It is one of my older ideas that I finally got around to implementing.
I created 31 releases in my open source projects. This metric is about as useless as lines of code, but it is something that I can easily measure.
I also created the docker-ghc and docker-pkg projects in 2021. I have made heavy use of both of them! The docker-ghc project has allowed me to quickly test my projects with new GHC releases. For example, GHC 9.0.2 was released on Christmas, a time when I am very busy with family and friends. The docker-ghc projects allowed me to quickly run tests with minimal disruption. I use the docker-pkg project whenever I create a release for a project that includes executables. It has saved me a lot of time in making such releases.
I (finally) publicly announced TTC in 2021.
Unreleased Projects
One of my personal goals was to make significant progress on the Haskell mocking library that I was working on. I am very happy that Chris Smith released the HMock library, allowing me to abort that project and spend my time on other projects. I have started using HMock in my projects and really like it!
The failure of my podcast hard drive in July was very painful. I implemented PodRat to help me recover quickly. I use this software very frequently now, often multiple times per day. Perhaps I will polish and release it someday, but I still really wish that I could implement it in Haskell instead of Python.
Website
I have various goals in creating this website. Perhaps the most important is to establish some kind of online presence, since I keep away from sites such as Twitter and LinkedIn. Another goal, however, was to get into the habit of writing publicly. I try to post to this blog without worrying too much about it. I published 179 blog entries in 2021.
I put much more time into the articles on this website. I have not released near as many articles in 2021 as I had hoped. Counting articles is not as straightforward as counting blog entries, but I published eight new articles this year by my count. I have others in progress that I hope to publish soon, and I have many stubs that I hope to write someday.
Haskell Books
I implemented enough functionality in my website software to release the Haskell Books article series (not included in the above count). I have received positive feedback from many people and hope that it remains useful in the community.
There have been a number of feature requests, and I have spent quite a bit of time working on the next iteration. I plan on separating the index from my website, making it easier for people in the Haskell community to contribute and collaborate. I thought that it would be a good idea to use some special-purpose software (FeedPipe) for this, but I discovered that a large fraction of my website software is needed, and I do not think it is worth duplicating the effort.
Website Software
I spent a lot of time working on my website software in 2021. It will be released as open source when it is ready, but it is unfortunately not ready yet. It has been through many iterations over the years, and I am ready to start the next iteration. I am really excited about being able to use HMock to test the tricky business logic. I have not had time to work on it lately due to life with an infant, but I really hope to find time to make significant progress in 2022.
Nix
I really like the idea behind Nix, and I thought that 2021 might finally be the year that I really get into it. It was definitely not. Perhaps this is mostly due to lack of time, as Nix requires a lot of time (development as well as compilation). Perhaps I will not really get into Nix until I need to do it for a day job, when I can allocate a suitable amount of time to it.
I am currently frustrated with Nix because the way that I currently
configure Haskell projects for testing across many versions of GHC does
not work with conditional compilation, configured in .cabal
files. I therefore need to determine a completely different way to
configure projects, which I have not had time to do yet.