Happy New Year

Well since I've restarted this blog, again, so I should probably write something.

First up Happy New Year - here's to hoping for a less Covid infested year.

Things I have learnt

I thought I'd take stock of the random assortment of tools I've learnt working on GDS projects over the last couple of years.

RSpec - I kinda knew this one anyway but most projects I'd previously worked on had been minitest + shoulda - these days I'd describe myself as pretty knowledgeable on writing good rspec friendly tests.

Azure and ARM templates - I'd not used Azure as a hosting platform prior to doing GDS projects. Some parts are really nice (ACI), some less so - SSL certificate mgmt still seems to be a mess (more so with ACI oddly).

Whilst I know a lot of projects like to use Terraform to build out their infrastructure, at DfE they were keen on ARM templates. The syntax is horrible (Bicep looks 'a bit' better) but it does work well and having the infrastructure track the state makes far more sense then mucking around with state files, buckets and Terraform.

GovUK Frontend - the canonical implementation of the GovUK Design System

Stimulus - I'd not used this prior to the GDS projects but I am now a big convert. It seems to be a much better fit for any Rails projects that aren't trying to build a client side app. Previously I'd used both JQuery and React (and Preact) for client side 'widgetry' - React was nice but gets complicated fast and you can easily end up duplicating templating. JQuery is simpler but enforces no structure so gets messy over time.

Jest (+ Babel) - Partly related to using Stimulus. Previously I'd relied on capybara/system testing to verify javascript functionality - unit testing JS controllers makes a lot of sense and speeds up the development a lot. By the point your integrating your Stimulus controllers you can be sure they work as intended, anything not working on a page will almost certainly be something simple like a typo on a target or action name.

ElasticSearch - I'd used this before but not for a while, my current project is using ElasticSearch so its been good to bring myself back up to speed.

GitHub Actions - definitely my preferred CI system - seems to work really well and the ability to hook into different events within GitHub allows for nice integrations between different parts of the teams workflow.

Azure Pipelines - I'd worked with this whilst at DfE - the best I can say for it is 'it works' but the limitations were fairly major and the rate of feature development painfully slow.

CircleCI - we're using this on my current project, I used to really like this but GitHub Actions has spoiled me and it now feels quite limited in comparison. Still does the job fine though.

Sequel - alternative ORM to ActiveRecord. I know some people rave about Sequel, but whilst its more flexible then ActiveRecord (and its flexibility is probably a necessity on our current project) - it definitely suffers for being a small team and not particularly invested in the Rails ecosystem.

GovUK PaaS and Cloud Foundry - GDS has built their own hosting service - GovUK PaaS, this is a centrally managed Cloud Foundry instance. This makes it very easy to spin up new apps in their cloud, heroku style - and I used this to add Review Apps to our current project (one for a future blog post).

Things I want to learn in 2022

  • Rust - I've got the basics on this but its a complex language and there's a lot more still to learn
  • Gtk4 - I've done some limited Gtk app development in the past but I'd like to become proficient at this. I'm hoping to work on a Gemtext editor a la Apostrophe (very nice Markdown editor for Gnome) - we'll see if I ever make time for this.

Blogging again

Well I've managed 2 blog posts in the last 9 years - the New Year's coming around, and New Years resolutions with it, so I thought I'd try and start blogging again. A lot of the work I do these days is open source so no excuses this time!

Building Docker Images with GitLab CI

On a recent project I’ve been working to standardise the deployment infrastructure across an assortment of Ruby, PHP and Java apps. Some on their own boxes, some using boxes shared across projects.

Restarting this blog

After a 7 year hiatus its probably about time I started blogging again, I’ve a few ideas for blog posts from some of the projects I’ve been working on recently. Hopefully I can make the time to continue posting.