⇐ Blog
My 2025
A year in review.
January 01, 2026
It is a tradition on this blog. The big number goes up, and I reflect on what happened the past year. Arbitrary though it is, I do find it useful and fun to reflect on the year after the fact. I tend to jump between many projects and attempted projects, along with writing whatever I want on this site. As my current project tends to attract most of my focus, it’s easy for me to forget that which I’ve completed. At the darkest time of the year—when moods are at their lowest—this kind of undertaking is a helpful reminder.
So, what did I do this year?
I Blogged More Than Ever
This blog’s informal rule is that whatever I feel compelled to write about—that otherwise wouldn’t fit in a few social media posts—goes here. It can be announcements, guides, weird thoughts, tech culture rants, analyses on user experience, or whatever else.
This year, I not only wrote more posts than ever, but I also wrote more consistently than ever. I made at least one post in each calendar month of the year, though there were a few gaps between posts that lasted more than a month. That’s a significant difference from 2024, where I tended to have lengthier gaps broken up by rapid-fire bursts of posting.
I have a few friends who would like to begin blogging. They are interesting folk with wonderful insights yet I suspect they find the prospect of writing regularly to be somewhat intimidating. My advice to them is the single most useful advice I’ve received for writing: Just write. Simply start writing. If you’re blocked on a writing project, then write about it. You don’t even need to post it. In fact, I’d say that only about half of what I write for this blog ends up actually being posted here. This isn’t even for quality reasons—often my short-term interest in a topic will fizzle out before I even finish writing a first draft. In my mind, that’s a useful sign that whatever I have to say about a given topic probably needs to spend more time percolating at the back of my mind. This method is also a useful way to make sure the blog is varied.
Those who follow this blog simply never know what they’re going to get, which must be part of the appeal if follow it in the first place. The lack of analytics also helps, as interest in any one article won’t have a sway in how I approach this site.
I Modded Pokémon Emerald
I love playing old 2D games on my Analogue Pocket, but it’s difficult to play GBA Pokémon ROMs on it due to a lack of clock support on that platform. My mod for the game removes all aspects of the clock from Emerald while still keeping all clock-based events by simulating the clock while playing. I played all the way through the game as I developed the mod and found that the experience was remarkably fresh despite the fact that I intentionally didn’t change anything else about the gameplay experience.
What’s particularly special about this experience is that a desire to mod these specific games as a pre-teen is what eventually put me on the path of becoming a software developer. At the time, mods were developed using specialized tools that would modify the actual ROM image of the game. It was a very haphazard and error-prone process. Nowadays, there exist complete decompilations of these games, so it’s possible to modify them through reconstructed source code. With the skill set I have now as well as an evolution of how the game can be modified, actually writing the mod was a surprisingly easy endeavour. In fact, the most time-consuming part was the playtest!
You can read more about the mod in its own post.
I Skipped Daylight Savings
In an ad-hoc experiment that I am not sure has ever been attempted, I stayed on a Standard Time schedule from March 2025 through November 2025 (the duration of Daylight savings in my province). I slept so unusually well during these months that I am now unflinchingly determined to stay on Standard Time indefinitely. It is my hope that this practice catches on as it’s looking unlikely that governments would ever get rid of Daylight Savings, with most seeming to lean toward making it permanent!
You can read about how I started this, and how I felt afterwards in their own posts, which also include a detailed rationale.
I Contributed to Some Great Free Software
As my comfort in the GNOME ecosystem grows, so to does my comfort in contributing to it. That said, most of my contributions were to an in-development game emulator over the summer. Though I’ve mostly moved away from using it, it’s still an incredible way to play retro games and I look forward to it hopefully setting the world on fire when it releases because it’s really good.
My understanding is that the app will officially launch sometime in 2026, but so long as you have a good game controller and can use it from Linux, the app is already the single best way to play retro console and handheld games on a computer. Definitely give it a try.
I Became The Driving Force Behind Lua on GNOME
Currently, my app Tally is the only GNOME app published on Flathub to have been written in Lua. Being my favourite programming language, it was the obvious choice for me to write my apps. Due to its relative unpopularity however, using Lua for these tasks poses numerous obstacles. Support for the language is not great in the GNOME ecosystem. I had to figure out many things on my own with no assistance from others.
It has been challenging, but the hardest part is that the Lua bindings to the GNOME libraries had been essentially unmaintained for a long time and the prospect of a new release—which hasn’t happened in 7 years—is likely impossible. Worse still, the then-yet-unreleased GNOME 49 was about to introduce changes that would break compatibility with these bindings, preventing my apps from being able to keep up with the platform. The excellent Christian Hergert—a longtime developer for GNOME—did some preliminary work to fix this, but couldn’t complete the job on his own and no one involved with the bindings was in a position to complete it until I very fortunately stumbled onto his pull request. I finished the work he started, tested it thoroughly against my existing GNOME apps, then decided that the best course of action would be to fork the whole thing. This is how LuaGObject came to be.
On top of Christian Hergert’s work, I:
- Added many new features to the library
- Completed the move to a new version of the underlying binding generator
- Fixed bugs in a (mostly) timely manner
- Rewrote all of the existing documentation
- Added much-needed helpers for GTK 4 and Adwaita, the toolkits used for GNOME apps
- Published the project on LuaRocks, making it much easier for others to use
Lastly, I wrote a very well-received guide on how to use LuaGObject to write a GNOME app from start to finish. It is a complete rewrite of an older guide from last year, but having it target a project that is actually being maintained—by myself no less!—makes it feel all the more special. The practical consequence is that having the library be maintained, and having someone championing the use of Lua to write GNOME apps has encouraged others to give it a try. Actual new apps are being written in Lua by folks who, like myself, might not have otherwise been able to do so using other programming languages. That simply wasn’t happening in a sustained way before I came along, and it is a very positive develoment which I am thrilled to facilitate.
Looking Forward
Beyond continuing to maintain my own projects, I have no hard commitments for the next year. I work best when I stumble randomly into problems that need solving, and that’s not something that can be planned. My hope is simply that I can continue to make software that solves problems and which others enjoy using.
I do hope to release Parchment, though.