RSSAmplifier

Blog

dan.carley.co

Recent content on dan.carley.co

dan.carley.coRSS feed ↗31 posts

Latest posts

Advent of CLI coding agents

Background 
 I have been quite the sceptic about the adoption of AI for the past three or so years. 
 Initially I was grumpy about it being used to turn concise sentences and paragraphs into long blathering word soups with the occasional hallucination. Then this spilled out to the wider web, destroying my ability to reliably use a search engine, because every search index has been flooded…

Replacing a Heating Controller

Our hot water system stopped hot watering on Christmas Eve. What follows is how I fixed it. For context this is a central heating system in a UK house with a conventional (not combi) boiler and unvented hot water tank. 
 The usual warnings apply. Electricity is dangerous - make sure you’ve isolated the supply and that the contacts are really dead. Gas is even more dangerous - do not open…

King Alfred's Way: Reflections

Route 
 The route was brilliant. Scenic, fun, and enough of a challenge. The frequent landmarks were a real morale boost and I learnt about a lot of new places, even in areas that I thought I already knew. 
 None of it was particularly overgrown with vegetation which was a surprise for this time of year and the amount of sun and rain that we’d had. In fact it was way better than most…

King Alfred's Way: Day 4

Haslemere to Reading 
 Last day! It had suddenly gone very quickly and I didn’t want it to end. South Downs Way meant it was going to be a pretty full on day of climbing though. Starting with making up some of the elevation I’d lost by going into Haslemere. 
 
 
 I picked the official route back up at Bramshott Common, which meant that I avoided the path alongside the…

King Alfred's Way: Day 3

Reading to Haslemere 
 I left the hotel in the light rain, which caught me by surprise because the forecast had been good so far. The combination of the weather and slightly neglected cycle infrastructure on the way out of Reading didn’t inspire me as much as coming into Reading. 
 

 
 
 Thankfully the weather and route had improved by the time I reached the edge of…

King Alfred's Way: Day 2

Malborough to Reading 
 I was originally going to get dropped back in Avebury and continue from there, but family logistics and some trepidation from the previous day meant that I skipped the first climb of the day to Barbury Castle. Instead I took the pleasant NCN route 482 along an old railway line from Malborough to Ogbourne St George, which was a nice gentle start that didn’t save me…

King Alfred's Way: Day 1

Preface 
 King Alfred’s Way is a 220 mile circular off-road route that takes in the iconic sights of Stonehenge, Avebury stone circle, the Ridgeway, and South Downs Way. 
 I was originally going to ride and camp the route with friends earlier in the year but plans got derailed by life. As this year’s miserable summer drew to a close, I started toying with the idea of doing it…

Assembling an Iris keyboard

I went looking for a new keyboard for a few reasons. Firstly my previous keyboard was playing up and I couldn’t fix it myself. I’ve found that small adjustments to my working setup have been good at combating RSI and it was time for a change. I also fancied a new electronics project and there was something alluring about mechanical keyboards. 
 Criteria 
 I had a reasonable…

BT Infinity and AWS CloudFront IPv6 MTU

Late last year I converted this blog from Octopress to Hugo and migrated it
from a Linode VM to AWS S3, in an effort to spend less of my free time
maintaining dependencies and virtual machines. It also reduced the runtime
costs from $5/mo to $0.2/mo. 
 I wanted to keep IPv6 support and enable TLS, so I put it behind AWS
CloudFront. When testing the new site from my home…

Boldport Cordwood Puzzle Too

This post is about building the Boldport Cordwood Puzzle Too which
is described as: 
 
 The puzzle is to correctly assemble the circuit with the components at
hand. Once completed, all LEDs light up when power is applied. When
connected to a controller board each LED can be individually controlled. 
 
 It is a sequel to the Cordwood Puzzle 2nd Edition which I’d…

Boldport Cuttle (just less than perfect)

This post is about building the Boldport Cuttle which is described as: 
 
 The Cuttle is a bare-bones Arduino-compatible soldering kit. It’s based on
the concept of shrimping.it, and was first designed as commissioned work
for Embecosm, who made it open source hardware. This design, as always, is
also open source hardware; it’s available on our GitHub repository.…

Mocking APIs in Go Tests

There are two patterns that I’ve come to really appreciate when testing Go
code that uses libraries to access third-party APIs. They aren’t necessarily
specific to Go. I came to Go from Ruby and Python, so this might actually be
an “ode to static typing” in disguise. 
 Examples 
 I’m going to use the Ginkgo / Gomega testing framework in my…

When did submodule include commit X

Cloud Foundry uses git submodules in cloudfoundry/cf-release to
track dependencies from other repositories such as
 cloudfoundry/gorouter . 
 It’s quite straightforward to find out what version of gorouter is included
in a given version of cf-release : 
 ➜ cf-release git: ( master ) ✗ git ls-tree v230 -- src/github.com/cloudfoundry/gorouter
 160000 commit…

Lead Developer and Operability conferences 2015

I recently attended two conferences; Lead Developer 
and Operability . The organisers of both have done
an excellent job of publishing good quality videos of the talks. Here is a
list of talks that I really enjoyed, benefited from, and would recommend
other people to watch. I won’t attempt to summarise them for fear of missing
something out and there are better summaries…

Problems with online services

I recently had problems with the online services of two well known
companies; Nationwide and Eurostar . That in itself is not unusual or
noteworthy. But there are some things in common between the two experiences. 
 tl;dr 
 Please consider the following when you’re building online services. 
 Error messages 
 Try to make error messages useful to the user. Tell them…

Code Club five week retrospective

A couple of years ago at Velocity Europe conference I saw a keynote
presentation by John Wards called “An introduction to Code Club” . The
keynotes at Velocity don’t always interest me; they tend to be too short to
convey enough detail or are all-out sales pitches. However this one really
caught my attention. I suggest you go watch it. 
 Background 
 My…

In memory of Matt Carpenter

It was February four years ago that a friend and ex-colleague (in that
order) of mine committed suicide. I could say plenty about him, but for the
purpose of this blog I’ll focus on just one aspect, which is work. 
 
 I met Matt in college where we in the same A-level computing class. We both
had an interest in Linux, networks, security, and practically…

Other people's firewalls

The more appropriate title would be “ingress and egress firewalls that
affect your connectivity but which you have no visibility and limited
control of” but it was too long. I’ve experienced this tale many times with
just one minor variation to the beginning of the plot and the rest of the
details remaining the same. It’s either a: 
 
 corporate…

Working late, responsibly

We’ve gone through a period of time in our team telling each other not to
work outside of office hours. The situation was prompted by a number of
things; occasionally people staying in the office later than normal, but
more frequently people penning commits, pull requests, and emails whilst at
home in the evening. 
 From the outside looking in you’d be forgiven for…

ClamAV broken pipe

A while ago we upgraded ClamAV at $JOB from an fpm package of
dubious-quality to an upstream Ubuntu package. In doing so we found that one
of our applications, which submits data to clamd over a socket, had
stopped working and was logging Broken pipe errors. 
 The following text is a paraphrase of a commit message to one of our
internal repositories. It seems that this problem…

tmux scrollback with iTerm2

tmux scrollback 
 If you regularly use tmux then you might have a line like this in ~/.tmux.conf : 
 set -g terminal-overrides 'xterm*:smcup@:rmcup@'
 The effect of this is that when the output of the inner terminal exceeds the terminal’s height it is allowed to spill over into the outer terminal’s scrollback history. So long as you don’t change windows within the…

Metric retention just add one

Something occurred to me a while back when I was setting up some monitoring. Maybe it’s obvious to everyone else, but it’s not something that I’ve seen discussed or written before: 
 
 Retain your metrics for $unit_of_time + 1 
 
 Where retention is either the complete data or a lower resolution thereof. Unit of time may be a day, week, month, year, or even ten…

Unautomating with Puppet

Github’s recent outage and nicely detailed post-mortem has generated a bit of chatter about whether “too much automation” is a thing and the dangers thereof: 
 
 Xaprb: Is automated failover the root of all evil? 
 Scale-Out: Automated Database Failover Is Weird but not Evil 
 Kitchen Soap: A Mature Role for Automation: Part I 
 
 This a topic that most…

Bootstrapping EC2 with Puppet

In a previous article I described the process of creating CentOS AMIs in EC2. I omitted the detail of how this single generic system image is turned around into real functioning nodes. This consists of a few things. 
 A standard set of routines which you’ll find in most AMIs: 
 
 Create a non-privileged ec2-user 
 Copy an SSH pubkey from the metadata API to the ec2-user…

Now available in IPv6 flavour

A friend recently reminded me that IPv6 is still a thing. Contrary to what my ISP might have me know. That got me thinking, I must check that stuff out.. 
 This site is hosted at Linode. Proudly hosted, I might add. I’ve been using them for a couple of years now and only have good things to say about them. Hint: you can sign yourself up with my referral code . 
 Linode started…

Yum GPG keys for Jenkins

I use/mirror a number of third-party Yum repositories. The typical pattern for these is to import the vendor’s public signing key using rpm --import and then setup a new entry /etc/yum.repos.d entry. Some vendors have -release packages that handle both steps. The trouble is, this creates a bit of a chicken/egg problem and doesn’t lend itself so well to automation. 
 Instead I tend…

CentOS AMIs from Kickstart

I’ve been doing some work on AWS EC2 again recently. Since there aren’t any “official” CentOS AMIs and I’m dubious about using some of the public images, we had to build our own. Previously we have rolled these using instructions like this and this . They worked okay but it sure was long-winded process. So much so, that I struggled to pick it up where I last left off.…

Chef providers on Linux Mint

I was attempting to install a package on Linux Mint using chef-solo when I was greeted by this rather strange error: 
 [ Tue , 06 Mar 2012 17 : 53 : 26 + 0000 ] INFO : Processing package [ openssh - client ] action install (ssh :: client line 1 )
 [ Tue , 06 Mar 2012 17 : 53 : 26 + 0000 ] ERROR : package [ openssh - client ] (ssh :: client line 1 ) has had an error
 [ Tue , 06 Mar 2012…

sudo rbenv me a sandwich

In the name of practising-what-you-preach, I like to be in the habit of configuring my Linux workstations with Puppet in the same way that I do for servers. Though I confess I have fallen out of habit recently and accumulated a bunch of tools that haven’t made it back to the manifests. Having just trashed my laptop, in an unrelated incident, I fancied the opportunity to check out chef-solo…

Rbenv and Bundler

I have been an occasional user of RVM to date. I like the problems that it solves; the ability to switch between different versions of Ruby and isolate per-project installs of Gems. But I just can’t gel with the way that it solves them. Aside from arguments about curl | sh installs and shell overrides, it just feels like there is too much magic involved. I’m not a fan of magic.

Hello, blog

Sometimes 140 characters just aren’t enough. Sometimes I write internal documentation that might interest other people. Frequently I learn something new; some of which might be of help to other people. 
 So herein lies a new blog aided by the fabulous Octopress