Software I used for Programming in 2021

Overall, there was a continuation of trends from last year with just a few changes.



PyCharm has continued to be my IDE of choice for Python programming. The devs haven’t been resting on their laurels, either. Recently they added some extra features to support FastAPI. And they also added some features that I don’t 100% understand that make it easier to test against fake HTTP endpoints. It’s really awesome and definitely worth the price if you program primarily in Python. As I predicted last year, its git features ended up making GitQlient and Git Kraken (on Linux) more or less obsolete for me.


As I stated last year, this is the IDE that works perfectly with CircuitPython. It has the built-in ability to access the board’s console and it saves files in the right way. I wouldn’t ever go to Mu for one of my Python projects, but that’s because I prefer PyCharm or Kate.


MS Visual Studio

Although I didn’t do too much Unity game development last year, when I did, I used MS Visual Studio. The tutorial I was following used VS Code, but they didn’t show how to set it up, so I just stuck with Visual Studio.


On Windows, I just used Unity as usual. The Linux story was a little more involved.

As soon as I wrote my 2020 EOY blog post about how Unity doesn’t work for me on Fedora 32, it started working with the GameDev.Tv second section where I was doing the tank game. So I tried to start up Rider as the IDE, but it wouldn’t start. I installed MS Visual Studio Code via Flatpak. It flashed a warning about being in a container and so it might not work right. So I added the Visual Studio repo and installed it via DNF.   While I was working on it, it Unity from Flatpak couldn’t access my DNF-installed Visual Studio code. So I decided to try again with Flatpak. Of course, after that Unity refused to launch again. Turns out the secret was quitting out of Unity hub all the way; then it would launch my program again. This time it was able to launch Visual Studio from the Flatpak. I get the message “dotnet and mono6 SDK extensions are required for Unity debugger to work. Please install it form Flathub”. I couldn’t find it on Flathub, but a little googling led me to try: flatpak install org.freedesktop.Sdk.Extension.dotnet and also flatpak install org.freedesktop.Sdk.Extension.mono6. After that, no more errors. Unfortunately, scrolling didn’t work in Unity and that made things very annoying so I went back to doing it in Windows. To prevent a situation like this where it suddenly starts working after I blog about it from happening again, I went and loaded up Unity on my Fedora 34 desktop. Mouse scrolling still does not work (essentially making programming in Unity so painful it may as well not be possible on Fedora)



Using GoLand (another Jetbrains IDE) to program Go is just a joy. It takes a lot of what I would have found annoying about Go (the formatting, setting the path, etc) and abstracts it all away. Plus if you already know how to use any JetBrains IDE, you basically know how to use all of them.



You can almost copy/paste what I wrote about GoLand and put it here for RubyMine. Although, at the level at which I program Ruby, I don’t need as many of the IDE features as I do with Go and/or Ruby.

Language-Independent Editors


I mostly used Kate for Perl and Haskell this year while working on Advent of Code. However, I did get the LSP working for Python, meaning I can get some automated PEP8 corrections and a few of the other little features that PyCharm provides. They added much better support for git within Kate, bringing it closer to what you can do in an editor like VS Code. This meant I had much less need to go to the command line to type git commands.


I kept getting issues when launching NeoVim and my efforts to debug it (with help from someone on reddit) didn’t work. So I stopped using NeoVim and just used Vim. Both of them were mostly used on servers or when it just wasn’t worth launching a GUI to do a quick bit of editing.



I used gh, Github’s commandline tool, a bit more this year. Mostly I used it to quickly view issues without having to load the website. I believe that JetBrains either already has or is planning to integrate this into their IDEs, so it may mean I stop really using gh only a year after starting to use it.


As I mentioned above, I basically stopped using GitQlient since the JetBrains IDEs contain many of its features built-in.

Git Kraken

I used Git Kraken on Windows. I installed and played with it on Linux during their virtual conference, but I haven’t really launched it since.


I still use Gitea quite a bit for some git repositories that are for private use and don’t need to be on Github.


I think I used Drone maybe once this year for CI on one of my internal projects. But I tend not to use it since Github Actions works so well.

GitHub Actions

This was my CI of choice. I really need to get better with some more advanced features so I can have it compose large chunks of my release for me and make things involve a lot less copy and paste.