Deprecating software is hard; why the move to ROS 2 is causing heated debate

Software never stays the same Inevitably, all software is destined to die. Whether that is through becoming end of life (EOL), obsolete, or unused, or through the code being rewritten and replaced, software is not static and nor should it be. Bug fixes, security updates, and new functionality ensure that code churn, or the number of lines being modified, keeps developers busy and projects healthy. But, what happens when software completely changes?

Monitoring a Greenhouse with Ubuntu

There are a wide range of solutions on the market today to help the avid gardener with their plants, some are low tech battery-less meters designed to give you a simple view of how your plant is doing, others are much more high-tech (and expensive). Two of the most important variables to monitor in a greenhouse are temperature and humidity, too hot and plants start to scorch and wilt, too cold and they can be damaged, and humidity is important for a whole host of plants you may find in a greenhouse.

Using Snaps on Raspbian

Who isn’t a fan of the Raspberry Pi? The little, cost-effective single-board computer that has so many uses, in fact at home I have 4 doing various things from monitoring temperature and humidity in my greenhouse to serving up a dashboard interface for my home automation solution, both projects which I will write more about in future posts. But what makes the Raspberry Pi even better, well Snaps of course.

Human Computer Interaction, to the max

Interfacing with computers is inevitable in today’s developed societies but what most people think of when asked about computer interaction is probably bashing the keyboard, one finger at a time, on a laptop or desktop or, for the more tech-savvy they may talk about phones and tablets. Less people talk about cars, TVs, airport ticketing machines, wearables, digital assistants like Alexa or Siri, even fridges, washing machines, and billboards. A small but increasingly vocal subset talk about a new generation of computing that will revolutionise the definition of computers and even humanity.

Spotify as a Snap, putting the developer in control

Just before Christmas Canonical announced that the world’s most popular music streaming service, Spotify, is now available as a Snap, but what makes this significant I hear you ask? Well Spotify and many other developers are choosing a new way of delivering software to Linux users and Snaps are at the forefront. One of the important aspects of Snaps is not so much about the technology, but more about where the software comes from.

Smart Healthcare Trends: Part 4, Implantable Medical Devices (IMD) and Wearables

For Part 1, 2, and 3 in this series where I look at trends in Smart Healthcare please click here, here and here. Implantable Medical Devices (IMD) and Wearables There are many challenges to designing devices that can operate in the somewhat harsh environment of the body. Using the Medical Implant Communication Service (MICS), low powered antennas, and programmable and configurable components which allow for changes after the implant has been made is the way to go but this of course comes with risks.

Smart Healthcare Trends: Part 3, Preventative Healthcare

For Part 1 and 2 in this series where I look at trends in Smart Healthcare please click here and here. Preventative Healthcare There is a growing trend towards preventative measures especially as technology advances enable a new generation of smart healthcare. The vision portrayed by Rochester Universities “Smart Medical Home” in 2004 is one that controls everything from the “nutritious meals” to the “high-tech first aid kits that can diagnose and cure even the most life-threatening injuries and ailments”.

Smart Healthcare Trends: Part 2, Augmented Reality

For Part 1 in this series where I look at trends in Smart Healthcare please click here Augmented Reality Augmented Reality (AR) is the field of study concerned with meshing the real world with computer generated data and images to provide an enhanced view of reality. AR has been used in rehabilitation to encourage movement in patients suffering with akinesia, which is a disorder that is characterised as a loss or absence of voluntary movement.

Smart Healthcare Trends: Part 1, Automation

Healthcare is going through a revolution at the moment. An increasingly aging population means that the strain on traditional healthcare resources is at boiling point but there is hope. Technological advances mean that healthcare can often be delivered in the home, promoting a more decentralised model and more importantly something that can scale. The UN Department of Economic and Social Affairs Population Division predicts that 25% of the UK population will be aged over 65 by 2035 compared to less than 18% today and this trend isn’t reversing any time soon.

Why software updates matter, especially in the world of IoT

Why update? We all know what software updates are, we see them all the time on our phones, tablets, desktops and servers. They appear as pop-ups, in the message of the day (motd), and even have dedicated applications extolling their necessity, and all for good reason. Having out of date software often means, at best a degraded user experience, at worst a security hole exploitable by hackers. When you consider that analysts such as Gartner predict that the IoT will connect over 20 billion devices by 2020 the necessity for a clean and crisp update mechanism becomes paramount to any device.

Ubuntu Core 16, a real landmark for IoT Software

Internet of Things (IoT) devices have come a long way over the last couple of decades. In 1996 I remember being in complete awe at turning on a light from my Pentium II-based desktop computer using X10 and being equally frustrated when I switched on the microwave and the same light turned off. In equal parts it marveled and disappointed and to top it off it wasn’t particularly cheap. Fast-forward a couple of decades and IoT is the new buzz-word, previously know as Ubiquitous Computing, Pervasive Computing, and a whole host of other buzz words but in short what it really means is our ‘things’, our devices, our environments, are all getting smarter.

Fixing Git on MacOS X Sierra

If, like me you have upgraded to the Mac OS X Sierra beta you may find that Git is broken from the command line. The error I was seeing was: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun It turns out that the developer tools are borked on upgrade so need reinstalling. To do that you need to run: xcode-select --install After a short download and installation everything should be back to normal.

Cheddar Half Marathon and Broadlands 10 Miler

A bit belated but here is a short report of two events I ran over the last month or so: the Keynsham 10 Miler and the Cheddar Gorge Half Marathon. Keynsham 10 Miler (10 miles, 16.1 km) This event was held on Sunday 22nd May in, you guessed it, Keynsham. The weather was fine although it had been raining the previous days which mean the largely undulating and off-road run was, muddy.

snap try: The quick way to package snaps

This weeks snippet is all to do with improving the snap developer experience. Since the release of snapd 2.0.8 we have added one of the most useful tools for snap developers: snap try What this does is effectively mounts any folder containing an unpackaged snap at /snap/snapname as a writeable folder allowing quick iteration during the packaging process. No longer do you have to create a read-only squashfs snap and install it to try out your latest changes and this speeds up the workflow tremendously.

Are snaps really cross distro?

Yesterday we announced the new home for everything snaps and Snapcraft,, and at the same time made available the cross-distribution work that really does means snaps can run on virtually any Linux distribution. Today we have enabled support for Debian, Arch, Gentoo, Fedora, and of course Ubuntu and all its flavours but enabling more including OpenSUSE, CentOS, Elementary, Mint, OpenWrt and others is in the works. The announcements was met with a mostly positive response which, given that Linux packaging has been an issue for so many people and for so long, is hardly surprising.

Contributing to the snapd project

There is a lot of buzz around snaps, the new packaging format created by Canonical to enable secure, transactional, and robust application updates, and rightly so. This new method of distributing applications is revolutionizing not only software on IoT devices, but on the desktop, server, and beyond. The software that actually runs the snap applications is called snapd. Hosted on GitHub, snapd uses the Go language and is actively developed by a core set of developers, but, like most projects at Canonical, we actively encourage as much community participation as possible.

Snapping an Electron-based Application: Simplenote

Snapcraft is described as a “delightful packaging tool”, enabling a developer to package their app from a single tree by aggregating the pieces from multiple places if necessary. It supports multiple build technologies and produces a .snap package with all its dependencies for Ubuntu Core and now the Ubuntu Classic Desktop (using snapd). It is the future of packaging for Linux-based systems. I encourage the reader to read the documentation on GitHub to get a flavour of what Snapcraft is and to learn more about the key concepts, setting up your system to produce snaps, and a nice first snap walkthrough example.

The Pensford 10k

Another week, another race, this time the Pensford 10k event, but lets take a little step back first. At the beginning of my ‘racing’ (very loose term for official events) calendar selection I had the aim of adding at least one, preferably two events per month to ensure that the pressure to line up against others kept me honest and provided the motivation to get my backside off the couch and training.

Running the Cheddar Gorge 10k

This week I ran the 2016 inaugural Cheddar Gorge Challenge event, the 10k race. Billed as a ‘lumpy course’ these series of runs offer “more climbing just getting to the start than you will in most other events”. With the affectionately named Hell Steps towards the end this is a tough run but more importantly, it is a fun event. Cheddar is beautiful, steeped in history and picturesque from the bottom of the gorge let alone from running up and down it so the prospect of completing 3 races (10k, half marathon, and marathon) in and around the area was too enticing to pass up.

A Change of Scenery

A few weeks I joined Canonical and for the eagle-eyed you’d realise this is actually for the second time. Previously at Canonical I spent my days with the Mobile Team, realising the goal of a good Linux on ARM experience which eventually culminated in the foundation of Linaro. This time I am equally excited about another formative stage of technology, that of IoT and the possibilities of interoperable and extensible devices running a standard Linux operating system.

Running in Nepal

Nepal is such a wonderful place. Steeped in history and culture with some of the most breath-taking sights to be seen, Nepal is the home to Buddhism, the Himalayas, and of course the mighty Mt Everest. Despite all this wealth, the country and the people themselves face a lot of challenges. Economically Nepal is considered a third-world country with many people in utter poverty. To compound this hardship, Nepal has also experienced terrible earthquakes that have left many dead and even more without basic needs such as accommodation, access to food and clean water, and education.


I have a confession to make. While I have publicly supported the parkrun initiative for some time and I wholeheartedly believe it is a great idea, I have never actually ran one myself. There have been many excuses from family conflicts at the weekends to blaming the weather but this week I thought I would actually ignore all of this and partake in the spectacle. I chose the closest event, which for me was Southwick Country Park in Trowbridge and arrived before the customary 9am start time.

Fujitsu SnapScan 1300i with Ubuntu

I’ve been using the Fujitsu ScanSnap 1300i on Mac OS X for some time now in the pursuit of a paperless life but now that I am using Ubuntu more and more it was apparent that I was going to have to get this little scanner working on Linux. Searching the internet threw up a few interesting articles but nothing worked 100%. In the end the steps I used under Ubuntu 15.

Running Ubuntu Snappy Core Virtualised on Mac OSX

Although most of the documentation out there today shows you how to run Ubuntu Snappy Core on an Ubuntu desktop, it is also pretty simple to do this on Mac OSX. In short: Download the Ubuntu Snappy Core image from: You will need the amd64 version of Snappy. Unarchive the file: unxz ubuntu-15.04-snappy-amd64-generic.img.xz Then convert the image into something that VirtualBox can run: qemu-img convert -f raw -O vmdk ubuntu-15.

Installing Ubuntu Snappy Core on a Rasberry Pi 2 using a Mac

This is a short guide to installing Ubuntu Snappy Core on a Rasberry Pi 2 using a Mac. It is pretty straight-forward but there are a couple of areas where you can get caught out. First, download the Ubuntu Snappy image from: As of writing the latest release was: ubuntu-15.04-snappy-armhf-rpi2.img.xz Insert your SD card if you haven’t done so already and use diskutil to find it.

Life with Apple's iWatch

I confess, I’m a bit of a gadget hound. I own four different smart watches all with different OSs: Pebble with PebbleOS Samsung Gear with Tizen Motorola 360 with Android Wear and now Apple iWatch with WatchOS When I first got the Pebble (Kickstarter model) I was instantly impressed. It was a device that lasted days, gave me notifications at a glance, and allowed me keep my phone in my pocket unless it was really needed.


As a scholar of software engineering with a particular interest in the field of ubiquitous computing and artificial intelligence, the recent series by AMC, “Humans” really did peak my interest. Is it something based on sensationalism or alternatively something that could be considered grounded in reality? Well, I believe that it is a drama that reflects more on the latter than the former. I really like the concept so far and it raises questions that only academia have explored in detail before movie studios love; concepts such as artificial understanding, consciousness, love, and the projection of human traits upon non-human subjects (anthropomorphism).

Creating bootable USB images on the Mac

Creating a bootable image for installing a Linux OS is pretty straight-forward but when you are doing this on the Mac there is a specific way it needs to be done. I alway use USB drives for this purpose so what follows are the steps needed to create a bootable USB stick from a Linux .iso image. I presume you have already downloaded your favourate Linux distribution in .iso format, below I’m using Debian Jessie.

Trusted Execution Environments in Android

Continuing on from my post about TrustZone it seems that there is a lot of interest in hardware-backed security for Android and what you can do with it. One of the most interesting things that a hardware-isolated area can do for devices, whether that be a dedicated co-processor or technology such as TrustZone, is to provide a trusted enviroment dedicated to protecting your most valuable assets and the operations that are performed on them.

What are you passionate about?

I have recently been reading the book entitled Talk Like TED Carmine Gallo which promises to bestow the virtues of great public speaking upon all who read it. Early on in the book there is a rather salient point that got me thinking, a point that starts with a simple question, “What are you passionate about”. Now there are quite a few things I am passionate about but in the context of Software Engineering, my chosen career path, it is something that underpins all the great projects that over time I have really enjoyed working on.

TrustZone For Android Mobile Security

Recently I was asked to provide a quick, high-level introduction to TrustZone and how it could potentially improve the security on Android platforms. Any response to this is tricky: TrustZone is just a mechanism built in to a platform that if unused can do very little for device security but when utilised to its fullest, can create a totally seperate environment dedicated to protecting your most important secrets. But first a bit of background.

Getting back into blogging

Its been a while, in fact it has been around a year since I updated this site (to be fair I did write a few posts on another blog during that period … excuses, excuses) which I attribute to a increasingly busy schedule but more to a lack of enthusiasm. So, in an attempt to get back into this blogging lark I thought it would be a good opportunity to redesign the site with Hugo, a static, but more importantly Markdown-based web engine, and put up a few articles on something dear to my heart, Software Engineering.