Programming projects in 2021
It has again become time to summarize the top FOSS projects I've been involved with during the past year. Not all projects I worked on are listed; I've tried to limit it to the ones where I spent the largest amount of time, or where I consider the project/work done to be particularly interesting for one reason or another.
(The text below is an excerpt from my general page about programming which can be found here.)
-
2021
-
Perlang (97h): Continued towards the first
0.1.0
release. It's nice to not in any way be bound by any "external" timetable of any form for this project. Perlang is simply a sparetime interest of mine where I am free to decide when and how to release (or not release) the software. I really enjoy this, to be honest. Even though I have spent a fair amount of time on the project already, and it definitely is usable (at least for REPL/simple scenarios like calculating2 ** 32
and so forth), there are still open bugs (3 at the time of writing) that I am aware of. I am currently planning to both fix these, and perhaps add some new functionality as well, before I call it a0.1.0.
release.Here are some of the achievements during the year (full list of commits here):
- Various docs/website-related improvements: 6a0802a, #154, #156, c9c7393, #166, #173, #175, #176, #179, #192, #194...
- Upgrade to .NET 5.0 (#126) and .NET 6 (#223)
- Implement addition and subtraction assignment (#148) and modulo operator (#152)
- Add
long
(#210),double
(#236) andbigint
(#238) types, fix integer expansions tobigint
(#234). - Support hexadecimal (#217), binary (#219) and octal literals (#220).
- Move away from using the
dynamic
keyword (#225, #237) - A bunch of bug fixes and other improvements (#188, #199, #235...)
-
perlun.eu.org (16h): I wrote a few blog posts, where this one is one that I'd particularly like to highlight: Saying goodbye to an old friend: Decommissioning a Raspberry Pi web server. Writing this blog post was only part of the job; doing the actual work to planning the move, figuring out where to host things and so forth was also a bit of an effort. See the actual post for more details.
I also moved the CI which is used to publish the website to https://perlun.eu.org away from Travis, over to GitHub Actions: #28. There is little reason to not use the built-in GitHub Actions these days, at least for my kind of use cases. One of the best things about GitHub Action is that the delay before a job starts is really low (more or less "instant" once you push your code). This is nice; I don't like waiting on computers.
-
halleluja.nu (10h): Some new content was written and published:
- Tycker Gud om mig?, a short sermon in Swedish.
- A new Bible Study section was added (in English). My aim is to write a sort of "commentary" on the Bible, chapter-by-chapter. Now, there are 929+260 chapters in the Christian bible, so going through them all will probably take a "few more years" at this pace... Nonetheless, you need to start somewhere.
-
sitegen (6h): Not much to mention here, except that I gave F# a brief try. F# is a functional programming language in the ML family which seems a bit interesting. A friend of mine (Tobias Lindqvist) is very interested in it and has been speaking positively about it to me. I tried it out and it was indeed quite nice, with a fairly elegant syntax. It was also nice to be able to create methods with "non-standard names" like
creates a non-null TopLevelConfig.Config
: this is impossible in languages like C# but quite simple in F#.I ended up rewriting the class in question in C# instead, because of the fact that F# lacked inner classes which I wanted to use for grouping my test methods. Nonetheless, it was interesting to try out a new programming language; it's not something you do every day.
darkerfx (5h): No web site is complete without a proper "dark theme"; perlang.org is no exception to this rule. The Perlang web site is built using DocFX, and there was already a dark theme for DocFX named darkfx. I made some changes to the theme and also converted the CSS to SASS. All in all, this was a fun endeavour and I do actually enjoy doing some frontend work from time to time. As long as I can stay away from the horrors of Javascript...
ansible-config (5h): While doing the work described in the blog post previously mentioned, I also extracted some Ansible roles from my existing "roles+config" repo, along with some new roles, and published them in a GitHub repo. It's not very fancy at all, but especially for those of you not yet familiar with Ansible it could perhaps be a bit useful as inspiration for your own roles.
-
dotfiles (4h): As usual, a bit of work here and there on this repo was made during the year. I want to highlight one particular commit: f03d340, in which I added
dark_mode
andlight_mode
shell aliases (well, in fact, shell functions). This was useful for me when doing "out-on-the-balcony" hacking in the summer time, where the sunlight simply made the usage of a dark theme impractical. Off to the terminal and typelight_mode
, and there you go - switching both the Firefox, Cinnamon and GTK themes all in one go.Unfortunately, I had some struggles with VS Code getting it to properly detect the theme being changed. It turns out that this is caused by an Electron/Chromium limitation. I guess this is one of the disadvantages of running GNU/Linux as your desktop OS; it's clearly less common than Windows and macOS.
-
protobuf (2h): This was an interesting experience. I created a pull request, based on an initial effort from another contributor that hadn't been merged. I don't regularly work with C++, so it was nice to be able to do something in that language for a change (I historically used C++ quite extensively, for example when writing the tanstaafl Fidonet client in the late '90s, but I haven't used it professionally for many, many years).
One thing that struck me was the compilation times: it took ages just to be able to build the project (which isn't that huge, I think). Compared to other languages I regularly use (Java and C#), the difference is significant. This is in one way expected since both of these languages compile to intermediate form instead of building "full" native binaries (like C and C+++ does), but still: it was an interesting thing to realize.
sudo-1.8.3p1-patched (1h): Finally, a few words about this one. Sometimes, life brings you to do rather odd things - this was clearly one of the more unexpected things this year. Because of CVE-2021-3156 and an old Ubuntu 12.04 machine that needed to be patched, I spent some time essentially "backporting" the Ubuntu Xenial (16.04) fix to the
sudo
package in Ubuntu 12.04. In one way, this was a fun exercise since I don't tend to do that much C programming these days. In another way, it's obviously a bit sad to have to spend time patching a server running a 9-year old Linux distro which is well past the EOL time. But, what do you do...
-
There we go, you've reached the end. Thanks for going through the year together with me.
Wish you all the best for the new year!