11 min read -
Jul 25, 2021
What does it mean for for function type parameters to be contravariant in TypeScript?
Let’s find out!
6 min read -
May 10, 2021
Sphinx is an extremely powerful and elegant way to generate documentation from code. In this guide we’re going to explore how to write a simple Sphinx extension that pulls in data from outside our normal RST files and displays it in any way RST allows us.
5 min read -
May 17, 2020
AWS AppSync is a really easy way to quickly assemble a GraphQL API to interact with data from DynamoDB, Lambda, ElasticSearch, RDS, or other HTTP endpoints. You don’t have to create an API Gateway, then fiddle around with hooking it up with DynamoDB mappings, or lambdas in the middle. You define a data model, queries, and mutations, and AppSync provides an endpoint for you to query it. Hell it’ll even go off and create the DynamoDB for you if you use the wizard.
2 min read -
Mar 9, 2020
I was troubleshooting… as my scenario was a little complicated. I was running Terraform in a Lambda function (as you do) and that lambda’s execution role had just been given permission to assume the OrganizationAccountAccessRole as a troubleshooting step to rule out permissions issues…
4 min read -
Feb 4, 2020
I recently swapped my blog from Ghost to Hugo. While I liked the former (being MarkDown based, lightweight and easy to use), I adore Hugo as you can host it for free with GitHub Pages. Automation Whenever I setup a Hugo site I automate the deployment of it with Travis CI. This means that I can deploy updates to my blog just by editing and creating MarkDown files in GitHub, and as soon as they’re committed to master the updated, rendered, website will be available in a matter of minutes.
5 min read -
Mar 10, 2019
Submodules? I’ve never been a massive fan of submodules as they come with their own set of complexities and surprises, and embed dependency management within your SCM when really that should be the job of your packaging tool. But sometimes they are the right tool for the job when other tools are absent or your deploy is atypical. I’ve been using them recently to split out code that needed to be shared across repos but which wasn’t available to be distributed via a package repository of any kind.
Automated Test Kitchen Checks on GitHub Pull Requests using Docker, TeamCity, and AWS Spot Instances6 min read - Jul 2, 2018
Scenario Being a model Chef user you’re using Test Kitchen to do integration testing of your Cookbooks. It works great on your machine using Vagrant! So let’s make sure these tests always run before code gets merged into Master in the GitHub repo. Why Docker? We’ll be using the chef/chefdk Docker container to run our Kitchen commands because what is the bane of a build agent’s life? Build dependencies! And what’s Docker good at?
5 min read -
Apr 9, 2017
Intro The introduction of PowerShell Gallery in PowerShell 5.0 is something that the Windows world has been craving for a long time (alongside Chocolatey, though I have somewhat mixed feelings about Chocolatey). The PowerShell equivilent to pip, gem, npm, it allows you to install community made PowerShell modules with a single command (Install-Module to be precise!). This is a great way to save yourself from spending hours re-inventing the wheel and easily consume code that someone else has slaved away to make work already.
4 min read -
May 30, 2016
Pagerduty has a pretty kickass reporting feature, but my aim is to create a holistic dashboard for my team’s operational work, and to do that I need to have all my data in one place. That one place? Splunk! I love Splunk, have done ever since seeing a presentation on it years ago, but for a long time it stayed out of reach for mere mortals due to its price point.
8 min read -
May 26, 2016
Intro WinOps is a conference in London aimed at addressing the fledgling audience of Windows people trying to DevOps. It's also a monthly UserGroup which I attend regularly, so I was excited to see how the content translated from UG to conference. I don’t have slide decks for all of the talks (though I’ve added them where available), if you have one that I’m missing, please link to it in the comments!