Incrementally linting a codebase with branch changes
Update 26th February 2023: replaced xargs approach because it interfered with Pry local debugging.
Update 26th February 2023: replaced xargs approach because it interfered with Pry local debugging.
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 ...
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...
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...
Docker is great for building portable applications, modelling complex environments locally, and helping us bridge the gap between development and production,...
Edit (2019-04-23): Updated to replace compose_opacity with DstIn to preserve source image transparency. Thanks Chen Han!
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...
Building custom web views within LabKey is pretty straightforward, but if you find yourself needing to constrain the contents of your module horizontally you...
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...
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...
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...
On Sunday the 6th of July we ran the second Oxford Code Retreat, so here’s a few notes I’ve made about the event.
A colleague was wrangling with JavaScript testing, but with an unusual constraint: the code runs on the Rhino JS engine. After a bit of head-banging, I learn...
I really do get on well with docpad. Adding comments to the homepage blog entry was a little tricky though, so here’s the workaround I applied.
The new(ish) support for respond in Grails 2.3 is great, and saves us the hassle of specifying different render/response calls depending on the content type....
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 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...
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...
A project I’m involved with is going through the process of being open-sourced and released on GitHub. This is a great development, but of course we have had...
We want to be able to measure code quality for a Grails/Javascript project I’ve just joined. I have had good experiences with Sonar before, so set out to get...
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...
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...
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...
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 ...
To release the Rsnapshot Puppet module I needed to extract the module directory from our entire Puppet configuration Git repository (we know it’s wrong, but ...
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 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!
After refactoring a small project to manage subversion auth information into multiple Maven modules I started running into what I assume is a fairly common p...
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 ...
One of our applications written in Perl parses large text files to collect information about it. We’ve ended up applying it (over time) to various different ...
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 ...
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...
Docker is great for building portable applications, modelling complex environments locally, and helping us bridge the gap between development and production,...
Edit (2019-04-23): Updated to replace compose_opacity with DstIn to preserve source image transparency. Thanks Chen Han!
Building custom web views within LabKey is pretty straightforward, but if you find yourself needing to constrain the contents of your module horizontally you...
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...
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...
A colleague was wrangling with JavaScript testing, but with an unusual constraint: the code runs on the Rhino JS engine. After a bit of head-banging, I learn...
I really do get on well with docpad. Adding comments to the homepage blog entry was a little tricky though, so here’s the workaround I applied.
The new(ish) support for respond in Grails 2.3 is great, and saves us the hassle of specifying different render/response calls depending on the content type....
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...
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...
A project I’m involved with is going through the process of being open-sourced and released on GitHub. This is a great development, but of course we have had...
We want to be able to measure code quality for a Grails/Javascript project I’ve just joined. I have had good experiences with Sonar before, so set out to get...
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...
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...
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 ...
To release the Rsnapshot Puppet module I needed to extract the module directory from our entire Puppet configuration Git repository (we know it’s wrong, but ...
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 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!
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...
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 ...
One of our applications written in Perl parses large text files to collect information about it. We’ve ended up applying it (over time) to various different ...
For anyone with a basic knowledge of the Unix terminal, here’s a quick guide to getting the Daily Show with John Stewart and The Colbert Report onto your com...
I really do like MythTV, mostly because I like fiddling with things for hours to make them ‘just so’. Since 0.23 I have even started thinking it’s almost str...
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 ...
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...
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...
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...
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 ...
Moving into a stone-built cottage with single glazing and bottled gas central heating has been a (good) learning experience. Fortunately we have a combi-boil...
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...
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...
After refactoring a small project to manage subversion auth information into multiple Maven modules I started running into what I assume is a fairly common p...
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 ...
Thinking of installing pfSense on VirtualBox to test out the functionality. Great idea!
So I almost left Wordpress the other day, when I found the code tags didn’t syntax hightlight. Since then I’ve found this page: http://en.support.wordpress.c...
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...
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.
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...
On Sunday the 6th of July we ran the second Oxford Code Retreat, so here’s a few notes I’ve made about the event.
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...
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...
Rear hub on the FSA Non-Series off-road wheelset
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...
A quiet, challenging, mostly off-road route from Liverpool to Scarborough
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...
I’ve been commuting to the John Radcliffe Hospital in Oxford for the last week or so, and the hugely variable quality of cyclists, motorists and pedestrians ...
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...
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...
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...
Image courtesy of Quintano Media / Flickr
You hear it everywhere: ‘if you want something doing well, do it yourself’. Maybe the primary source is beleaguered managers in stagnant organisations where ...
Sometimes it’s useful to run multiple Docker contexts/daemons, e.g. if you’re running Docker Desktop and Lima, or local Kubernetes clusters.
Update 26th February 2023: replaced xargs approach because it interfered with Pry local debugging.
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...