While confined at home due to the current COVID-19 pandemic situation I realized it had been more than one year since I last blogged anything. Moreover, 2019 was completely blank, which is surprising given that, for my personal life, 2019 was pretty exciting and interesting. I will try to amend that by writing this recap, which should probably have arrived at least 3 months ago. :-)
At the end of 2018 I switched jobs for the first time in almost 10 years. In September 2018 I joined RTI, a relatively small company doing fantastic work developing Connext DDS, essentially a distributed DDS-compliant framework that allows you to send and receive messages in a distributed system without using a traditional centralized message broker. While I had a really nice experience there working briefly on the Ada binding for RTI Connext DDS, I left the company after just 3 months to join Igalia in January 2019. I have no doubts my early exit from RTI left a bitter taste in some mouths, but there are two things at Igalia that, from my point of view, justified my decision to take that train before it left the station.
First, Igalia is a small consultancy specialized in open source. I have been a personal and professional user and advocate of Free and Open Source Software for a couple of decades now, so working professionally in open source projects, with people I knew, aligned almost perfectly with my world view and allowed me to fulfill a professional dream. Second, Igalia is an employee-owned company with a flat hierarchy and the way it works internally is interesting in and of itself.
Like I say in the contact page, if you are reading this using a modern web browser or from a traditional computer running Linux, chances are you are using bits of code written by Igalia. We have powerful teams working on Chromium, WebKit or Firefox (see e.g. our recent MathML effort), and I joined as part of the graphics team to work on the Vulkan ecosystem. While other members of the team are doing great work improving OpenGL for the Raspberry Pi 4 and also creating a Vulkan driver for it, among other interesting things, I have been contributing as much as I can to VK-GL-CTS, the Conformance Test Suite for Vulkan and OpenGL that all implementations must pass in order to claim being conformant with Vulkan.
2019 also cemented my position as a remote worker, which started at RTI. I can tell you I’m very happy working remotely and I don’t like the idea of being back to work on-site for any company. It’s interesting to note I normally work from a small co-working space instead of working from home like I’m doing right now (due to the confinement situation). I save fuel but also a lot of time by being able to get to my desk on foot in only 5 to 10 minutes. I have lunch at home every day and I see my kids and family way more than I did before. The co-working space, compared to working from home, also allows me to separate work and private life better and to keep a consistent work schedule. My co-working space colleagues provide the needed in-person human interaction, which complements work email, chats and video and audio calls with my Igalia colleagues, whom I meet less often.
Watching my daughter and son grow is an interesting (and demanding!) task by itself, but I didn’t stop gaming every once in a while. I played Far Cry 5 and Primal (both very entertaining if you like the “Far Cry formula”) as well as Dying Light (interesting and entertaining, but perhaps not exactly my kind of game). However, two games really stood out recently to me. The first one is Cuphead. It’s very interesting and very well done. No matter what comparisons you read about it on the Internet, I can tell you it’s a bit hard, no doubt, but not as hard as Dark Souls. Trust me, I’ve played both. Levels in Cuphead are basically either boss fights or run-and-gun levels and the only drawback I can find in the game is that I expected the balance between both to be different and more classic, with most levels being run-and-gun and some levels being boss fights. Instead, boss fights dominate the count. Nevertheless, worth giving a try if you’re into 2D platformers and enjoy a challenge. The second game is Prey and is, by far, the best game I played last year. I don’t want to spoil it too much, but if you’re into other Arkane Studios games or the Deus Ex series, for example, you will probably love it. I loved the theme, the storytelling, the game mechanics… everything. Highly recommended and makes me anticipate Dishonored 2, already in my queue, even more.
On the computing side I continue to use and appreciate Fedora and I plan to write more detailed posts about interesting details I’ve changed in my hardware and software environment. For example, last year I started using Visual Studio Code to replace my existing Vim setup and I believe it’s something worth talking about. I also switched from my classic Spanish keyboard to a US International one that eases programming tasks a bit (totally worth it and thanks RTI for forcing me to look into this topic!). That one is interesting because I can tell you a few things about keyboard layouts and how not to lose your mind while typing something in other Western languages with that type of keyboard. Also recently, I acquired an Apple iPad and I believe it’s worth explaining why I took that choice. Finally, I also feel the need to write a post about BorgBackup, an amazing backup system I started using only a few days ago.
Other technology details affecting this blog directly are the fact that Fedora recently made Python 3 the default Python interpreter and I took that chance to update my 200-line blog generator to the new version. I intended to publish the script at some point in time but I don’t know if I will end up doing it. There are many great alternatives to generate static blogs and pages and mine is very particular and sitting in the same repository containing the blog content and other data that is best left unexposed, so publishing the program properly requires a bit of preparation. In addition, I also switched the generator from the standard or “official” AsciiDoc program to Asciidoctor, which is a bit faster and is essentially a drop-in replacement. AsciiDoc is written in Python but my impression is the authors never intended for people to use it as a module in their programs, so I had to call “asciidoc” as an external program from my Python generator, negating every advantage of it being written in Python because a new interpreter needs to be launched with each invocation. As Asciidoctor supports almost the same document syntax and command-line options, and produces the same output, using it was a no-brainer move for me, saving about 50% CPU time generating the whole blog. Note this is just a benchmark. My Python script only generates new posts, the main page, archive and feed in mere seconds when I write new content, so this move is more about Asciidoctor being used by more projects I’m familiar with, and apparently showing more recent activity.