2024 Programming EOY
By EricMesa
- 7 minutes read - 1444 wordsThis year was a bit light on programming. I was focused a lot on gaming, cooking, and Tabletop Gaming. (No surprise if you’ve been reading my December blog posts) I constantly found myself desiring to code and I definitely had a few ideas - like a utility to extract EXIF data out of my images for use in Hugo. But when I would sit down at my computer I often found myself preferring to play Cities: Skylines II or Against the Storm. (More on that when I post my EOY video game post) As per usual, let’s go month-by-month (after the first quarter that is)
January - April
I already wrote a blog post about this period, but here’s a quick summary:
- I created Taskwarrior Web so that I could add items to my Taskwarrior to-do list while at work. (I found this worked way better for me than first putting my tasks into Google docs and then copying into Taskwarrior at home)
- I updated my Amortization program to use the latest version of the dependencies. I didn’t want to do this, but since I had to recreate the virtual environment, I had to update the depedencies because the old ones were no longer available on Pypi.
- I also re-wrote my program that downloads NASA’s image of the day so that I can use it for my desktop background. It was previously written in Python, but I wanted to re-write all my cron job in a compiled language so that I wouldn’t have to worry about them ceasing to function because I updated Python and needed a new virtual environment. So I re-wrote it in Go.
- I ported my Extra Life Donation Tracker from PyQt5 to PyQt6
- I started learning Rust via The Rust Programming Language and Command-line Rust
May
May was mostly focused on refining code rather than starting new projects.
- I set up a Github Action release builder for my lastfmmastodon program which posts my weekly top-listened artists to my mastodon profile at @djotaku@mastodon.social
- When I was reviewing my code for the NASA Background Downloader I realized that in porting from Python I hadn’t taken advantage of Go’s paradigms. I added in a struct to hold the image metadata and made the code much more readable.
- I kept going through my Rust books to learn more Rust.
- One of my older Adaboxes was a Magtag. I have it on the fridge with a Circuit Python program that displays the weekly weather forecast. I had to update the program because the Openweather API I had been using was deprecated.
July
I didn’t do any coding in June, but attending GopherCon (see more below) led to a bit of programming.
- One of my biggest regrets from 2023’s GopherCon was not attending Community Day and missing out on getting to hack on a badge. This year I was able to work on one and so take my first foray into TinyGo. Overall, I found it as easy to work with as Circuit Python. (Compared to how I found Arduino’s version of C a bit annoying since I’m not a C developer) However, if you compare TinyGo’s documentation to Adafruit’s Circuit Python documentation, it’s not anywhere near a fair contest. I found a LOT of the documentation to be lacking. I would love if some foundation (or even Google as a tax write-off) gave their documentation the same level of care as the Adafruit documentation. Or even if Adafruit would take on TinyGo as a second language (not that they’d do that - they already maintain Arduino C and Circuit Python tutorials for nearly every board)
- Also based on inspiration that struck me at GopherCon I cleaned up my Go Dreamhost API. I may eventually create a BubbleTea TUI that uses the API, but we’ll see how I feel in 2025 - it’ll almost certainly happen if I go to GopherCon again. (BubbleTea documentation is VERY awesome)
September
Once again I skipped a month for programming.
- First I jumped into programming in September to work on my big Django project - Prophecy Practicum. This is a project to help him wiht an aspect of his faith that helps save him a bunch of time vs the way he was previously doing it. The Javascript that was providing the ability to have text formatting was no longer working with the latest Django, so I had to do some bug fixes related to getting that working again. Also, I implemented the ability to hide prophecies that were no longer relevant to the participants. If they’d been going for a long time they might have a pretty full main screen withouth this feature.
- I started a new project called Smart Dynamic Playlists for MPD (sdpmpd). I currently use Cantata as my GUI for listening to music via MPD on my main computer. However, the maintainer of the project has no intention of porting it to Qt6. This means it’ll eventually stop working. I used this as my opportunity to attempt to write a dynamic playlist generator and then to learn how to create a Python TUI with the Textual library.
October
- I fixed a few more bugs in the Prophecy Practicum, mostly related around pairing off the participants, especially if there are an uneven number of them.
- In October I decided to Move from Wordpress to Hugo because of how ridiculous Matt Mullenweg started getting with WP Engine. I wrote a bunch of simple scripts to facillitate the migration process. I felt more vindicated when a month later the Wordpress feud got petty.
November
In November the only thing I did was to try and convert Taswarrior Web to use the Bootstrap CSS library instead of Bulma. I messed around with it for about an hour before feeling that it was too much much and giving up on it. I think if I were starting from scratch I might either try Boostrap (which has built-in packages for Flask) or Tailwind (to learn it)
December
I started off December doing Advent of Code. I did the first five days before realizing that I no longer cared about Advent of Code the way I did the last few years. So I gave it up in favor of putting more time into the Dungeon in a Box D&D campaigns for the kids. (Also it was a very busy month at work as we finished up th year and the quarter)
Conferences
I was able to attend 2 language conferences this year.
PyCon
This year was the first time I was able to attend PyCon in person. They have done a great job with their virtual offerings since COVID (although I’m sad to hear that they’re no longer offering starting in 2025 as a cost-savings), but it was awesome to finally be able to partake of the “hallway” track. I had been debating doing a conference talk about the various projects I’ve created in Python to simplify my life, but I didn’t get around to submitting the proposal. However, on a whim, I signed myself up for a Lightning Talk on the same subject and got accepted. Here’s the talk:
A couple neat moments from Pycon:
- During a question period of a talk, Guido Von Rossum (Python creator) was standing right behind me. In fact, I asked a question of the presenter and he said, “maybe the guy behind you can answer”
- in case you didn’t watch my lightning talk, I mentioned Al Sweigart’s book while he was on the stage with me (I didn’t realize it because of the bright lights - he was going to give the lightning talk right after me)
- I had lots of great conversations with strangers during breakfast and lunch
GopherCon
This was my second GopherCon in person. This year’s con was special because it was the 10th anniversary of the convention. I was also able to take a class taught by Go Time’s Johnny Borsiquot. It was a good class to fill in a few things I’d missed due to being self-taught. Also, as I mentioned above, I got to use TinyGo for the first time for the electronic badge.
State of Languages & Frameworks
For this section I just wanted to draw your attention to these two blog posts at the Jet Brains blog. First off, The 2024 State of Python. It’s written by Mike Kennedy of Python Bytes and Talk Python. He focuses on a lot of web dev trends related to Python. Then there’s the 2024 State of Django. It was most interesting to see that many of the Django developers also ocassionally other frameworks.