Here’s a handy cheat sheet for running updates on an Ubuntu server from the terminal. I always run automatic updates on my server (mainly because they aren’t business critical), I would personally rather have a fully patched system and have the odd few minutes of downtime.

Manual updates

Let’s start with the basics this all-in-one command that fetches & updates any available updates.

sudo apt-get update && sudo apt-get upgrade

To run medium disto updates and force updates that don’t install using the previous command to run, use this.

sudo apt-get dist-upgrade

For large releases, use this command to do a complete system…

As the title suggests, this is a very specific combination of tools, but I though it was worth sharing as it was difficult to find the right tools and the audience for running Ubuntu 64bit on the ARM based Rasberry Pi 4 is only going to grow larger as development improves.

The standard source client from Data has a couple of limitation, it doesn’t include a service to automate running it on reboots, it doesn’t share statistics on the active processes, network and disk usage. It works, but it’s just a bit basic.

Luckily someone much smarter that myself, namely Adrien Kohlbecker, figured out how to compile an ARM based agent yourself using Scaleway. For those that are lazy, like me, he’s also provided a release version to download directly without the need to compile first. …

I championed the effort to create a pattern library to deliver a coherent and consistent customer experience across all platforms, align the UX experience against the brand attributes, from design to production, collaborating leadership, engineering and product management.

Image for post
Image for post
Experiences created using the shared patterns & code components

We aimed to make the designers more effective, by developing a set of standards and design tools to simplify creating a user experience allow designers to focus on the creative interesting problems and deliver the brand with consistent visual execution.


I was Lead Designer for a group of six designers, a blend of Junior to Senior. My role was to be the creative foundation, to bring together all the divergent influences and weave them into a consistent and coherent design system. …

About me

I’m a hands-on designer, strategic thinker and creative leader, designing inspiring and engaging experiences and driving them to implementation. I pride myself in a deep knowledge of the customer and a passion for simple, elegant experiences.

Image for post
Image for post

I love mentoring and help to develop young talent, honing their skills through the process of developing their critical thinking, refining their skills and making sure they are empowered and creatively engaged in their work.

I love to influence from within. …

This project was one of discovery through execution, in a more usual path, rather than create something new, we were trying on find a balanced solution to an existing business problem, trying to answer the question, is it possible to integrate a separate marketplace service into the core eBay experience without impacting the core brand and consumer buying patterns.

Image for post
Image for post


The challenge we faced was that eBay had purchased a business a few years beforehand, run it as a stand-alone organization within the Classified group, but they had recently been moved into the core eBay selling group, to see if it was possible to extend and improve on the existing local selling offering. …

I have been looking for a good monitoring system for my home and extended network, I’ve previously used PRTG, which is fabulous and super easy to configure, but I’ve moved away from Windows as a platform and having to run a 2gb Windows VM just to monitor devices felt like complex over kill.

I’ve been impressed with the Telegraf, InfluxDB and Grafana combo, but have tried to setup this up in the past and always failed to get the SNMP part working, and frustrated by the complexity, I have given up multiple times.

I recently went looking to see if there was any commercial services with free low use tiers that could support my needs. …

I love being able to jump back into my home network via OpenVPN, it’s much more secure, easier to set up and is supported by quite a few high-quality clients across all platforms.

OpenVPN server isn’t supported out of the box for the USG, so this will create a server that I have found persists even when the USG is reprovisioned by the controller.

There are a lot of steps, but it does deliver a strong and stable platform, so take it slowly and lets start.

Create the keys

Install Easyrsa service

sudo bash
curl -O
sudo dpkg -i easy-rsa_2.2.2–1~bpo70+1_all.deb

Generate your…

I find it useful to give some of my devices familiar names rather than try to remember the IP addresses, but I don’t want to expose them to the outside world, previously I was using dnsmasq on the Unifi USG to serve a list of device names to specific addresses, now I’ve switched to using amending the JSON file, as it persists when the USG is reprovisioned.

First I connect using an SFTP client to the cloud key, then navigate to the /srv/unifi/data/sites/default folder.

In there was an existing config.gateway.json file, but you might need to create a fresh one.

"system": {
"static-host-mapping": {
"host-name": {
"devicename.local": {
"alias": [
"inet": [
"devicename2.local": {
"alias": [
"inet": [
"192.168.x.x" …

This guide enables you to setup a basic ad blocker on the USG, the service can be set to auto update to grab new lists. This impacts all clients, there aren’t options to remove it from specific clients. The service might also need to be reapplied if your USG gets re-provisioned or updated by the Unifi controller.

Setup ad-block list

Create a script

sudo nano /config/user-data/

Paste in this script and save the file

#The IP address below should point to the IP of your router or to
curl -s $ad_list_url | sed “s/127\.0\.0\.1/$pixelserv_ip/” > $temp_ad_fileif [ -f “$temp_ad_file” ]
sed -i -e ‘/googleadservices\.com/d’ $temp_ad_file
sed -i -e ‘/doubleclick\.net/d’ $temp_ad_file
sed -i -e ‘/awin1\.com/d’ $temp_ad_file
mv $temp_ad_file $ad_file
echo “Error building the ad list, please try again.”

eBay was facing serious issues stemming from a previous app overhaul. Customer feedback and purchasing patterns indicated a deep discontent with the experience, app ratings had dropped from 3 to 2 star reviews.

Image for post
Image for post

The original vision for the overhaul was to create a holistic experience across multi platforms, but when faced with continued negative feedback, we decided to explore creating a rich native android user experience, implementing the Google material design system.

James Tenniswood

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store