Regrets of a Research Software Engineer’s tech stacks
Monday, 13 February 2023
- SPA - Single Page App
- SSG - Static Site Generation
- SSR - Server Side Rendering
- HCI - Human Computer Interaction
I feel very fortunate to be a Research Software Engineer. Mine is a bit of a unique position, for most of my projects I work alone and have complete control of the technical side of what gets built and how. I work in an HCI group, Open Lab, with academics from lots of other faculties. We work together to make public engagements, digital interventions, tech probes and lots in between. I get to work on lots of projects and most of them don’t stick around very long. So, I get to experiment with new technologies quite a bit.
I wanted to share a couple of the tech stacks I’ve deployed, think about my web development journey and talk about some of the decisions I’ve made along the way.
.then chains, I’m so glad we have async/await now. The static site is still going strong today, unsurprisingly!
Catalyst — this was my first attempt at SSR with Vue and Node.js and it was a bit of a messy one. Looking back it was so complicated to hook it all up and rearchitect how I knew Vue to get it rendering on the server. It was also a bit of a complicated project taking Google Forms’ responses, applying a template to create Trello cards then taking those cards and making them into a website (I still think was pretty cool). Thinking about it, it was better to have it server rendered but having a Node.js and separate Vue SSG massively over complicated things that should have been happening on the same server. I think this was when I first became aware of SPAs could be a bad idea.
Deconf — this is my codename for various virtual conferences I’ve hosted the infrastructure for, now an external name because other people used it and it stuck, kind of. This is a Vue.js + Node.js special, now with TypeScript, some (not enough) testing and a storybook. After running the first conference, things were rebuilt as a pair of libraries (front and back-end) and these have been used in subsequent conferences (MozFest, PlanetRed, PDC). Similar to WhatFutures, still riding the SPA wave and it was primarily chosen for scaleability. It was the choice of making a cool interactive experience and it felt like the safest choice to scale for a conference of a couple thousand concurrent visitors. Apart from that time the Redis overloaded on the opening keynote, or unnamed DDoS attacks 🙄.
Some more thoughts
I’m not sure why Server-Side-Rendering with Node.js never clicked with me. I think I saw SPAs as easier to develop and with better tooling and never really explored it very much. I’ve still not found delightful IDE integration for templating like Handlebars or Nunjucks that spots errors like missing variables or bad expressions.
I don’t currently know the best way to make the interactions I’ve made with SPAs, maybe I should look into Islands Architecture more? If they were to be designed with progressive enhancement, I don’t know what the other levels of them would be or how they could build up to be what I really want the experience to be.
I’ve been seeing a lot of negative sentiment for SPAs recently which has got me down a bit knowing what I’ve made and the experiences I’ve put out there. But at the same time, I don’t think I could have done a lot of those things without them so I don’t know really. I’m endeavouring to find a better way forwards.
Wow that felt like a bit of a rollercoaster, thanks for getting this far! If you thought this was interesting or have a suggestion, @ me on Mastodon!