Capturing UK temperature data in InfluxDB.
For the last few years I have been capturing indoor temperature data from the Honeywell Evohome system that controls our heating. I’ve used it to create various dashboards which have taught me a great deal about how quickly different areas of the house heat up and cool down. Here’s an example of a dashboard widget which shows the indoor temperature for each of our heating zones:
Migrating YouTube Music from GSuite to GMail
I’m a long time user of YouTube Music. I love that it’s able to reach in to the incredible library of electronic music that has been uploaded to YouTube over the past few decades. I also love that it allows users to upload their own music and have been starting to curate an uploaded library songs that aren’t available on streaming platforms. This feature has allowed me to slowly but surely upload old CDs which are precious to me (band demos, white labels etc). The beauty of it all is that I then have my entire library available to me wherever I am, even in the car via Android Auto. I love this!
AWS: Using a private ECR pull-through cache with ECS
I recently posted about Connecting to a private ECR repository using VPC Endpoints, which is a really useful approach when you want to keep your traffic to ECR within your VPC and not have it go out over the public internet.
AWS: Connecting to a private ECR repository using VPC Endpoints
Here’s the scenario: You’ve created a private ECR repository, you’ve uploaded an image to it and now you want to run that image as an ECS task. But… you don’t want ECS going out over the public internet to the ECR API. Instead you want to keep the traffic inside your VPC.
Automatically configuring Git based on remote repository URL
As an independent software engineer I often find myself working with clients who use different Git providers or who might require me to have a client-specific Git configuration. For a long time this resulted in me having a complex and difficult to maintain Git configuration, and some really hacky shell aliases which did some on the fly Git reconfiguration depending on which repository I was in… Not nice!
Getting hold of Bulb energy usage data (part 2).
About this time last year I posted an entry where I detailed my ideas for using the Samsung SmartThings ecosystem to get hold of my home’s Gas and Electrical usage data. Since then I have developed a simple SmartThings App which achieves this, so thought I’d share the details.
Automating Ubuntu 21.04 Server image builds with Packer and Virtualbox
I recently decided to write some tests for one of my Ansible roles that I’ve been making a lot of use of. The plan was to use Ansible Molecule to apply the role and drive the tests. Reading the Molecule docs this seems to be a fairly straight forward task for the majority of cases, essentially you spin up a Docker container, provision your role and run your tests. Unfortunately in this case the role I wanted to test was responsible for managing Docker containers, so there was no easy way to run the role itself within a Docker container without causing some sort of Docker-in-Docker inception!
Getting hold of Bulb energy usage data (part 1).
Over the last year or so I have been slowly building up a collection of home energy metrics. Things like boiler runtime stats, heating zone temperature and demand etc, they have been incredibly useful in helping me understand the various characteristics (heat up time, temperature loss rate etc) of the different rooms in the house.
How to allow ICMP ping on a Unifi Security Gateway WAN Interface
I recently signed up with thinkbroadband for free Broadband Quality Meter (BQM) service. Once configured they send ICMP ping requests to my WAN IP address and collect the data to provide me with a picture of my broadband availability/ latency etc. They do all this for free and surface the data in a useful graph, which can be used to interpret various behaviours of my broadband connection, including the reliability of my provider!
Interacting with a reCAPTCHA in Selenium
This one was a bit of a headscratcher for me so I thought I’d share it here in case it helps anyone else.
Conditionally collecting objects in Groovy
Groovy’s Collections collect() method is great for iterating a collection and generating a new collection containing transformed results. For example:
Running Logitech Media Server in Docker
I recently signed up for Spotify’s 30 day free trial, having such convenient access to so much music was great, but when it came to an end and I was faced with the prospect of paying for my first month I was reminded just how little Spotify actually pays musicians per play. Despite being a software engineer in a very digital age I have always preferred to buy music on a physical artefact on Vinyl or CD. I prefer to have the artefact itself as I find it gives me a different listening experience when compared to digital media, I tend to give the music more time and attention if I sit down and listen to the CD or record vs just bunging some ear phones in and playing some tunes on my phone. Where possible I also prefer to buy from the artist or their label direct to make sure that they are adequately compensated for their work so that they can earn a living and can carry on making the music that I love. Finally having the physical CD also gives me the ability to control how I store the music in my digital library e.g. what software and format I use to rip the physical media.
A song a day - Day 4 - Squarepusher - Beep Street
A couple of friends have nominated me on FaceBook to post a song every day for seven days, and nominate someone each day to do the same. This is Day 4.
A song a day - Day 5 - Elbow - The Stops
A couple of friends have nominated me on FaceBook to post a song every day for seven days, and nominate someone each day to do the same. This is Day 4.
A song a day - Day 3 - Lewis Parker - Communications (Feat. Jehst)
A couple of friends have nominated me on FaceBook to post a song every day for seven days, and nominate someone each day to do the same. This is Day 3.
A song a day - Day 2 - Cat Stevens - Where do the children play
A couple of friends have nominated me on FaceBook to post a song every day for seven days, and nominate someone each day to do the same. This is Day 2.
A song a day - Day 1 - Nuyorican Soul - I am the black gold of the sun (4 Hero Remix)
Hello!
vagrant-roller now updated for Roller 5
Last year I put together a little GitHub project called vagrant-roller which provisioned an Apache Roller VM with very little effort. The initial version of the project provisioned a Roller v4 VM but there were a couple of issues getting the latest version of Roller (v5) to work.
Alpine 3552, 3353, 3354 car amplifier manuals
Waaaay back in 2005 I posted on a car audio forum asking if anyone had the manual for an Alpine 3553 amplifier. I had the amp but no manual and couldn’t figure out the power ratings and whether it was stable at 2 ohms. Unfortunately Alpine themselves didn’t seem to have it in their manual database.
Crossing the line in to the dark side… or more aptly put “I’ve only gone and bought myself a shiny new Cyclo-Cross bike!”
For the last 4-5 years my trusty downhill/freeride/dirt-jump/trail centre/
Looking for a devops engineer/ release manager to join us on the BBC digital archive project
We're looking for the new member to join the devops team of the BBC's digital archive project, the role is a split of soft and technical skills and is essentially a "devops engineer/ release manager" position. Experience has taught me that devops is a notoriously difficult thing to recruit for so I'm widening my search by posting here as well as using all the usual routes.
Introducing vagrant-roller
I have been working on a little project recently to enable me to spin up a fully configured and installed Apache roller system in a matter of minutes. The project has taken me a couple of evenings so far but is now in a position where it's worth sharing.
Our first family Christmas
Work has been crazy busy recently, so it seemed like a good time to re-charge and take a break. I agreed with my client that I'd take 2 weeks off over Christmas and was looking forward to this break for a number of reasons. It was our first Christmas together as a family, we've finally bought a new Car which is big enough for the four of us and all our assorted baby paraphernalia to allow us to go away for more than a single day and I was looking forward to relaxing with Tash and the babies. We had also planned to make quite a few changes to the babies routine in order to try and get them sleeping more solidly through the night.
I’m growing a Mo for Movember
Cancer sucks! So, in an effort to make it suck for fewer people in the future I'm joining the 'BBC men of fabric' team in raising money for Prostate Cancer UK and the Institute of Cancer Research.
Welcome Finlay and Luca
I have already posted this on FaceBook and Twitter and told family and friends, nonetheless I want to mark the occasion here on my blog:
Installing Puppet in Ubuntu (12.04) from Puppet Labs’ APT repos
The following provides instructions on how to install a particular version of Puppet from Puppet Labs' own APT repos, this is particularly useful if you run different O/S versions across your puppet nodes or simply don't want to use the versions bundled with your particular Ubuntu distro.
Introducing Pico
Back when I was a student I used to run a home server to provide various services for my housemates and I, the ‘server’ was an old desktop I had spare at the time and sat in a cupboard running 24x7x365, well that was the plan anyway… Everything ran fine for 4 or 5 months before it started to behave very strangely indeed, I spent many hours diagnosing some pretty weird and often unreproducible issues and in doing so learnt that normal desktop hardware is not intended for 24x7x365 usage, particularly cheap power supplies and hard disks of which I went through several of each during this short period.
My LJC/ Graduate Developer Community Interview
Just a quick one today…
What a weekend! Steve Peat’s Steel City Downhill Race in Sheffield
Wow! Last weekend was truly a special one! A few folk from CGCC, ThisIsSheffield and notably Steve Peat himself, had been busy at work organising a downhill race in Grenoside Woods. Titled ‘Peaty’s Steel City Downhill’ the race took place on the Saturday. Tash and I drove up to Sheffield and stayed with some CGCC mates on Friday before heading over to Greno woods on Saturday.
Setting up dynamic DNS using a Thomson TG585 v7 and ZoneEdit
I use zoneedit to manage some of my DNS domains and subdomains, they’re one of the only TLD DNS services who offer a free service with dynamic dns and allow you use your own domain rather than a suffix on their TLD. In order to access certain services hosted on machines at home I have created a subdomain of my eddgrant.com domain, called home.eddgrant.com. I then used the dynamic DNS capabilities of my ADSL modem/router (a Thomson TG585 v7) to update my zoneedit account on a regular basis to ensure that home.eddgrant.com always points to my current home IP address.
Goodness me… I’m thirty!
A couple of days ago I celebrated my 30th Birthday, Tash and I took a few days off work and travelled to Langollen in North Wales. We spent a couple of days biking at the Coed Llandegla trail centre and stayed at the Riverside Mews which is in close driving distance to the trails. Llandegla has always been one of my favourite trail centres in the UK but has been greatly improved with the addition of dedicated skills and free ride areas, we spent quite a bit of time playing on these, rode the main red/ black route and also rode the new black section ‘Parallel Universe’ which was great fun. The next morning we departed Wales and drove back to London.
James Blake - Limit to your love
Heard this tune by James Blake yesterday for the first time, on Radio 1 of all places, and completely fell in love with it. It’s a cover of a track originally by Fiest.
Sun Certified Java Programmer (SCJP) 1.6 preparation techniques
I recently sat and passed the Sun Certified Java Programmer 1.6 exam (310-065). Throughout my life I have found exams unusually difficult so I wanted to share some tips which I found invaluable in case they are of help to others.
Song for the day: Four Tet - Love Cry (Joy Orbison Remix)
It always seems to be when I'm preparing software releases that certain tunes flutter in to my mind; today it's Joy Orbison's remix of Love Cry by Four Tet. The original is good but there's something about this remix which I adore. So without further interruption get your lugs around this one and wang it up nice and loud:
Four Tet - Love Cry (Joy Orbison Remix)
A song for the day: Lamb - Lusty
Checking and double checking everything for tonight's production release. All the prep looks good so far, fingers crossed everything goes smoothly.
So while I have a minute here's today's song for the day: Deep bass, beautiful vocals, beats to die for and in a weird time signature to boot.
Lamb - Lusty
Song for the day: The Cinematic Orchestra - All Things to All Men (Feat. Roots Manuva)
Today’s song for the day, and a rather calming video to accompany it: The Cinematic Orchestra - All Things to All Men (Feat. Roots Manuva)
Increasing the number of processes in Oracle XE.
I meant to post this ages ago but forgot until I came across the issue again today.
Oracle: How to determine the origin of constraints with meaningless names.
I recently inherited an application which has a few issues with referential integrity, unfortunately the existing constraints were not named when they were created so I see lots of this:
Hibernate Annotations: How to do ‘CascadeType=none’
It may be the case that I’m not looking hard enough but I can’t find this anywhere in the documentation:
London Java Community
Just a quick post to say that the London Java Community (LJC) now has its own website. Barry Cranford has set the site up to publicise the group, which is rapidly growing in size, and its activities and events. Barry has done a great job with the community so far and continues to provide great events for Java technologists.
Ignoring non-source files in Eclipse
Having recently started using Eclipse an initial gripe of mine was that there didn’t seem to be any way to tell the IDE how to identify different types of files, specifically there appeared to be no mechanism of identifying and excluding ‘non-source’ files such as derived or distributable files. This causes several annoyances one of which appears in the ‘Open Resource’ search function (CTRL + SHIFT + R); when executed this function searches the entire Workspace for files matching a given pattern, this causes any files which are duplicated during distribution to appear multiple times in search results, once in the source folder and once in the duplicated location.
Android for Java Developers event
Last night I attended the ‘Android for Java Developers’ event which was put on by the London Java Community. Reto Meier, an Android advocate from Google took us through the basics of the platform and covered topics including IDE support, some of the libraries available, how applications are assembled and signed and also provided some information on the Dalvik virtual machine.
Moving domains…
It’s time for a tidy up - I have decided to stop using the mredd.co.uk domain, which was bought for me as a birthday present many years ago. Instead I’m going to move everything over to eddgrant.com, so this blog will be moving from http://blog.mredd.co.uk to http://www.eddgrant.com/blog.
How to fix the ‘Cannot start Ecmt Manager’ error when using Java 1.6
The ECMT manager which forms part of the S60 MIDP SDK doesn’t work out of the box with Java 1.6 (6.0). In this situation the error ‘Cannot start ECMT Manager’ is displayed when attempting to open the manager.
Scrobbling We7 plays using GreaseMonkey and We7 Scrobbler
Since my Mp3 player was thieved by some scummer I listen to more and more music on We7, one of the things I’ve always missed on We7 is the ability to automatically scrobble the tunes I listen to. Well that is no longer a problem thanks to a splendid little GreaseMonkey script called ‘We7 Scrobbler’.