In this post I'd like to look back and talk about a few personal projects I've worked on in 2022.
This year I wrote 4 new blog posts (including this one).
The post that took the most work is Building a bulletin board using twain and friends, which is a port of an older tutorial about scotty to the twain web package.
This actually took more effort than I expected. Twain and Scotty are a bit different and the concepts do not map very easily from one to the other. I had to spend a bit of time rethinking how to introduce this library in an approachable way. I've also decided to add some additional information about WAI and other topics along the way.
The other important article I worked on was Giml's type inference engine, which was written in 2021, but had a significant edit.
When I first wrote the article there was one step I was uncertain about - generalization. At the time I omitted it and secretly hoped someone will let me know if I missed an important step and tell me why is it important, but that didn't happen unfortunately. However, after thinking about the interaction with other features (such as modules) I came to understand its importance, and edited it into the article.
This year I did not get back to working on Giml on stream, or streaming in general. I only streamed once this year when I talked about compilers and Haskell. I'd like to stream more in 2023, and make some more progress on Giml.
Giml did not see a lot of work other than adding the generalization step to the type inference and some refactoring. I kinda got stuck with doing the not so fun work of rewriting the parser in a more robust way. This drained my motivation. I hope to get across that hurdle and get back to working on Giml because there are many more interesting things to work on!
GlideVM is a stack-based bytecode interpreter that I started while streaming before I started Giml.
This year I spent a bit more time on it, though not on stream. I refactored some stuff and added comparisons and jumps.
The next interesting feature for this project is closures. I hope to spend some time on it in 2023 as well.
This is probably the most noteable personal project I worked on this year.
Thanks to your feedback and contributions, Learn Haskell by building a blog generator have seen additional editing, notes and exercises! Thanks for everyone who contributed!
To my even bigger surprise I've even found out that my book is on goodreads!
I'd also like to highlight a review of the book. I'm always happy to hear what people think about my work, and constructive feedback helps me improve and make my work better.
This is my third time doing a yearly recap type of post. This year been a bit lighter on content than previous years, but I'm still proud of the progress I've made with my personal projects, and I hope at least some of it can be useful for others as well.
Take care and happy new year!