← Back to post list

Into 2025

2024 - A brief review

2024 was an interesting year.

In my country (the UK), the conservative government was finally voted out after 14 years.

In the US somehow, Trump returned.

And I, in what would widely be considered a poor move considering even my country’s new in-power party (Labour) shows no signs of being supportive or helpful: came out as trans.

I was trans before that, but I came out too.

Heck, I got a new job and am now working in Health Tech. I’m using Svelte on the daily and the work I’m doing is meant to help people. I’m actually very satisfied right now!

But the tech train keeps going. I’m no AI entrepreneur or SaaS guru though. For me that just means I kept learning and playing around. Let’s get into it:

Technology Highlights

These are just some of the technologies that I’ve encountered and enjoyed this last year.

Languages & Frameworks

Gleam

This year I came across Gleam - a typed functional programming language built on top of Erlang. I personally haven’t touched functional languages since I was in Uni, where information regarding FP did act as part of our general programming languages subjects, but we were never taught to practically use any FP languages. So, other than a brief stint with F# for one uni project, I never developed any functional FP skills (it’s my blog post, I get to make bad jokes).

Gleam appealed to me as a foray into this land, because it seemed relatively intuitive and it’s pretty fresh off the presses. Doesn’t hurt that the mascot, Lucy, is adorable and the community is explicitly inclusive and friendly.

As always, I lean towards making a webapp as my default way to learn things (after going through the very good Language Tour), so I followed a tutorial to make a simple todo app and sprinkled in some figuring out what/how on earth HTMX (fun, but probably not my cup of tea) is and does. That repo is here - I was really impressed with the polish on packages already created by the Gleam community, like wisp and Lustre.

I think Gleam is absolutely worth keeping an eye on and I definitely found myself walking away wishing I had the pipeline operator |> in more languages.

Elixir

After my time with Gleam, which I really enjoyed, I considered whether I should learn Elixir - a well established, untyped functional programming language, also built on top of Erlang. Very much an older sibling to Gleam.

The reason I looked at Elixir was primarily because of its status as an established programming language (existing since 2012) and due to having heard a lot about its web framework, Phoenix. I’m a sucker for a good web framework. Generally, I was looking at Elixir as a possible practical skill - there are even some jobs out there. Of course I wasn’t planning on suddenly pivoting to be an Elixir dev, but larger tool belt never hurts. :)

This is also around when I learned about Exercism, who offer a ton of exercises for a ton of languages in a very easily digestible format. So, naturally, I did some exercises there to get acquainted.

I know this section is about Elixir, but really, shoutout to Exercism. I would recommend it to anybody looking to learn a new language, whether previously skilled in programming or not

Once I had a bit of a basic understanding of the language, I was pretty confident in the ability to create an application and I figured the language looks similar enough to Gleam that I could try something at least a little bit practical. Hence, it became the newest candidate for my personal portfolio website. That’s right, this one right here that you’re on now. There’s still some jank around (some of the animations on the tools page aren’t working), but I really like the aesthetic of this site, so I hope to keep it working for a while.

Originally, this was hosted on Gigalixir who do have an excellent free offering, but I’ve since moved it over to my own VPS on Hetzner.

Admittedly, I got a bit frustrated having to remember to update the project now and then in order to prevent the Gigalixir project from spinning down. Primarily however, I just wanted to be have more control over my projects.

All in all, I liked Elixir and plan on keeping at least a little practiced with it, but I did miss Gleam‘s type safety. Still love pipes though.

Svelte 5

So, I’ve been using Svelte for personal projects (and a bit at work, where they’d let me) for a while now and can confidently say it is my current preferred web framework. In many cases, I’d probably opt for a pure SvelteKit project (the meta framework built around Svelte) for full stack applications. I think at this point it is the quickest development cycle for me to get something off the ground all the way to deployed.

In 2024, right towards the end of the year, Svelte 5 released. This represented a bit of an overhaul in the methodology in Svelte letting go of some of the magic in favour of explicitness, in the form of “runes”. While I can see why some people are still debating the changes.

After all, we went from being able to say:

let count = 0;

To needing to explicitly say:

let count = $state(0);

To have a variable whose state updates are reflected in the DOM. However, I overall am quite on board with the changes. I myself encountered some footguns over-relying on our magic $ statements in Svelte 4. I have found myself far more able to keep track and maintain $derived based variables and have almost never found myself truly in need of reaching for $effect so far.

Also, thanks to the fabulous new sv cli I was able to very easily migrate our existing (though still very small) Svelte 4 project at my new job across to version 5 in under an hour with minimal issues.

With how smooth of a rollout the change to Svelte 5 has been, along with the excellent additions received in we received in Advent of Svelte over December (I use the built in clsx constantly and am actively keeping an eye open for a chance to try out error boundaries), I really believe Svelte is in good hands.

I hope we continue to see more people adopting it as a viable web framework and more job opportunities out there. And above all, I hope we can all strive to make the web just a bit more RAD (see this excellent talk by Rich Harris).

In short - I still love Svelte and the release of version 5 has only increased that for me.

Packages & Tools

This section is just to highlight some packages/tools I used this year that I think made a notable difference to my workflow.

Drizzle

Having used Prisma a fair bit on my SvelteKit applications, I was keen to try out another ORM solution. Drizzle really appealed to me because of the SQL like queries. After using it a bit (in a project that I never finished because of my shiny object obsession tendencies), I can say it’s probably what I’ll stick to for JS-based projects’ ORM needs. It does what it says on the tin, keeps me more in SQL land while writing queries. Big fan!

Coolify

One thing I am NOT is DevOps. I know my way around a GitHub action or an Azure pipeline, but infrastructure management doesn’t exactly appeal to me. I want to make the thing and then have it be where I need it to be, is that so hard?

Of course, platforms like Vercel offer exactly that. Same for the aforementioned Gigalixir. Each of which have free offerings, however these come with restrictions (see earlier mention of Gigalixir spinning itself down without activity, my poor personal site went down a few times as a result).

The answer, dear reader, is Coolify. Well, at least for me it was. It’s an open source platform for application hosting, providing easy deployments for my SvelteKit apps and heck, even this here Phoenix app. Lovely!

I found it to be relatively easy to set up on my Hetzner VPS and really appreciate having both control over my own infra (she says as if there’s some sensitive content or even performance requirements lying around here!) and easy rolling deployments, once it was set up.

Huge recommendation, if you find yourself wanting platforms like Vercel, etc. at least CONSIDER Coolify!

New Job

A major life change for me personally this year was my venture into a new position. Since moving to Scotland, from my birth country of South Africa in 2021 I have worked for one company.

That company, while much smaller than my previous employer in SA, was a similar type of business, focusing mostly on agency work, providing software solutions for external businesses. A side effect of this, I think, is less attachment to the work that one ships. Don’t get me wrong, we always strived to have pride in our work, but still.

In contrast, my new position is on a team working on software actually used by the company I work for. I hear and see the impact of our work at company meetings and I really do think there’s merit to that. Not only that, because I work for a provider of occupational health services, the work I do now directly facilitates people receiving healthcare. I am able to find meaning in my work and that is great!

On top of that, my team has been nothing but a pleasure to work with since day 1 I rarely even have to think about the fact that I’m trans other than my need to shave before work constantly (I’ll get on that laser soon, there’s just so many things to do!).

Then, there’s the matter of the tech. While I got to use Svelte in my old position where I started projects, it was really more of an Angular/Vue house. In my new job, while there’s still some old Angular to maintain, our new work is C# with a Svelte SPA on the front. Since I have a decent bit of Svelte experience and many members of the team do not, this also means I think I get the chance to be a real asset in helping shape the frontend and onboarding people onto the new tech. So far, I like to think people have had a pretty decent time with it!

All in all my job satisfaction is very high right now and I hope it continues to be so for a long time to come!

Advent of Code

This year, for the first time, I decided to take part in Advent of Code. Although I’ve known about it for a few years, something in me (I say “something”, like imposter syndrome doesn’t have a name!) always told me that those kinds of challenges are “for smart people” - in other words, not for somebody who does web development. Somebody in uni who remembers their Data Structures and Algorithms courses still. Somebody who does complex backend development on complex systems. Probably, C++ and Rust users.

This year, however, I felt a bit of self confidence for the first time in a while. I’d been working on projects in my free time, keeping my general dev skills a bit sharper. I didn’t suddenly feel “smart”, but I felt like I could give it a shot at least.

Another big motivator was that I now had a personal laptop, so I didn’t need to be at my desktop to work on side projects. The ability to work on the couch or in cafes (like where I’m writing right now, yes, I am that cliche writing a blog post on a Macbook in a cafe) really helps with motivation.

So, I got to it. I thought this would be a good chance to freshen up and learn a bit more Gleam - it had been a few months now since that original venture.

My experience basically proved to me what I already suspected: There’s a lot of stuff I don’t remember from Uni anymore! Efficiency (at least in the same frequency and degree) is not as common of a problem in modern web development.

Also, looking at the subreddit associated, yea, there WERE a lot of C++ and Rust users (and also a lot of Python, of course). But I wasn’t alone on the Gleam train. And I wasn’t the only person who didn’t solve every problem immediately. Because of course I wasn’t, why would I be? We’re all just out here doing our best, very few developers are the fabled 10x engineer who just knows the solution to absolutely everything. We learn, we figure things out, we help each other out. :)

I also often found myself thinking “Damn, if I wasn’t doing this in Gleam and instead just used TypeScript or C#, I’d have this figured out already”. Often, that was true. I just wasn’t as used to the lack of pre-baked data structures and the sheer amount of recursion I’d land up using.

However, I like to think that coming out the other end of it, I actually regained some muscles I’d not exercised in 6 or so years. I went from a Gleam novice, to… well, a Gleam novice still, but one who’d actively used the language to solve some problems for a bit! I never went back to previous days, but I like to think that with each subsequent day I got slightly closer to Gleamy ways of doing things.

I really enjoy reading Gleam code, end of the day. So hopefully, I get to keep finding excuses to bust it out now and then.

In the end, I did burn out at day 16 because well, I still have a full time job and my holiday was used to go down to family, but I’m proud of what I achieved. I’m hoping that I’ll keep doing this every year as a chance to exercise some muscles that I wouldn’t otherwise and eventually, maybe get through the full 25 days.

The repository is here if you want to see some of the ugliest Gleam code you’ll ever see! :D

2025 - What now?

Same as usual! We learn, we make mistakes, we try not to take down production.

We reach out to our communities and we engage where we have the energy. Give your your local trans person a hug (consent required), this year’s shaping up pretty rough for us.

My immediate plan (once I’ve got the blog section of my site and THIS blog up)? The same thing I do every year, Pinky. Try learn something new.

Right now, I want to add another backend language to my toolkit. The options are between Go and Rust and I feel like Go just really suits my ✨aesthetic✨, so that’s what I’m thinking first!