Posts by year

2023

Protect yourself first

3 minute read

A common refrain in software engineering is to put your team before yourself. Also, put the customer first. Make sure you align with the organisation’s goals...

Capybara, WebMock, and too many open files

2 minute read

Getting set up with a new codebase is always a fun, sometimes head-scratching experience where you have to discern whether the issues you’re facing are becau...

Docker context switching

less than 1 minute read

Sometimes it’s useful to run multiple Docker contexts/daemons, e.g. if you’re running Docker Desktop and Lima, or local Kubernetes clusters.

Back to Top ↑

2022

From Twitter to Mastodon

2 minute read

A lot of people are leaving Twitter right now, and there’s a lot of hyperbole to go with it. I don’t think it’s going to disappear overnight, or go down in f...

Back to Top ↑

2021

Rapha’s (free) repair service

3 minute read

I was a bit dazed when I came off my bike and rolled down the road. Having got past the initial joy of “all my limbs still work, ish”, through the thankfulln...

Back to Top ↑

2020

Pull-Request style: 100 hills to die on

4 minute read

Back in the early days, once we’d whittled our keyboards from blocks of granite, we’d debate tabs vs spaces. Then we moved onto fixed display widths. Many a ...

Running a remote hack day

4 minute read

A couple of weeks ago we held our first Remote Hack, a free, fully-remote hack day. Here’s what we did, how it went, and how you can run one.

Back to Top ↑

2018

Security is not a ‘pro’ feature

3 minute read

We rely on Open Source for a huge portion of the Internet (and beyond), yet many projects still rely on goodwill and donated effort in order to survive. Some...

Back to Top ↑

2016

A simple HTTPS proxy with Nginx on Docker

4 minute read

There are many reasons why you might need to develop behind an HTTPS proxy, for example when testing integrations which behave differently based on the secur...

Faster dependencies with Docker

5 minute read

Docker is great for building portable applications, modelling complex environments locally, and helping us bridge the gap between development and production,...

Back to Top ↑

2015

Kitematic for boot2docker users

1 minute read

A while ago I switched from using boot2docker directly to the Kitematic Mac app. Although Kitematic generally makes life a bit easier when managing Docker co...

Reclaiming my Saturday mornings

4 minute read

You hear it everywhere: ‘if you want something doing well, do it yourself’. Maybe the primary source is beleaguered managers in stagnant organisations where ...

App-wide AngularJS alerts

1 minute read

Generic alerts are a common requirement in most web applications, and as your Angular application grows in complexity the importance of a standardised way of...

Back to Top ↑

2014

JSOxford NodeBots, August 2014

5 minute read

On the 23rd of August we ran the last event in the JSOxford 2014 Summer of Hacks, building JavaScript powered NodeBots. Cue maniacal cackling as we plan to t...

Groovy SOAP clients with ws-lite

3 minute read

When we needed to quickly build a proof-of-concept to test a set of SOAP services I thought: “this is perfect for Groovy, and it’s DSL support will mean talk...

Cycle safely please Oxford

1 minute read

Cycling can be dangerous. Most of the time it’s not, and it’s a great, healthy, relaxing way to travel. This evening was not one of them, and I passed a cycl...

Open Data Day 2014

4 minute read

The International Open Data Day is almost over (here at least), and I was lucky enough to join the Oxford Hackathon. This was my first full-day hackathon, an...

Testing double-click events using Geb

1 minute read

Testing basic interaction with Geb is easy, but the ‘intuitive’ way of doing double-clicks fails silently and without any real indication as to why. Fortunat...

Bower dependencies with Gradle

2 minute read

We all know it’s important to be able to build your code in one step, but when I came to build a project I’m working on at home I found it was actually a bit...

Back to Top ↑

2013

Pi-powered central heating phase 1

11 minute read

Not that long ago I wrote about planning to set up a basic Raspberry Pi-controlled central heating system. A few components later, and the relatively simple ...

Puppet talk

1 minute read

Here are the slides from a presentation on Puppet I gave at the Software Alliance Wales lightning lunch on 27th September 2013: https://speakerdeck.com/spike...

Using GPG to encrypt backups

3 minute read

If you’re doing off-site backups (and if you’re not, you should), you’ve probably wondered how much you trust the place you’re uploading to. Fortunately publ...

I’ve moved

less than 1 minute read

After a long deliberation, I’ve finally moved my blog away from Wordpress. It’s nothing against you Wordpress, I just want to have a little more control. See...

Simple Rsnapshot backup over FTPS

6 minute read

In this post I’ll walk you through setting up a simple backup solution using Rsnapshot and CurlFTPfs to retrieve files from an FTP/FTPS server. The result is...

Some notes on backup

7 minute read

I’ve been extolling the virtues of backup a lot recently, which has led to a few interesting conversations (and a lot of people rolling their eyes and going ...

Rsnapshot Puppet module

2 minute read

People want to be seen as being clever, so the result is people wind up working in a cave. Brian Fitzpatrick, Ben Collins-Sussman http://www.youtube.com/wat...

Managing sudoers with Puppet

3 minute read

Managing the sudoers file of the puppetmaster with Puppet is like playing with fire while drenched in petrol. If you must do it be really *really* careful!

Testing Octopress and Heroku

2 minute read

I have vowed to move away from Wordpress. My blog there, ryanbrooks.wordpress.com, isn’t exactly the epitome of regular activity (my last post was back in Ju...

Setting up OS X Mountain Lion

1 minute read

Last month I installed a second internal drive on my Macbook Pro to increase the capacity to nearly a terabyte. Foolishly forgetting that every time I reinst...

Back to Top ↑

2012

Using JIRA to manage a skills registry

1 minute read

Maybe my search-foo isn’t what it used to be, but it seems that there’s no standard method for recording employee’s skills and training requirements against ...

Blogging about software using Textmate

1 minute read

I’m trying to force myself to be a better contributor to the software development community, and part of that is writing up my rough notes each time I solve ...

Back to Top ↑

2011

pfSense and VirtualBox

less than 1 minute read

Thinking of installing pfSense on VirtualBox to test out the functionality. Great idea!

Back to Top ↑

2010

Checking an annotated field is an enum

1 minute read

Whilst building an annotation processor for a Seam/Wicket project I’m working on I needed to do a specific action if the annotated field was an enum. Thanks ...

Mythtv Remote X10

less than 1 minute read

I have an ATI Remote Wonder remote, which I’ve been quite happy with for the last couple of years. Not that happy though (or maybe I just like tinkering), be...

The beginning, and the end of blogging

less than 1 minute read

OK, so I almost started using this blog again. I came pretty close. But then I tried to use the (granted very free) Wordpress.com site to blog about software...

Back to Top ↑