Venturing out of Plato's glue engineering cave

For the last few years or so, I’ve been working in the wonderful world of web development.

I don’t mean this in a sarcastic manner either; the web is probably my favourite platform. No walled gardens - write HTML/CSS/JS, and push it to a server.

I’ve always enjoyed putting things on the screen, as well as working with data and doing backend shenanigans.

But what I don’t enjoy about the state of modern frontend development is the sheer amount of convolutedness, and the large amount of glue engineering which I end up doing.

It feels like I spend half my time fixing package conflicts, trying to work out how to do X in Y framework, and connecting one API to another API. Some of this work can be fun, and it of course can actually serve the purpose of creating business value. There isn’t any issue with it.

But I do ask myself: is this really what I want to do?

Do I want to be gluing different APIs together, and working out why this version of a package doesn’t work with another one? Or learning a framework, which is essentially just a DSL, and have to re-learn the new spec every time it gets changed?

The answer is, of course, no. But the bigger problem is to do with learning.

The TLDR is that I like to learn new things. I want to do work where learning new things involves solving domain problems, or becoming a better programmer, rather than “learning” how a new framework functions. It feels like I’m not really learning anything real.

So, what to do?

Venturing into something new 🧪

I previously wrote in this blog post that I didn’t want to explore another web framework.

I was wrong.

The web is by far my favourite platform to develop for.

The programming language, and the ecosystem I’ve settled on, is Elixir.

One of the main reasons I’ve decided on Elixir is the fact that I’ve had some experience reading Erlang codebases, and learning about the BEAM VM and the Actor Model. I personally find it a very interesting piece of technology that nerdsniped me (and continues to do so).

In addition to this, there is a big set of web tooling with Phoenix - and it looks like I can do everything in Elixir and HTML (well, hEEx), which seems nice.

Outside of this there’s Nx for AI/ML and also Livebook to play around with too. Even Nerves for embedded if I ever get round to that, too.

And, if I ever manage to beat the hurdle of learning about the borrow checker, there’s also NIFs and Rust.

Being honest with myself

I have tried (and failed) multiple times to pivot into systems programming.

Don’t get me wrong, there are fascinating aspects to it. I’m an avid enjoyer of Unix and the command line.

But the keyword here is user. I have a lot of respect for systems programmers and whatnot, but I think for me I’ve always been more interested in the web, and research engineering in Python.

Conclusion and final thoughts

Really I want to do good work, build interesting and cool software, write about it, and use any combination of these skills to make an income. This is a lot to ask for, I’m aware, but hey, you gotta try and do things.

Thanks for reading!