May 16

On the Microsoft Pro-EU position – how not to write a letter

I wrote in a previous post that I have a gut feeling about the EU referendum. In fact I have a gut feeling about most things, which is all the more reason I like to subject myself to criticism. Come and knock spots off me, show me how I’m wrong. In fact I’ll go out to seek the counter argument. I’m opinionated, but I’m not entrenched. It’s entirely likely I may rebut everything I find – or everything you say – but at least give me the opportunity to do so and to have the debate. The debate is just as important as the outcome.

Which is why the media coverage of the referendum has been so frustrating to date. It hasn’t been a debate about the issues, rather one about the rhetoric of the debate. The debate is about the debate.

Anyway I’m not complaining about media representation here, I’m angry about something completely different.

You may have heard in the news that Microsoft wrote an email to their employees and business network urging them to vote to stay in the EU.

Well, it wasn’t really an “urge”, because it had nothing compelling in it whatsoever.

I suppose if you’re a huge organisation, for PR purposes you can’t possibly go too far down the road of siding with one political movement over another. Unless it’s taking a stand against outright evil, it’s best to be safe.

Here are my notes on the Microsoft Email. Michel Van der Bel, you have let me down, you have let your team down, but most of all you have let yourself down:


In the interests of balance, here’s a letter from a small online bookshop based in Lincoln that I received with a shipment last week. Forget the different political positions that Microsoft and Anybook.biz have for a second; this letter is refreshingly different from Microsoft’s letter in the following ways

a) It’s very specific about the industry they are in, rather than the business itself

b) It is laden with statements of fact. While these need fact-checking, at least there is something to pin an argument on

c) it is direct, and it says how it will affect consumers as well as the business


May 16

On Empathy, and the Referendum to Leave the EU


Many months ago and early on in the unfolding story of the British referendum to leave the EU, it was common to hear the electorate – at least presented by the media – decrying “we feel that neither side has really come up with a good enough list of reasons to” [delete as appropriate]: leave / stay in the EU.

As the months have worn on, this narrative of voters’ views presented by the media hasn’t changed, and we are still hearing that people aren’t being armed with the information they need.

Yesterday’s episode of The Today Programme was a case in point; a voter discussion group put together by global market research firm Kantar said “I just need a list of Pros and Cons for me to make up my mind”. The same message came through loud and clear from others in this research group, yet only one of the members of the group had actually picked up the leaflet that was delivered through their door and read it.

Yes this was a government leaflet which presented information from one side. But isn’t one-sided evidence a fantastic entry point for the inquisitive mind to learn about both sides’ arguments? There’s nothing like an outrageous statement from one camp to make you try and disprove it. All the better if that opening gambit is harder to disprove, as it can lead you down all kinds of other avenues of enquiry.

When my friends and family tell me they are not sure which way to vote, I ask further questions to determine whether they are like me, somewhere “In The Middle” as opposed to very much not like me “On The Fence”. Because lazy I am not, and un-engaged I refuse to be.

(Note, I’m “somewhere in the middle”, not bang in the middle, and I definitely have a gut feeling from which I will not depart.)

Being “In the Middle” doesn’t mean I am not decisive on an issue. It certainly doesn’t mean I blow whichever way the wind is blowing. It just means that I know there are Pros and Cons and although the decision is important, I consider it “swings and roundabouts”. I may be better-off in one way, and worse-off in another.

The best analogy I have for the decision – and the tone of the debate – is if my firm were deciding to switch suppliers for a major contract. Despite going to tender, and assimilating hundreds of pages of technical information about service provision, there are still unknowns. (Known ones, and unknown ones…) Colleagues will be battling out the detail, suppliers will be making false claims, it’s our job as the ones making the decision to decide on the criteria for a decision. Once that’s done, you weed out the rubbish claims and work through the good ones. There’s no right or wrong – just different.

I have sympathy with voters who feel frustrated by politicians. Perhaps deep down inside they too know there’s no right or wrong, and when politicians present their side as a matter of morality or patriotism, it turns us off. It’s not wrong to move your services from EON to Scottish Power, and we immediately switch off when someone tells us it’s something we should be scared about. Likewise we switch off to those trying to bait us by telling us the outcome is certain when we know there can be no certainty.

When I hear that people are “On The Fence”, this is what makes me shout at the radio. Of course we don’t know what the UK will look like outside of the EU, we can never have a full picture of 21st Century UK outside of the EU.

Some say “look at Norway”. No, this is Britain, it’s entirely different. Some say “the UK will be returned to pre-Cold War days”. No, this is the 21st Century, and we haven’t just fought a world war. Also Britain didn’t “join the EU”, it was an alliance member of the Council of Europe after the war and was a formative influence, since which time much has changed. Britain joined the EEC much later in the 70s.

History was my weakest subject at school, but I remember being taught the definition of Empathy. This is a pretty good version: the imaginative projection of a subjective state into an object so that the object appears to be infused with it.

So when I learn that the reason my friends are “On The Fence” is that they haven’t been presented with a clear set of Pros and Cons, I want to shout “get a grip and stop blaming your lack of understanding on a lack of evidence”. It’s EMPATHY that is required to work out whether you want to stay in a situation in which you have no experience of not being. The story of Europe unfolded over the course of decades and you won’t find hard evidence of what it will be like if we left. Arguably we need to apply just as much empathy in working out what would happen as a result of staying in the EU, as we can’t possibly know what’s going to hit us in the coming years. Either way, decisions are best made with empathy, not facts.

My suspicion is that some voters hide behind their lack of engagement in the political process by demanding facts from politicians, when they should really be taking-on the decision for themselves.

For this is the beauty of democracy: the freedom to make your own mind up. In a representative democracy, it isn’t the responsibility of our leaders to educate us in the facts.

So I have a low tolerance for voters who, when it comes to voting day, recoil and stay with what they know because they never got off the fence. That’s just damned lazy.

I’ll give you a few days during which time you can say you’re “on the fence”. After that, I’ll say outrageously illiberal things like “you shouldn’t be allowed to vote”.

Jan 16

Dynamic DNS using Linode and local powershell script

After noip.com and dyndns.org shut their doors to all but non-paying customers, I spent many years without being able to reliably access my home network from outside. Of course, it was always possible to do without dynamic DNS by making a note of the current IP address and use this for as long as the address stayed the same, but sods law I would *really* need to access home the day that the router was upgraded remotely or the address expired or whatever.

Over these years I looked at various options, and almost settled on installing BIND9 and using nsupdate on a remote machine and writing a script on the local network to check-in periodically.

This seemed like a good option because I already pay monthly for a linux VPS so there was no extra outlay. Deep down, though, I knew it was overly complicated and would probably break someday because I don’t have the time to maintain my VPS in a “mission critical” way, or I’d rebuild the server and forget it took me 4 hours to setup the solution, thus ending up not having it for another 6 months because I couldn’t be bothered to go through the effort again.

Turns out there was much more of a tidy solution for me. I use Linode.com to host my VPS, and I also use its excellent DNS manager control panel for all of my domains. Sure, you can use the DNS manager of your domain registrar and create A records and the like to point to your Linode’s IP, but it’s so much nicer pointing your NS servers to Linode and managing all your DNS settings from Linode. The interface is designed beautifully, the account security is top-notch, not to mention there’s a very sweet iPhone app that makes creating records / cloning zones a breeze.

I digress. My solution involves creating a Linode API key, pulling-out the domain and resource IDs from Linode, then having a powershell script which runs on a local Windows box update these when it detects a change of address.

I won’t bother going in to the former as you can work that out, but the latter is certainly something worth sharing here.

After nicking the IPChangeNotify powershell script from somewhere on the web, I discovered a whole load of reliability weaknesses, which I’ve pretty much accounted for. Without further ado, here’s the spec of my updated script and solution as a whole

  • relies on Windows task scheduler
  • (ironically) uses dyndns IP address checker at http://checkip.dyndns.com/
  • if for some reason the above doesn’t respond in a timely manner, it waits, tries again, waits, etc.
  • updates are of course made securely, over https
  • email notifications telling you a whole load of useful info such as:
    • how many attempts it took to discover the ip address
    • number of milliseconds it took to discover the address (for fun / to help diagnose problems)
    • old ip address
    • new ip address if changed
    • response from Linode API to confirm that the A record was updated
    • email subject based on change / success / failure to allow for sensible rules in Gmail
  • write-out the IP address to Dropbox (added bonus – you get a little Windows notification when this text file is changed) – just in case something goes wrong and you can’t be bothered to sift through notification emails

All you need to make this work is:

  • a Linode account
  • Windows machine on your local network that stays on all the time
  • the below script

(Apologies for the godawful formatting, but it should copy/paste okay!)

$scriptpath = $MyInvocation.MyCommand.Definition
[string]$dir = Split-Path $scriptpath
set-location $dir

$oldip = gc .\ip.txt
Write-Host “IP stored in Dropbox: $oldip”
Write-Host “Getting current IP…”

$firststartTime = get-date
$webpage = (New-Object net.webclient).downloadstring(“http://checkip.dyndns.com”)
$firstendTime = get-date
$timetogetpage = ($firstendTime – $firststartTime).TotalSeconds
$currentip = $webpage -replace “[^\d\.]”
Write-Host $currentip
Write-Host “That took” $timetogetpage “seconds”

if ($timetogetpage -le 2) {
$triestext = “(on first attempt)”
} else {
$triestext = “, not on the first attempt:`n`nTry 1 ($currentip) = $timetogetpage`n”
$tries = 1
while ($timetogetpage -gt 2) {
Write-Host “Let’s try again”
$subsequentstartTime = get-date
$webpage = (New-Object net.webclient).downloadstring(“http://checkip.dyndns.com”)
$subsequentendTime = get-date
$timetogetpage = ($subsequentendTime – $subsequentstartTime).TotalSeconds
$currentip = $webpage -replace “[^\d\.]”
$triestext = $triestext + “Try $tries ($currentip) = $timetogetpage `n”
Write-Host “Try $tries ($currentip) = $timetogetpage”

$smtpServer = “smtp.gmail.com”
$sender = “sender-email@gmail.com”
$users = “recipient-email@gmail.com”, “anotheruser@gmail.com”
$subject = “”

# change the below to match the ID of the given record
# change api_key and domainid below to match your Linode.com API key and ID of the domain

if ($timetogetpage -lt 3) {
if ($oldip -eq $currentip) {
# Discovery success – IP stayed the same (ideal case)
$subject = $subject + “IP address found: $currentip. No change! (discovery took $timetogetpage seconds)”
$body = “Old IP = $oldip`nNew IP = $currentip`n`nNo change!`n`nDiscovery took $timetogetpage seconds $triestext”
Write-Host “Not updating the file” -ForegroundColor Gray

} else {
# Discovery success – IP changed (important case)
$subject = $subject + “IP change detected: $currentip. Discovery took $timetogetpage seconds”
$body = “Old IP = $oldip`nNew IP = $currentip`n`nWe updated the DNS!`n`nDiscovery took $timetogetpage seconds $triestext”
$currentip | Out-File .\ip.txt -Force
Write-Host “New IP saved in file is: $currentip” -ForegroundColor Green

Write-Host “Updating DNS…”
$updatewebpage = (New-Object net.webclient).downloadstring($updateurl)
$body = $body + “`n`nOutput of the DNS Update service:`n`n$updatewebpage”
if ($updatewebpage -like “*Invalid*”) {
$body = $body + “`n`nLinode response: DID NOT UPDATE. Check Linode.com.”
} else {
$body = $body + “`n`nLinode response: UPDATED”
Write-Host “Output of the DNS update service: $updatewebpage”

} else {
# Discovery failed
$subject = $subject + “IP address kept as $currentip (discovery failed and took $timetogetpage seconds)”
$body = “Old IP = $oldip`nNew IP = $currentip`n`nI’m suspicious, discovery took $timetogetpage seconds $triestext”
Write-Host “IP address supposedly found, but it took $timetogetpage seconds” -ForegroundColor Red
Write-Host “Keeping the current IP: $currentip” -ForegroundColor Red

# Finally send the email
Write-Host “Sending an email now…” -ForegroundColor Green
foreach ($user in $users) {
Write-Host “Sending email notification to $user” -ForegroundColor Green
$smtp = New-Object Net.Mail.SmtpClient($smtpServer, 587)
$smtp.EnableSsl = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential(“sender-email@gmail.com”, “email-password”);
$smtp.Send($sender, $user, $subject, $body)





Sep 15

My KeePass to LastPass Migration Woes!


This blog post details the technical difficulties faced when trying to migrate from using KeePass to LastPass. KeePass has been an excellent password companion for the last 6 years and I’ve been using MiniKeePass for iOS, loading my password safe from Dropbox quite happily. But since starting to use a Chromebook I’ve been increasingly frustrated in this area. There are a few Chrome extensions that provide access to KeePass. CKP has 4.5 stars in the Chrome app store, but I’ve found this browser extension clunky and annoying to say the least. Manual search in CKP doesn’t work properly and despite the good reviews overall the experience in my opinion is poor. Not to mention it only gives read-only access to the password safe.

So I finally bit the bullet and decided to migrate to LastPass, after months of frustration trying to access my password safe from ChromeOS.

Here I document my migration woes, for no other reason than to provide help to anyone who might be googling for this info!

The import

LastPass supports importing from KeePass. You have to export to XML then upload the XML. Sounds simple, but fraught with the following problems.

Tip #1: use Firefox. Don’t question this, just install Firefox and run the import in Firefox. This solves a lot of issues.

Tip #2: if you used folders in KeePass, consider exporting each folder as a separate XML file. If you export the whole database, the result is that *all* your folders will be in a top-level folder. There’s no obvious way to change this later.

Problem: import process hangs


  • My KeePass database had a folder structure. As per Tip #2 above, split up your export into different XML files, one per top-level folder. To do this, right click on your folder in KeePass and there’s your option to export
  • The process can still hang, and I scoured the XML file for possible issues, however I learned after much trial and error that the hanging was random and not related to strange characters. Delete the folder that may or may not have been imported into LastPass by right-clicking on the folder in the web interface. Again – don’t attempt this in any other browser than Firefox, results are highly unreliable in Chrome! Then simply re-attempt to import. For me at least, it worked on the second or third try.

Problem: Items are imported as note ITEMS, not website ITEMS

I used KeePass to store credentials for websites, banking, etc., as well as other personal info like driver’s licence info etc.

LastPass stores items as different object types. Anything you import that had something in the URL field in KeePass will be stored into a website item. Anything else will become a “Secure Note” of type “General”.

So if you’re like me and didn’t really bother putting anything in the URL field in some / many / all of your entries in KeePass, you’ll need to do the following.


What you need to do is edit your XML file before importing to give the URL field some value. I gave mine this: http:/0 as if you accidentally attempt to launch the website we don’t want LastPass attempting to send your credentials to a website that actually exists like www.null.com (yes, it exists…)

To do the above, using Sublime Text Editor:

  • Remove leading whitespace from the XML file, otherwise the following step won’t work. Press Ctrl-H to find and replace, click the Regex button, and use this string ^[^\S\r\n]+ and make sure nothing is typed into the replace box. Replace all to remove leading spaces / tabs
  • You now want to find and replace all instances of the URL field where it’s blank, but not where it’s not. Find multiline string

<Value />



Use Ctrl-Enter to split the lines in the find and replace fields.

Now hit Replace, save the file, and try the import. This time you should notice the icon next to all items is not the purple pen (secure note), but the white box (website).

Jul 15

OLED from BuyDisplay.com – Mat’s Hookup Guide

Here’s a quick hookup guide and sketch to get the ER-OLEDM032-1W display to work with Arduino. We are going to use the u8g library to drive the OLED.

The ER-OLEDM032-1W is a 256×64 graphic OLED module costing $26.56. White on black. I bought mine from eBay although the Chinese brand BuyDisplay.com sells them directly.


There are two versions of the display, one including the integrated PCB (above) and one without. We want the above one, with integrated PCB. Make sure you purchase the one with the M in the part number.

Here’s a link to the data sheet.

About the part number:

  • ER stands for “East Rising” the manufacturer
  • OLED stands for OLED: “organic light emitting diode”
  • The M stands for “module”. I think. They do two versions, the one with driver board (adapter board) which is this one, and one without the driver board which doesn’t have that M. Confusingly they call the one without a driver board module an OLED module as well. Either I’m wrong or their naming convention is confusing. Or both. Either way you probably want the one with the M, it has an integrated PCB.
  • The 032 stands for 3.2 inch, corner to corner
  • Not sure what the 1 stands for, they all seem to have it
  • The W stands for white, they have other colours (yellow, green blue)

To use the display with u8g library and Arduino you must swap the tiny resistor on the back in position R18 to the position R19. Do this with a steady hand, some really good tweezers and a soldering iron.

ER-OLEDM032-1W Display hookup
swap 0 ohm resistor from R18 to R19 on rear of display
1> gnd
2> 3.3 OR 5 ok
4> level conv – arduino 4 (clock)
5> level conv – arduino 5 (data)
7-13> gnd
14> level conv – arduino 7 (command data select i.e. D/S)
15> reset – this needs to be connected to +5v
16> level conv – arduino 6 (chip select)

For the level converter I used this very cheap module, a clone of something by Adafruit: http://www.ebay.co.uk/itm/Pop-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to-3-3V-For-Arduino-/381311755120?hash=item58c7f3a370

And here’s a sketch. I ripped this from a larger sketch I have been working on and haven’t tested it, but it should all be about right.

#include "U8glib.h"

#define oledClock 4 // OLED
#define oledData 5 // OLED
#define chipSelect 6 // OLED
#define commandDataSelect 7 // OLED

U8GLIB_NHD31OLED_2X_GR u8g(oledClock, oledData, chipSelect, commandDataSelect);

void setup()
// Setup U8G
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) u8g.setColorIndex(255); // white
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) u8g.setColorIndex(3); // max intensity
else if ( u8g.getMode() == U8G_MODE_BW ) u8g.setColorIndex(1); // pixel on
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) u8g.setHiColorByRGB(255,255,255);



/* --------------- */
void drawControl(void) {

** insert logic to draw different things here, e.g. as follows **

// Draw current room light level
if (showlightlevel == 1) {
u8g.drawStr(178, 30, "Currently");
if (lux < 20) {
sprintf (buff, "%i%s", lux, " (dark)");
} else if (lux < 100) {
sprintf (buff, "%i%s", lux, " (med dark)");
} else if (lux < 400) {
sprintf (buff, "%i%s", lux, " (med bright)");
} else if (lux < 10000) {
sprintf (buff, "%i%s", lux, " (bright)");
u8g.drawStr(178, 40, buff);

void loop()
u8g.firstPage(); // START U8G
do { // START U8G
drawControl(); // START U8G

** insert the rest of your sketch that does stuff **

} // END U8G
while( u8g.nextPage() ); // END U8G

Jul 15

From Russia With Cash – barking up the wrong tree

I have no links with estate agents in my life. I don’t like them, I don’t dislike them. As a portrait photographer or in any other capacity, I’ve never had one as a client myself.

Channel 4 last night aired a documentary called “From Russia With Cash”.

It featured secretly-filmed property viewings by a fictional character called Boris who stole money from the Russian government and tried to buy a multi-million pound property for his blonde mistress. Estate agents from the following firms were filmed: Winkworth, Marsh and Parsons, Domus Nova, Chard, Bective Leslie Marsh.

A sexy title, and a very exciting premise for someone like me who cares deeply about the housing crisis we are facing in the UK, specifically the abnormal levels of investment that are seen to push-out genuine buyers (not just financial investment buyers) who want to make their homes in London.

The buyers I’m talking about want to live here perhaps because they want to be near family, perhaps because their job brings them here, or perhaps they have lived here all their lives and want to settle – to live in a property they own. Or maybe they just want a piece of London if they can possibly afford it. We all know they probably can’t.

Within 10 minutes of watching it became apparent the premise of the documentary was flawed. It was aimed squarely at exposing the inherent corruption in the estate agency business. Or so I thought.

Whilst the estate agents in question hardly showed visible outrage or shock on their faces when the fictional buyer looking around said he would be using stolen money, neither did they show any evidence whatsoever of wrongdoing. Read on – I’m not playing ball from estate agents. I’ve no reason to. The reason I’m angry by this documentary is that it was a great opportunity to properly explore and expose the real problems in the industry as a whole. Or indeed in problems with the housing market itself.

The documentary was punctuated by snippets from QCs who spoke hypothetically and said nothing that was untrue, and nothing one might disagree with. There were other narrators who said things such as “just plain wrong” without going into any detail as to why these secretly-filmed agents were wrong. Indeed the after-game statements from the agents themselves were very strong indeed and in my opinion almost completely vindicated their behaviours.

Most of the estate agents came right out and said words to the effect that they were not qualified to advise on issues of money laundering. Some of the estate agents went on to say that this would be done according to the law by legal professionals once the transaction proceeds.

True, some of them said “you will need a good lawyer, I can recommend one”. But does this really class as unethical?

Estate agents are low hanging fruit.

All this documentary showed was that estate agents essentially smiled and nodded during the viewings. There was not a jot of evidence to suggest the agents even considered the viewings to be credible let alone that they might end in a transaction. Of course they didn’t close it off – they are hoping for a sale. That’s what an estate agent does. Should they have laughed out loud at fictional “Boris” and said “no way mate, we aren’t going to help you”? Indeed if they had thought he was credible, what’s to say he didn’t have a car full of Russian men with guns waiting around the corner? A silly suggestion, but my point is that of course the estate agents smiled and nodded. I would too. It was a charade.

Did the secretly recorded conversations on the phone with the fictional character’s agent show any unlawful or wrong behaviour? What I heard were agents explaining that at this stage they wouldn’t be asking questions.

I’m really gutted that Channel 4 have totally missed the point with this. There was nothing to suggest that money laundering law was broken, as explained by a number of the statements given by the estate agents after being contacted for comment. Amusingly Channel 4 chose to show these perfectly reasonable statements in black and white – the irony.

Domus Nova stated “No offer was made and therefore no transaction was in prospect.”

They said “we recorded the viewing on our AML [anti money laundering] log despite not having any ID information from the fake buyer and requested that an offer was made through solicitors registered in England and Wales.”

Sorry Channel 4 – I’m with Domus Nova on that one!

Another agent stated that they have a regulatory duty to perform anti money laundering procedure on the seller with whom they have a relationship, but not a potential buyer who hasn’t even made a formal offer. Just someone fictional who shot the breeze.

Channel 4 – you used to make groundbreaking documentaries. This was far from interesting let alone groundbreaking.

Never let facts get in the way of a good story, that’s what I say.

Again I say, I’ve no reason to defend the profession of estate agents. Again I say: I don’t have a single estate agent friend nor do I have any business connections with estate agents. I am an active campaigner in local community group issues and the hyperlocal movement, and wholeheartedly support the #ReclaimLondon movement.

The reason I’m annoyed by this is that this television programme only served to divert discussion away from the issues that face real London wannabe homeowners.

May 15

Assembled MQTT Lightswitch – version 1

Really quick post showing latest progress of the fancy light switch.

What do you think? A bit too colourful? It is a bit colourful for my liking. On the other hand the colours do add meaning to the buttons:

blue = presets (obvious)
red = all off (haven’t added this to display yet, you can see below there’s a nice space for the words ALL OFF)
green = cycle modes (light, music, heating, weather forecast, electric blanket mode, etc.)

So yes – useful to tell the babysitter “just press green button to change music”.

Lots of revisions to make to the design. I’ll keep you updated!

(Of course, the whole thing fits in a 47mm wall box with fancy screwless brushed chrome metal faceplate on top of it!)


May 15

Open Letter to Nick Clegg: please re-stand at our party’s leadership election

Dear Nick,

“He had to go”; a very British leadership response that shows humility in the face of defeat. Where, in other countries, leaders of defeated parties cannot help themselves but try to hold arrogantly to power, the expectation of a party leader in this situation is to fall on the sword. Swiftly. Graciously. With a good speech.

Any other action sends a message that the public cannot stomach. Belligerence. Power hungry. Out of touch.

Nick, throughout government, and even in the coalition agreement meetings five years ago, you did the right thing. Two days ago you did the right thing. As leader you have dilligently represented members of our party like me, and like much of the electorate, who felt that unbridled Labour was causing huge problems for our country, but that the solution was not an unrestrained Tory government.

The current rhetoric – “the voters have punished us but we did the right thing” – is absolutely the right line to take. Not only is it true, but people are increasingly hearing it, agreeing, and engaging. Facebook has been a vicious place to be over the last few days if you are not Labour. Even the national press has noted this prevelance in social media of intolerance against socialism. Yet there is a new message emerging on social media which, if you listen to the small quiet voices, is one of moderation. Members have joined our party over the last 48 hours in record numbers.

Nick, I am as anti-populist as any true Liberal and I spurn media manipulation. Amusingly, however, I agreed with that silly social media line five years ago: “I agree with Nick”. Finally we had found our voice.

I am writing to you today to argue that this wasn’t just because we found your voice appealing, but rather that you perfectly communicatied the voice which we as members were beginning to find.

I suspect I am unlike the majority of the electorate in that I have found myself agreeing wholeheartedly with everything our party has done since taking office.

One thing I am sure about, though, is this: if the Liberal Democrats go back on our line of reasoning this will be a terrible thing for us. Here is why.

If the Liberal Democrats were to move to the left, it would be seen by the general electorate as a cynical move.

The prevailing view that “Liberal Democrats” have always been a party of “left” values is foreign to me. What is “left”? Socialism? Does this sum us up?

Globally, “austerity” has become a dirty word, and not without reason; fascist governments across the globe use equivalent words that are designed to conjure-up a sense of diligence and national pride. Putting the significance of that word aside, what other course could a country that was in our position take? What course do we take now? Can we credibly support the anti-capitalist movements? Can we find other ways to make the country a fairer place? These are questions for ongoing discussion.

I am in favour of a party that shifts left or right according to our country’s greatest need. It’s our ‘up’ness towards liberal values that persist throughout the shifting political landscape.

The media always seek to push our party to the left or right in their representation. Over the last five years there’s been a feeling our party made an error in its shift: a desertion of the left. The real truth is that the Liberal Democrats is a family that encompasses different opinions on this debate. A true pluralist party. Let us be clear: the view we made an error in moving to the left is primarily rooted in a media wishing to pigeonhole us as part of the only political system they know and understand: a polarised system. The media does not understand us. We aren’t right or left. We are Liberal.

The road most travelled in today’s democracy is to show party members and the wider electorate that “heads have been taken”, that a new leadership will take a party in a fresh direction.

The Labour Party made this mistake after the 2010 election. Their strategy was driven by the need to show voters who they were different to New Labour. Their leader, a man with a huge brain and a big heart for Labour values, was so tightly bound by this narrative that even his communication style became sanitised. His every word checked by public relations officer executives. This was not a problem of ‘sticking to a media brief’ but rather a problem of ‘being choked by a popular political narrative’.

With hindsight we can see this narrative was “Tory-lite”.

We can do better. We are no “Labour-lite” or “Tory-lite”.

No, we must learn from the SNP whose message was positive, and whose candidates were women.

Any soul searching we do now must be an extension of the last five years of soul searching. We are a party of ongoing soul searchers.

But the new message coming from numbers of people joining our membership is that the electorate also have some soul searching to do.

Rather than “entering a period of soul searching” (please let me never hear that on the radio!) we must instead lift our heads in pride.

Nick Clegg, will you please – for members like me who joined the party shortly before the 2010 election and have remained supportive ever since – please stand for re-election for party leadership?

I will personally campaign to ensure that our party sends a strong message to voters that, by deserting us at this election, they have given themselves an even stronger Tory government. That Liberal values matter more now than they ever did.

And I will campaign within the party to ensure that you, Nick, receive the strongest vote of confidence when it comes to the leadership election for our party.

Yours faithfully,

Mat Smith

Apr 15

Multi-zone audio: a discussion of the options

Multi-zone Audio: the last 15 years

Multi-zone audio has been possible in the home for decades now, but until recently has only been an option for the super-house; the high price of systems and installation meant it was out of reach for the average home.

The first cheap device I know of that opened-up multi-zone audio to the consumer market was the SliMP3 (2001), which quickly matured into the Logitech Squeezebox ecosystem of devices and apps. Unlike the old paradigm, where a multi-zone amplifier had to be connected to a central source which was then controlled from each room – thus requiring direct connection from each room to the central unit (i.e. in-wall wiring) plus speaker cable running from a central location back out to the rooms (i.e. in-ceiling wiring) – the Squeezebox was situated in your living room and bedroom and connected to your speakers directly. It used a wireless connection to talk to the central controller, providing access to a central store of music, sync’d or independent control of audio for each zone, internet music, and other bells and whistles.

Sadly Logitech abandoned the product in 2013, but as of 2015 the ecosystem lives on thanks to software players and a surplus of cheap, high quality second-hand audio players which are still traded online.

Sonos filled the vacuum. Their units are more expensive than Squeezebox devices and many have built-in amplification. They are frankly sexier and more user-friendly, but for the audiophile, advanced music cataloger, classical music listener, DIYer, or home automation expert, Squeezebox still has huge advantages over Sonos.

The Problem / The Dream

The problem with the Squeezebox/Sonos paradigm of multi-zone audio is this: although you can play different music or listen to different radio stations in each room, you are limited by what the system itself can do. For example, Squeezebox and Sonos are internet-enabled music players. They don’t play Bluetooth audio or music playing on your Apple TV, they don’t play CDs, and they can’t pump the music from a YouTube video projected onto your wall around the home. Surely this is “The Dream”?

You still need a multi-zone audio amplifier for this. And they cost bucks. Big bucks.

You want

  • expensive hi-fi quality audio in your living room, and some cheap amplifier to power the speakers in your bathroom and hallways?
  • 12 zones of control instead of 4 because your hallway speakers are next to the kids room and you would rather have them off and night?

Forget it. Not without quadrupling your budget from £1500 to £6000.

The likes of Niles Audio who produce a network-controlled amplifier, and Russound who make interesting looking wireless-powered receiver amplifiers amongst other things seem like good options. Again these options do appear to total the thousands, not the (very) low hundreds which I’m aiming for.

And sadly even if you spend £6k+ do you think you can have the bells and whistles? What about

  • controlling audio volumes in each room from your central automation system (e.g. OpenHAB) as well as some proprietary wall panel?
  • fading the music across the whole house when someone calls you on the ‘phone?
  • fading the music down when the doorbell goes?
  • having your house speak to you?
  • speaking to the burglar when he enters to freak him out?
  • [insert your own #homeautomation fantasies!]

Possible Solutions

I looked at multiple source, multiple zone systems for a long time before deciding that I needed to home-brew my own. Here was my thought process:

  • I have some nice Class A amps sitting around. They cost me hundreds in total, not thousands. Why can’t I use them?
  • I can pick up a Class D amp with power supply for £20, for kitchen and non-audiophile zones
  • I just need to find a way to do the switching and mixing of multiple audio sources

Reed relay switches. With a view to making my own Arduino-controlled source switcher I looked at using transistors, relays, or dedicated audio ICs. I gravitated towards the idea of a series of reed relays to switch multiple audio sources. A relay is a cheap and very high quality way to switch an audio signal because it introduces no distortion or load to a circuit. Reed relays are great because they would minimise the audio click you’d otherwise get when using a metal relay to switch from one source to another. Reed relays unfortunately don’t come in complex arrangements such as 2P6T which would be nice, as this would allow you to switch the positive signal path for L and R between 6 sources – but this is not a huge problem as they are only a couple of quid each and so you can buy multiple reed relays.

After thinking about this a little more, it becomes apparent that you can’t just connect up a load of relays and hope for the best: your board design must account for minimising cross-talk. Whatsmore, using relays only solves 1/3rd of the problem: the input stage. You still have to route signals to multiple rooms and if you are aiming for the dream option of fading something down when something else happens, you have to design gating and signal detection. Routing audio to multiple rooms isn’t simply a case of connecting one signal path up to multiple rooms’ amplifiers. Adding more than one load will introduce distortion. And although gating and signal detection is possible with cheap ICs, this is starting to grow into a big project!

Wow… this idea got out of hand quickly.

Using dedicated audio ICs. Whilst it’s possible to find audio switching and mixing ICs, it becomes apparent after a little research that such ICs have rather specific applications, furthermore then aren’t very “black box”; a significant investment of understanding about their inner workings is required to design them into an application. When an ICs application notes is a document 45 pages long, this particular home automation DIYer knows it’s time to consider alternative options!

Making the Dream Happen!

Sorry, dear reader, to drag you through this rather pointless process. I’ve banged-on about my take on the development of multi-zone audio over the years, and let you into my raw thoughts about designing my own system, which amounted to nothing.

If you’ve got this far, however, I do have a great solution for the Audio / Home Automation enthusiast looking for the same things as me.

The ClearOne XAP 800

  • It’s a 12×12 audio switch / mixer
  • No it’s not an amplifier, but it will be the core of your multi-zone automation system
  • It’s cheap – very cheap and highly available second hand (£30 ebay)
  • It’s very powerful
  • It’s rackmount

And here it is:


ClearOne XAP 800 – a 12×12 audio mixer



If the above looks to you like it has worryingly few buttons on the front, then like me you may be thinking… “hmmm, is this thing software controlled?” Yes it is.

And if the above looks to you like it may be far too small to house the numbers of inputs and outputs you would need to power a whole home, then rest assured:



I’ve just bought mine on eBay for £25.

Don’t be put off, it’s called a “microphone mixer” and a “conferencing system”, and whilst I’m sure it’s great for B&Q’s staff announcements, this baby is a dream come true for home automation and multi-zone audio.

Why is it so cool? The product manual will answer that (nicely written too), but here’s my take with a Home Automation hat on:

  • Core use: an audio routing matrix. Basically this provides everything that the most expensive Crestron multi-zone system does, and more. Route an audio source to a single room, multiple rooms, or groups of rooms. Route another audio source to another room or set of rooms. Switch the source or zones from anywhere in the home. Keep going until all rooms have the exact audio you want. Rooms could be set up as stereo zones, mono zones (e.g. bathroom), or even 5.1 theatre zones.
  • Scenario presets. Because of the possible complexity of a 12×12 routing matrix (i.e. assigning different sets of audio to different rooms) you will want to have presets. The XAP 800 supports 32 whole-system user presets.
  • GPIO: interface with your home automation hub via an Arduino. Amazing! Imagine the possibilities:
    • Remotely control the presets, e.g. listening scenarios.
    • Remotely control volume, set EQ Presets, and control audio routing direct from my MQTT wall panels! (Did I mention this thing has digital signal processing?)
    • Page someone from another room, and fade-down the audio if they are listening to something
  • Not only does the unit have GPIO, it has GPIO assignment. There’s even a “GPIO builder window” in the software, meaning that you can assign whatever you wish to the input / output pins.
  • The device supports gating, gating groups, configurable ramps, and a whole load of other advanced stuff when it comes to stopping one sound when another one happens.
  • The device has echo cancellation and some advanced “adaptive ambient level”, which means it can detect noise even when there’s ambient noise in a room. Useful if you want to hook-up some home automation voice commands with boundary mics
  • Rest assured, mic/line level can be configured for each input

Looking forward to getting my new XAP 800 hooked up with some pre-amps, amps, audio sources, speakers, and an Arduino to give it all a whirl!

Jan 15

Pimped-Out DIY Alarm Bell Box

For reasons of general sensibleness and security I won’t go into much detail about exactly how my DIY Alarm Bell Box is configured to work in relation to actually keeping thieves away. Suffice to say: network of sensors indoors and out, differential siren sounds depending on alarm state, iPhone notifications and emails to neighbours (seriously, I will be doing the same custom install for them, they are very nice people. And big. Very very big. 7 foot. And they have dogs. Dogs that eat anything.)

So the thing pictured below looks like a dummy box, it’s sold as a dummy box, but it is far from a dummy box.

It’s sold on eBay for £9.10 including postage from a UK seller (that price is without “dummy LEDs” – I’ll be adding my own thanks), and it does rather fortuitously have a rather sophisticated plastic moulding design inside that allows the placement of alarm sirens, LEDs, internal housing boxes, and incoming cables.

Cheapo alarm sensor casement  £9.10 including postage

The box itself is not IP66 rated, but that’s not a problem because I have bought from Maplin an internal component box and some anti-mould silicon sealant which will do the job of making sure the electronics I’m about to pimp this thing up with stay nice and dry.

So what’s going into this puppy?

Arduino Nano, obviously. And a tiny red W5100 break-out board to provide networking. Oh and this cool super-tiny buck converter to allow me to power the thing over ethernet:



And the cool stuff? Why not:

  • Vibration sensor (for anti-tamper)
  • BMP180 Barometric pressure sensor (we always need to know outdoor pressure, right?)
  • BH1750FVI Ambient light sensor. This is mounted under the blue window, but it doesn’t matter because the serial output needs calibrating to some kind of meaningful scale anyway, so it’s all relative
  • DHT22 Temperature and Humidity sensor. Because it’s wrong not to
  • 4x ultra-bright red LEDs
  • 4x ultra-bright blue LEDs
  • 4x ultra-bright green LEDs
  • 2x cheapo very loud buzzers (Maplin and eBay – £2 each – different pitches)


The astute amongst you will notice I’ve already maxxed-out the pins on the Nano, but LEDs will be in groups of 2, meaning 6 pins. This still gives me Knight Rider options. More importantly it allows me to use a number of signals to would-be burglars.

I may even use these addressable LEDs with driver, if I can be bothered not to program individual LEDs myself.

Naturally the thing will report sensor values on their own individual MQTT topics back to my OpenHAB server which stores all data for historic purposes.

And naturally the thing will respond to commands such as:

  • Make discreet but audible warning beep to potential intruder in back garden when house armed
  • Make screaming noise when house security has been compromised (this of course along with iPhone notifications / emails sent to me and three other nominated contacts. I’m lucky, I have cooperative neighbours who will take care of these things)

Such commands will be triggered in OpenHAB from network of sensors inside and outside the house, including vibration sensors on doors etc.

Will I get a twitter notification when a cat / dog / fox moseys into the back garden? Probably.

And the fun stuff:

  • Using a series of fun flashing sequences, alert me when I walk down the road whether wife, child, or both are home. (FYI I’m not really married.)
  • Using a series of fun flashing sequences, alert me when I walk down the road that I should have brought an umbrella as the forecast shows it’s going to rain in the next 4 hours
  • Using a series of rather serious and angry flashing sequences alert me that I left the window open when I left the house
  • etc.