I mentioned pyenv in my post about Python print syntactic sugar and I received a few questions about what it is and why I use it so I thought I’d do a brief followup post about the why and how. Having worked with ruby developers a fair chunk over the last few years I’ve had some exposure to a tool called rbenv, which provides a way to have multiple versions of ruby installed for your user. Read on →

While it’s said a lot of Open Source software is written to scratch an itch sometimes it’s written to stop that gentle but persistent itch behind the back of your eyeball that makes you twitch every time a subject comes back up. After another quarterly set of changes, teams, missions and all the associated admin overhead and metadata I decided I could no longer face a disparate, possibly consistent but probably not, batch of un-version controlled Google Sheets. Read on →

Since Python 3.6 introduced f-strings I’ve been trying to shake the habit of using .format I developed when re-learning python 2. As I work in a number of different languages I find the embedded {foo} syntax to be more familiar and less special case in nature, much nicer than the older % without parens with one argument and with parens with two, and in general more flexible. So I was pleasantly surprised when one of the shinier new f-string features came up in conversation. Read on →

As a young teenager there was a local second hand bookshop I’d frequent and develop what seems to be an ongoing interest in science fiction and fantasy books and Marvel comics. They didn’t have a massive selection of the first two but over the years I managed to stumble my way onto some of the classics such as Arthur C. Clarke, Asimov and Mercedes Lackey. The ultimate doom of my limited pocket money was the timing of my first Forgotten Realms (FR) novel, Spellfire, and the creation of an Advanced Dungeons and Dragons (2nd Edition) group at school. Read on →

She started the Android update and took the knife from the sideboard, knowing he had no chance of calling for help over the next 20 minutes. The cracked screen, caked in his dried blood and still clutched in his desperate hands, was the only witness to what had happened. The last words he saw were, ‘Optimising app 18 of 148’

This is not a technology post. About a month ago I discovered a small lump between my shoulder and my spine. With my usual cavalier attitude of “It’ll be OK and sort itself” I ignored it for a week or so until it became clear it was growing at a rapid rate and it was starting to constantly hurt. After a few days of trying to get a GP (local Doctor) appointment booked, the earliest I could get being about 4 weeks away, a recurring pattern in this post, things started to get a lot worse and the mobility in my right hand and arm began to degrade. Read on →

The newest version of bash, every ones favourite default shell, was recently announced and while reading through the bash 5 release anouncement I noticed a couple of tiny but useful features and an annoyingly described but potentially awesome one. The tiny but immediately useful additions are a couple of new bash variables, $EPOCHSECONDS and $EPOCHREALTIME. Rather than scattering date commands through your scripts you can now use one of these and save the process execution and command running syntax. Read on →

One of the things I find myself occasionally missing from terraform are the native AWS specific parameter types you can use in CloudFormation. These are refinements to the usual template parameters that further limit the valid input, help describe what the value should actually be, and in some cases verify that the resource passed in actually exists. In CloudFormation you’d often start with a basic string parameter like this in your templates: "Parameters" : { "SubnetID" : { "Type" : "String", "MinLength": "5", "Description" : "The subnet ID for blah.", "AllowedPattern" : "subnet-[a-z0-9]*", "ConstraintDescription" : "Must be a valid subnet ID E.g. Read on →

I’ve been a basic but happy user of the syntastic syntax checking plugin for vim for a few years now but time and software wait for no one and after seeing a few posts mentioning the newer ALE - Asynchronous linting/fixing for Vim I’ve decided to give it a go for a month and see how it impacts my work flow. Installing it was much easier than expected. I use the vundle plugin manager so replacing one plugin with another and then triggering the install was all I needed to get up and running. Read on →

Once you have enough people each working in multiple accounts it becomes a waiting game until you’ll eventually get the dreaded “Your AWS account 666 is compromised.” email. As someone who’s been using AWS since S3 arrived this is the first time I’ve encountered this so I thought I’d write up some notes about what actually happens. First comes the easy, but not recommended, part of the whole experience; push some credentials to GitHub. Read on →