Tom Verran

Hello, like many people with neglected portfolio websites I’m a software developer. I’ve spent most of my career working in Scala doing server side development but as you can see here I enjoy dabbling in frontend development from time to time.

Blog posts

WordPress is quietly amazing

Recently I’ve updated two websites I started hosting for local organisations in 2010. I certainly didn’t imagine for one second that thirteen years later I’d still be hosting them and one of them was using a WordPress theme I wrote in 2011.

The dangers of dead letter queues

Applications within a distributed system often communicate with each other using some kind of message queue or event bus, for example Amazon SQS or Kinesis. The spookily named dead letter queue is a common pattern used with these systems to handle errors but if they’re not carefully configured and well thought through they can cause a lot of trouble.

How I write Scala in 2022

Historically Scala has been infamous for being so expressive that everyone ends up writing their own dialect, the result being that interoperability between libraries can be an issue and onboarding new developers can be tricky. Things have mercifully calmed down a lot recently but I still thought it’d be interesting to share how I like to write software with Scala in 2022.

Side projects

London Guidebook

HugoNetlify

A minimalist guidebook for London, to see how far I can take a static site and to what extent I can take a simple, very unoriginal idea and iterate on it. As of the time of writing this I’ve barely started but I wanted to deploy it early.

COVID Vaccine Statistics

AWSJavaScriptScala

This website provided daily statistics on the UK’s COVID-19 vaccine rollout. I made it over a weekend because I was frustrated that The Guardian at the time only published the percentage of the population vaccinated every day which made it difficult to assess how things were going. Naturally the day after I deployed the website they started graphing the data in much more detail.

Has he been sacked yet?

HerokuRedisScala

Like many people in the UK I was furious when government advisor Dominic Cummings travelled the length of the country during the COVID lockdown period and then faced no consequences for doing so. Having already expressed my displeasure by buying some beer I created “Has he been sacked yet” as a kind of online petition for him to be sacked.

Perhaps unsurprisingly this did not work - I ended up with about 40 signatures and a bill from Heroku while Dominic Cummings enjoyed another six months in government. Still, the beer was nice.

Wow, Look!

ScalaJS

In 2018 during one of my occasional periods of attempting to eat healthily I noticed that it was very difficult to find reliable calorie information for the foods available in UK cafes. To resolve this I began work on an ambitious and, of course, unsuccessful project to catalogue nutritional information from all the major high street food outlets and provide suggestions for healthier alternatives.

As part of this doomed venture I created the “Wow, Look!” charting library so that I could generate SVG graphs in Scala both on the backend and also in the frontend using Scala JS. This ended up proving useful when writing my “2020 in Deployments” post for the OVO Tech Blog.

Tube Status

AWSHerokuScala

The story of my tube status website began in July 2017 when on a baking hot summers day I descended into Leicester Square tube station only to discover that all the Piccadilly Line trains were running up to 8 minutes apart which, trust me, is not good news.

I was shocked to discover that TFL described the situation as a good service on their tube status app so attempted to create an alternative app that used the TFL API and AWS CloudWatch to measure the average duration between trains at certain stations and decide how good the service was.

The problem with this idea turned out to be that many tube stations didn’t provide very accurate countdowns (looking at you, Notting Hill) so I ended up giving up on this idea fairly quickly.

Spoiler Free

DynamoDBHerokuScala

This was an app I created to automatically unsubscribe me from the Formula 1 subreddit on race weekends so that I could safely browse Reddit on days where the Formula 1 race was held early in the morning and repeated later in the day on free-to-air TV. I made it possible for others to sign up and advertised the app on Reddit but it was spectacularly unpopular and no-one actually did.

Like most of my Heroku projects I killed it not long afterwards as it was fairly expensive to keep running.

Robots.txt parser

PHP

In 2014 I had to write a web crawler as part of my job (don’t ask) and to ensure I was a good internet citizen I created a PHP library to parse robots.txt files so I could find out which parts of various websites I was allowed to crawl. The first version of the library parsed the files into an intriguing tree data structure but that didn’t really work very well at all so in 2016 it got rewritten to be much more boring.

The nice thing about this project is it attracted a fair few external contributions and appears to still be in use.

New Lodge RDA website

AnsibleAWSPHP

This is a Wordpress website I originally created in 2010 while at University so that I had something to put on my CV. While the design hasn’t changed for years I recently moved the site to an AWS t2.nano instance and automated deployments with Ansible so I could keep everything patched and running reasonably securely.

Bromley & Croydon Organists' Association website

AnsibleAWSPHP

As with the above New Lodge website this was made for a local organisation to give me something to put on my CV at university. Cheeringly it is still up and running 10 years later, I moved it to AWS (and a new domain) & modernised the deployment pipeline in 2018.