Jan 15

How Kerning Could Save Your Life

As someone who buys electronic goods from China on a regular basis, I am used to looking closely at the CE logo to check how close together the letters are.

For my buying habits it doesn’t matter. I’m dealing with low-voltage stuff. The worst that could happen is a component might overheat and cause a fire in my loft space melt a bit.


It’s not that the Chinese make dangerous electronics. It’s just that they (I should be specific; “they” means the Chinese Export regulatory bodies) don’t do a great job of checking whether the electronics they do make are safe, or whether they are likely to kill you.

I’m probably splitting hairs.

Recently I bought a job lot of COB – as in “corn on the cob”, or “Chip On Board” – LED light bulbs. Gladly mine were safe by design, but as this video shows I got lucky.


Jan 15

Home Automation PoE with Arduino – in praise of DIY PoE!


First up I’d say in any professional environment there’s no way I’d recommend anything but “proper” PoE, that is to say 802.3af or PoE plus.

For DIY home installations, however, we can do things differently. And I don’t mean “substandard” by any means. Rather we can do them in a more tightly-spec’d way, we can design our own system of distributing power that is equally efficient in terms of power loss, and equally reliable… but far cheaper.

(The reason you wouldn’t inflict this on a corporate environment is not because it isn’t as good, but rather the next guy / girl who comes along won’t spec the replacement power supply properly, and blow something up. Also DIY jobs tend to vary in quality, whereas using a PoE switch and device gives a standard of power distribution quality that can be relied upon. We DIY types do things properly, we are masters of our own home, and we know how to do basic maths, so it’s okay, right?)

DIY PoE with a buck converter - dodgy connections fine for prototyping but we can do better

DIY PoE with a buck converter – dodgy connections fine for prototyping but we can do better


I suppose I would sing the praises of DIY PoE for the home, because when it comes to electronics I love doing things myself.

This isn’t true with computers, I can’t be bothered to faff around swapping RAM out or upgrading motherboards for my own gear any more, although I used to love doing that. Perhaps that’s because in the 90s desktop PCs were the rage and to play better games you had to have the better video card, which required knowing how to change the video card, which meant knowing how to build a computer. I don’t play games any more and I certainly don’t remember the last time I used thermal paste on a CPU. Or maybe it’s because there are no cost gains to be had with DIY computers these days.

Not so with PoE!

Below is a little chat about PoE, and at the bottom of the post I’ll go into what I am using in my wall controller project.

Most computer / network techies already know the basics when it comes to PoE, but this post seeks to shed some light on the choices to be made when considering PoE for Home Automation.

Why PoE? (Skip this if you already get it.)

Most wired network devices also need some way of powering them. Wireless Access Points, network cameras, intercom systems, control panels, they all need power – but if you are already taking a network cable to them, why not use that cable to also deliver power to them as well? Here are two benefits: no need to hire an electrician to extend your ring mains to awkward places, no ugly extra cables on wall-mounted devices to compound the felony.

Certainly in the case of my uber wall control panels, they are being sited inside wall boxes at various points in the house that don’t require power. To bring power to each panel would be a lot of extra cables in walls, and the installation cost would increase hugely. There’s spare capacity in a CAT6 or CAT7 cable, why not use it?

Active vs. Passive PoE

“Passive PoE” is a bit of a misnomer, but that aside – here’s a comparison.

Active PoE is industry standard in business, and involves sending 48V down a network cable to the device. The power usually* comes from the network switch itself, and the device has some special electronics that talks to the switch on the other end of the wire and negotiates power using a series of signals (resistance detections and presentations of loads). It’s pretty complex, and in fact PoE isn’t really one standard at all. (“The thing I like about standards is that there are so many to choose from…”)

The other thing the device must do is step-down the voltage to whatever it requires.

* Many people use mid-span injectors, that’s where the switch doesn’t supply power but you can inject power using a separate device. This gets messy if you have very many devices requiring power, but as a general rule fine for the odd one or two.

Passive PoE is a system that simply splits your ethernet cable at both ends, allowing you to place your own power supply at one end, and then connect your device power to the splitter the other end. No power negotiation – no voltage step-down.

There are shoddy implementations of passive PoE, and there are lovely ones.

A common example is where, instead of hooking up a power supply directly to where your security camera is installed, you can install a splitter at both ends. On the camera end, your splitter has a little power plug that connects to your camera (sinking power), and on the other end your splitter has a socket that connects to the power supply (sourcing power).

Active PoE – pros and cons for home use


  • Higher 48V transmission over cable means lower voltage drop-off = decreased power loss (saving money on bills).
    • NB Passive PoE allows you to supply whatever voltage you like, but more often than not it’s used with existing 12V or 9V device power supplies
  • Power negotiation is great because it means that a device is only allocated the power it requires; where there are more than a few PoE devices, this quickly becomes a sensible idea for all aspects of a system (cooling, conserving energy, etc.)


  • PoE switches are usually expensive (£350+)
  • PoE switches are usually very noisy (bad for the home environment). You can find cheap fanless switches such as the Cisco 2960C-12PC-L or D-Link DGS-1008P/B, but most smaller switches tend to have PoE capability only on half the number of ports (e.g. 8 port switch has PoE on 4 ports).
  • PoE requires your Arduino project OR your network device must support it. Network devices supporting PoE are usually far more expensive.

Re the last point, it’s possible to include some electronics that will supply your Arduino project with PoE but they cost £16 on top of the network shield:

From Sparkfun: a network shield with PoE module (the black board that sits vertical on the shield)

From Sparkfun: a network shield with PoE module (the black board that sits vertical on the shield)

£160 for 10 units, not including the network shield!

Or you could get an Arduino with built-in network and PoE, such as the excellent EtherMega. These are wonderful, but this is even more expensive.

Finally you could get your own chip and include this in a project but it’s still about £6 per unit, see Silvertel Ag9800 themal protected 12vDC module.

Passive PoE – pros and cons


  • Reduced complexity for your project. No inherent need for power negotiation electronics, or step-down converters (unless you want to)
  • Far cheaper. PoE passive injectors cost £20 for 8 ports. You supply your own power supply. Of course, no extra electronics at the device end, so it will support most things that come with their own power supply. Your Arduino project may need no special electronics, depending on how you implement it. In my case I added step-down voltage at the other end, read on for more info.


  • Most devices want to run at 9, 12, 15, 18v DC. At these lower voltages, the power loss over cables is significantly higher. This requires thought about two things:
    • Electricity bills – are you wasting money?
    • Power tolerances – will your device work reliably if running from a slightly lower voltage?
  • An extra hub in your comms cabinet = double the number of patch cables = more mess

Which is best?

So which is better for Home Automation? Looking at the Passive PoE cons, I can live with the extra mess, but really how much power is lost over a CAT6 cable?

Joule’s Law

If we can minimise power loss, perhaps we can justify the cheaper option as our cable runs in the home won’t be so long. Let’s take a closer look.

According to Joule’s Law, if we keep the voltage high then DC electrical transmission power line loss will be low. So the first thing we want to do with passive PoE is get the voltage as high as we can (within reason – we are talking low voltage systems here!)

On the other hand, the higher the voltage on your Arduino, the less efficient the conversion down to 5V will be, this is because your Arduino has a linear voltage regulator which is not wonderfully efficient. Also the harder you drive that voltage reg, the hotter it gets. And don’t forget the acceptable voltage input range that your particular Arduino can handle – check the data sheet!

As you can see it’s a trade-off. The best option is to use a non-linear voltage regulator, aka a switch-mode power supply or buck converter. Obviously this is places at the same end of the CAT5/6/7 as your Arduino, so you can benefit from lower power loss over the cable.

Pros of using a separate buck converter to power your arduino over ethernet:

  • Doesn’t get as hot = safer for home installations
  • Doesn’t waste as much power in the conversion down to 5V. Buck converters are typically 95% efficient. Linear regs’ efficiencies depend on a number of factors such as how hard you drive them, but they are generally 50-70% efficient. (I’ve pulled these numbers from the air!)
  • Means you can put a far higher voltage down the line, e.g. some small buck converters can take 30V down to 5V without getting too hot. This in turn means less wasted power because of Joule’s Law.

Cons of using a separate buck converter

  • Introduces another component that takes up space on your circuit board or project board
  • Can introduce EMI (electric noise) to your circuit, which means you need to be careful about how you design your circuit, and how you lay out your circuit board.

For an excellent introduction to buck converters, check out the videos of Julian Ilett or Afrotechmods on Youtube.

For the sake of answering my own question above, “how much power is lost over a CAT6 cable”, I measured 12V down a 20m cable sinking 400mA at the end of it, and the power had dropped 0.9V. This is fine, but it will vary for cable runs, so let’s run at a higher voltage and not use the Arduino’s in-built linear regulator.

In the end I found this lovely little device on eBay. You can pick them up for £8.30 for 5 = £1.66 each including shipping. Search for “Ultra Mini DC Buck Converter”.

Cheap as chips. (Actually cheaper.) Ultra mini buck converter.

Cheap as chips. (Actually cheaper.) Ultra mini buck converter.

Strangely the auction says “12V to 5V Power Supply 7-22V to 5V”. I think that means you can get them in various flavours outputting anything from 12V to 5V. Lower down on the auction it says “Output Voltage: DC 5V”, so that’s okay. I tested them before I hooked them up and the voltage was a very reliable 5V… although I didn’t test with different current draws, only about 550mA.

Incidentally if anyone with an oscilloscope has used these before, let me know how clean the output is.

They also come in 1A and 2A flavours, I plumped for the 2A versions of course. I’m sceptical about driving 2A from it and I don’t plan to do that ever!

This “Fulree” branded cheap buck converter seems like the same thing as one you can get from Sparkfun:

Sparkfun Buck Converter - tiny

Sparkfun Buck Converter – tiny

I’ve no doubt the “Traco Power” branded one, also available from Farnell, is superior in quality, shielding, and design. But it’s £5 and I’m a complete cheapskate. (i.e. I’m making 20 of these things and every little saving will reduce my total project cost from thousands to hundreds.)

You could also buy another type of buck converter, even cheaper but not as compact. It exposes the whole circuit on a board of its own and is based on the LM2596 switching regulator. If you do, make sure to watch Julian Ilett’s warning video on not getting a dodgy version:

The other alternative is to include your own buck converter circuit in your project using components from scratch, but there are some design challenges you must be aware of and the components stack up to be more like £3-4 – not worth it. See this beautiful Youtube vid from Afrotechmods for more info.

What cable to use with DIY PoE?

We don’t normally bother about cable gauge when it comes to CAT6, as performance is more about minimising cross talk, shielding, and data transmission speed – not wire thickness. Well, of course the latter does affect the former, but either way for the pursuit of low cost PoE, we must consider this.

Do get good quality CAT5/6/7 cable – preferably CAT6 minimum for PoE. I measured a single strand of my CAT6 cable. The cable measured 0.6mm diameter on my Vernier scale, which is approximately equal to 23AWG. I’m using LSZH (low smoke zero halogen, aka LS0H) infrastructure cable, that is, rigid non-stranded cable that can bend a few times but is not designed for regular movement. Good for home installation if a little rigid. It cost £100 for 305m reel from a local electrical reseller.

My wall controller project

After a whole load of price checking and electronics research, I decided on this solution for powering my Arduino over ethernet:

  • Standard network switch
  • Cheap 8 port PoE injector (£20 each)
  • Re-use old Dell power supply (free if you have them already)
    • 19.5V = perfect for longer runs
    • High power (90W or 60W), high quality
      • 90W split 8-ways is 11.25W per port
      • Almost certainly enough for your project, unless you are powering motors or lights
      • P = VI. My project uses max. 450mA at 5V, so that’s 2.25W.
      • 2.5W. Don’t forget to do a back-of-fag-packet calculation for power loss and include a lot of headroom. Include line loss, and assume 5-10% loss in the buck converter
    • Chop connector off and replace with 2.1mm connector
  • Fulree buck converter at Arduino end. Connect both browns to GND and both blues to IN (check wiring standards and verify this yourself!)
  • Split ethernet cable at Arduino end and use PCB block connectors. I may develop this to route power through the W5100 board in the future, but right now this works for me.
  • Connect output of buck converter to Arduino’s 5V connector.

I do have a PoE switch at home, but given the amazing cost benefits of the above option, and the fact it makes a big noise, I’m not going to use it for my project.


Jan 15

The spec for the ultimate home control panel

A number of months ago I became obsessed with the idea of controlling my room lighting using knobs in the wall. Crazy, I know 😉

Seriously though, most lighting automation systems do not use rotary controllers (i.e. knobs), but rather you have to keep your finger on a button until the desired light level is reached. Isn’t that so 1990s? Knobs are the way forward. Worse still, many only let you select “scenes” without even controlling individual light level. So I set about making my own digitally controlled lightswitch. The process has been one of research and learning new skills. Soon enough I stumbled upon the ultimate way for things within the home to communicate with other things: MQTT.

Here are my design goals for the ultimate home control panel for each room.


Use physical buttons and lights NOT touchscreen. I find touchscreens great for web browsing but when I want to control lights and volume I need an accuracy and responsiveness that can only come from;

  • tactile switches with visual feedback
  • rotary controller knobs
  • display screen showing levels as percentage (i.e. numbers) for fine adjustment

Look sexy. DIY metal faceplates with push buttons conjure-up images of 1970s style control panels. Disabled toilets. Hobby aeroplane remotes. I’m going with brushed stainless steel faceplates with no visible screws, smaller LED-integrated tactile buttons, matching brushed steel knob.

Use numbers on the display. In the increased sexification of home automation, things have become too touchy-feely. Having controlled lights and music from my iPad, I get annoyed if you press in slightly the wrong place, or need to make that super-fine adjustment. Also I get annoyed by the ubiquitous slider and the lack of information it provides the user.


  • The faceplate must run at low voltage, requiring no special electrical certification
  • Connected with ethernet (CAT5, 6, or 7)
  • Powered over the same ethernet cable
  • Fit within a back-box readily available in shops: 47mm depth max


  • Use “Scene” buttons to quickly select the lighting mood in a room
  • Dim individual lights in a room to create your own scene
  • Quickly cycle between different lights in a room
  • Control music volume and see what’s playing (track title and artist)
  • Similar to light scenes, there should be audio “favourites” (i.e. radio channels, playlists, shuffle mode for a given genre, etc.)


  • The unit is designed for a range of functions, but can be expanded later to incorporate more. e.g. lighting and audio modes have their special uses and displays. As it’s based on Arduino, the sketch can be updated by USB later.
  • “Thing” settings (i.e. how many lights in a room, the name of a light in the room, the name of a scene for a given room) should be queried from a server and downloaded to volatile memory at startup. These things are not stored in the unit.
  • We should be able to press an “update” button to pick-up the latest settings. Home automation installers and users change their minds all the time!


  • “WAF” is an offensive phrase used in #homeautomation talk. It stands for “wife adoption factor”. Maybe “GAF” – grandparent adoption factor? No – that’s swapping one prejudice for another. “HAF” will do nicely – human adoption factor. The controller must be the perfect balance between powerful and usable. I don’t mean “powerful for the geek, usable for the granny”. I mean “equally powerful and usable for both”.
  • This means: consistency of display and immediate access to primary functions. No menus, no prompts! Placement of buttons should be intuitive.
  • All light should cease when it hasn’t been touched for a while. No lights in the middle of the night!

The solution I’ve settled for is a “mode cycle” one. Like old digital watches. The mode button is set apart from other buttons and placed near the icon displaying the current mode. All other physical controls depend on the mode in question, and their function is intuitive given the placement.

Consistency comes from the unit defaulting back to a “primary” mode after x seconds of not being touched. The display dims appropriately.

Here’s a brief demo of the progress so far – January 2015:

Aug 14

Arduino and code efficiency

The thing I love about programming for Arduino is that, unlike programming in most other environments nowadays, you are forced to think about memory footprint, memory allocation, and how your code relates to the hardware.

That’s great for people like me who don’t really consider themselves coders at all, because “perfect code” is less about something that’s mathematically beautiful and conceptually elegant, and more about getting the job done. In fact the code is often more efficient if you spell it out line-by-line in a bunch of nested if statements, rather than abstracting it into a pre-written processing function that may do the job in fewer lines of code but end up costing more in storage space because the function itself is general purpose.

Take for example this code. Horrendous to mathematicians I’m sure, but lovely for electronics engineer types;

void callback(char* topic, byte* payload, unsigned int length) {

Serial.println("Volume Callback");

if (length == 1) { output = payload[0] - 48; Serial.println(output); }
else if (length == 2) { output = ((payload[0] - 48) * 10 + (payload[1] - 48)); Serial.println(output); }
else if (length ==3) { output = 100; Serial.println(output); }


In the above you can see I have a byte array, each location in the array is an ASCII representation of a digit that forms a number. I know that number coming in from the payload will only ever be between 0 and 100, AND have considered in what situations that might not be the case and what would happen. So it will have a maximum of 3 digits. Indeed if it does have 3 digits the number must definitely be exactly 100. And so rather than using expensive string to integer manipulation functions which add 2k (yes, 2k!) to my sketch it is cheaper to write it out in if statements that calculate it in a “units – tens – hundreds” way working on the basis that the characters 0 to 9 are represented in the ASCII table consecutively.

So oftentimes it’s more computationally efficient to write more lines of code than fewer, which is great for idiots like me who tend towards wanting to put everything in terms of flow charts and IF statements!

There are so many examples of the above I’ve discovered so far, e.g. using a switch statement, whilst looking a little clearer on the page, is worse than using IF statements unless you have over at least 4 cases. The exact detail depends on your sketch and how variables are stored of course.

Arduino helps us by showing us how many bytes your sketch is at compile time. Great for keeping an eye on things as you progress your project.

Aug 14

Arduino, MQTT, OpenHAB and the Ultimate Room Control Panel

Little demo video of the project so far below!

My idea for a room control panel came about after seeing the vastly expensive options on the market, and because we are building a new home!

Lovely! But I can do *far* better, right?

Lovely! But I can do *far* better, right?


I love the brushed stainless steel precision-cut panels they offer – so I plan to make my own.

Not only are the options available a little* over budget, more importantly they don’t come close to addressing my ideals:

* a lot

  • Combine lighting and audio control into one panel. Soft dimming of multiple lighting channels with advanced / user-friendly audio control.
  • Field nodes small enough to be placed in wall back-boxes and controls flush-mounted in the wall.
  • Accessible but autonomous. Should not require changing batteries or worrying about someone hacking the RF wireless protocol. CAT6 and mains powered. RF options with secured MQTT an option, but we have a blank slate with cabling so prefer to go wired.
  • All control to communicate with an automation server (Windows laptop / RPi / whatever) which provides rules that integrate audio, lighting, security, and give me access from out of the home. Must be resilient to server outage; lighting must still work using physical switches.

The audio control aspect is particularly close to my heart:

  • I have always used Squeezebox. Whilst Sonos is more “user friendly” it doesn’t cut the mustard for me!
  • Hardware controls for audio in every room. Physical dials and buttons with tailor-made visual feedback and ergonomic design.
  • Audio to be controlled from anywhere and any device, therefore control panel must show updated volume and status. Volume display using LED ring around a knob (muted colours, no “chav-blue”!)
  • Backlit display showing current artist / track.
  • Discreet display which lights up when you walk past, or move within e.g. 1m of the panel (distance sensors).
  • Presence sensing for added convenience.

You’ll see I have shunned wireless communications and touchscreen control devices. Whilst they might seem sexier, to me nothing beats the reliability of cables and the hard, fast, robustness of a physical knob. Especially when we are controlling digital devices, it’s so hard to get that lovely “feel” when turning things up and down, but we must try!

(Also I have a huge surplus of CAT6 cable 🙂

My budget includes laser cutting some screwless faceplates, and even with this custom work, it’s looking very likely it will still be around 5-10 times cheaper than anything else I’ve seen… and SO much better.

Check out my progress so far!

In this video I’m perhaps unfairly harsh about OpenHAB and provide no detailed information about MQTT, but I’ve spent a great deal of time assessing OpenHAB vs. alternatives like Domoticz, and I’m sold. I believe it will become the glue that will hold the increasingly disparate world of automation together. It provides persistence, data access layers, and a binding for pretty much any automation device or system you care to think of.

It’s true that OpenHAB is daunting for the non-coder, but v2 is set to address these problems. Most importantly for me, OpenHAB has an advanced rule engine and a lovely array of software control interfaces.

MQTT as a transport protocol is a winner; HTTP is clearly not appropriate for sensor networks and REST is for sleeping. I may post about MQTT in more detail later but I’m really satisfied by how sophisticated and simple it is, and I find it highly intuitive. I like the mindset behind MQTT which you can read about here.


Aug 14

A world of home automation opening up

So I became pretty obsessed with home automation. You know, the type where your home detects you walked through the door, turns the lights on, and says through the speakers, “Hello Mat, did you have a nice day?”

Actually the above, whilst it sounds a bit sci-fi, is something I already tested out in my home to great success. My home automation system can now speak to me and tell me things. It’s a fine line tweaking it to only communicate useful things, such as “I see you are getting ready to go out, don’t forget your kitchen window is open”, but it’s important that the automation system doesn’t become a gimmick. For example, and this is something I tested, using a combination of cheap wireless sensors in different rooms allows me to write rules: bedroom door shut, lights off, bathroom detects movement, front door opens, BANG – he is leaving the house. Automatically check windows and if any are left open then speak a message through the home network audio system using Google’s voice servers. Then send a notification to my iPhone.

Sounds far too neat to be true, but it works a treat, and reliably too. It really is “set and forget” once you get the rules right.

Whilst I ditched the “hello Mat” bit spoken through the speakers (it got annoying after a while), you must agree the hallway lights coming on when you enter the home is a rather warm and lovely thing you might want to keep.

Using a combination of cheap and free bits of tech, it’s rather easy to do this*.

* I say easy. It’s easy for the geek or the technically-minded, but sadly out of reach for the technically-challenged at the moment. No doubt this may change in the coming years.

First of all you need to replace your lightswitches with the lovely RF controlled dimmer types available from manufacturers such as Z-Wave / Fibaro, or closer to home, an English company called LightwaveRF who make very cheap multi-way multi-gang dimmer switches that pair with controllers also manufactured by LightwaveRF. These were until recently found in B&Q, I think stock may come back shortly. After playing with those for a while you can stop using the LightwaveRF handheld radio remotes (they are radio, not infrared. That means they work anywhere in the house), lovely as they are, and for £80 buy an RFXtrx which is a little USB device you plug into your laptop or server or Raspberry Pi and it transmits and receives signals and talks to your lights.

Now hook the RFX with a computer running one of the excellent open source automation products, all free of course, and hey presto – you can now control your lights from the nearby park from your iPhone! One-touch access to moods, scenarios, dimmer sliders, you name it.

A lightswitch is an “actuator”. LightwaveRF – and many others – also sell “sensors”, such as PIRs to detect movement in a room, or door sensors, which feed into the system too.

Many home automation products – the one I have settled on is called OpenHab – allow you to integrate with a number of systems you might already own. Network home audio? You bet! OpenHab has a binding for Sonos and Squeezebox. They integrate with Google Voice. No extra cost and only a bit of extra playing to get it working. The world of opportunities now opens up – you can now control your music AND your lights from your light switches…

Actually it turns out that of course the LightwaveRF switches only receive signals, they don’t send them out. They ship with remote controls that can be re-purposed for controlling your volume and play / stop etc., but the lightswitches themselves will clearly need upgrading to the more expensive Z-Wave RF types which have 2-way communications in order to do such a thing. Well I don’t plan to do that because I’m a cheapskate, and more importantly I love the challenge of building my own room audio controller. This gives me a chance to integrate a pretty flush-mount digital display into my walls showing the current playlist.

Next post: the new home.

Aug 14

Arduino – the beginnings of a journey

Warning: geek post to follow.

Anyone who has been unlucky enough to know me over the last 3 weeks will realise my obsession with all things Arduino has got out of hand. From the initial buzz of realising “I can do ANYTHING with one of these things” to the late-night shopping sprees with Amazon sellers who distribute from warehouses in Hong Kong (I placed my 18th Ardunio order in 3 weeks yesterday night at 4am … gladly most of these purchases come in around a quid per unit so it’s not even that expensive a hobby so far), it has been a fun journey so far.

My first stop was to give myself a brief refresher in electronics and coding in C, so I followed some excellent examples from the Arduino “getting started” book. Right, after 13 minutes of making a little circuit that pulses an LED at the speed set by a knob and a few other beginner projects, I thought I should dive right in and do something serious.

I mean *REALLY* serious. A piezo tune generator. #sarcasm

The key array basically sets out the diatonic notes of a scale for 8 notes. The ones following those 8 notes are a random selection of semitones that I snuck in just so that I could program “You are my sunshine”. Musos will understand why.

Next instalment: how to control your hi-fi volume using an Arduino, RF signals, and a rotary encoder!

Here’s the sketch:

// Whack a piezo between 8 and GND
// Comment or uncomment the tune array definitions

int key[] = {261,294,330,349,392,440,494,523,587,622,659,698,784,880,987,1046};

// "You're Just Too Good To Be True"
// int tune[] = {5,5,5,6,5,3,5,0,5,5,5,6,5,3,5,0,5,5,5,6,5,3,5,0,5,5,4,5,4,5,4,0,4,4,3,5,4,3,4,0,4,4,4,4,3,2,3,0,3,3,3,3,2,1,2,0,2,2,2,2,1,1,1,0};

// "You are my sunshine"
int tune[] = {5,8,9,11,0,11,0,0,11,10,11,8,0,8,0,0,8,9,11,12,0,14,0,0,14,13,12,11,0,0,0,0,8,9,11,12,0,14,0,0,14,13,12,11,0,8,0,0,5,8,9,11,0,0,12,9,9,0,11,8,0,0,0,0};

int tunelength = sizeof(tune) / sizeof(int);
void setup() {

void loop() {
int currentnoteindex = 0;
while (currentnoteindex < (tunelength)) { if (tune[currentnoteindex] == 0) { delay(180); currentnoteindex++; } else { tone(8,key[tune[currentnoteindex++]-1],90); delay(180); } } currentnoteindex = 0; }

May 14

I have discovered a new use for chocolate

As an “extreme owl” I often stay awake working in the night time.

Mornings are therefore not enjoyable for me. Even when I have a lie-in I can feel grumpy until the coffee flows.

I’m not sure if this is because my senses are heightened or if they are asleep. Either way, I reckon I am more sensitive than most to changes in light, sound, smell, and definitely taste.

Aside from the obvious side effects of morning hatred such as inability to open eyes and short-lived rage at the world (which incidentally can be extended into a general ratty mood for the rest of the day if some negative external thing happens during this window of opportunity) – aside from this I have another strange symptom.

I can’t put anything in my mouth. No water, no food, not even coffee. I have to be awake for at least 45 minutes before attempting to do this. Is this normal?

Today I discovered an exception: 3g of Dark Chocolate.

Not the sweet caramel substances you find in the newsagent. I mean the kind that you put in your mouth which, if stored in a larder, tastes like a cold, hard lump of nothing for the first few seconds.

This is perfect. The initial shock to the tastebuds (texture, sour, salty, watery) I experience with most other foods makes we want to run for cover.

But chocolate is neutral at first. It is already the right temperature for the mouth before it goes in. Then as it warms the flavour gently develops into something that is neither too sweet nor too bitter. It turns into a warm goo, much like being handed a soft blanket.

It gently wakes up the tastebuds.

Then as it disintegrates it slowly releases more and more interesting natural flavours. In doing so it activates the bitter and the sweet receptors just the right amount if it’s the correct balance of cocoa, cocoa butter, and sugars. It activates the sour receptors shortly after this, and gives them something to think about if the chocolate has a red fruit (cherry, raspberry, or strawberry) note.

The chocolates I like are more naturally fruit-like than nut-like, but even my favourite chocolates have a small amount of nut-like flavour, which also stimulates the salt glands – and we know what that does for saliva.

And all it takes is half a square of good chocolate.

Chocolate, I love you.

Feb 14

I refuse to buy backup software

So, I’m writing a powershell script that:

  • Uses volume shadow service to take a backup of a directory
  • Compresses the above backup using 7zip / whatever
  • Time/Datestamps the compressed backup and copies it off-server to a given location
  • Looks at the above location and deletes backup zips older than a given number of days (i.e. retention period), e.g. keep 30 days of backups
  • But wait, it won’t delete anything unless it knows that a given number of backups exist from the last x days (retention period). After all, if your backups had been failing for 30 days, it would be pretty dumb to delete everything over 30 days old. So the script allows you to set what you deem as a good total number of backups to exist within your retention period in order to delete everything outside of the retention period. Some contingency built in.
  • It connects to your authenticated SMTP server (e.g. Google Mail) to send you an HTML formatted report of exactly what it found in that backup location (filenames alongside their age), whether it detected that recent backups were indeed found, and therefore whether backups older than the retention period were tidied.
  • Obvs, it supports reading / writing to network shares.
  • It supports multiple backup sets per report, using a set of commands like this:

Backup-Tidy 8 6 28 “c:\dir-to-backup” “d:\dir-to-store-zips”
Backup-Tidy 4 2 7 “c:\another-dir-to-backup” “d:\another-dir-to-store-zips”

The arguments for Backup-Tidy:

Backup-Tidy 8 6 28 “c:\dir-to-backup” “d:\dir-to-store-zips” “ForReal”

read as follows: “If you find 8 files from the last 6 days, then remove all files over 28 days old”

  • The “ForReal” is a safety belt. Without this argument, the detailed report email is generated but the backups and deletions don’t get done.

And the pretty HTML report looks like this:

Mat’s Backup Tidy Report – 22/02/2014 04:00:36

\\internal.hazymat.co.uk\root\Backup\Mat’s Files [retention period = 28 days]

Recent backups were NOT found. We needed at least 8 zip files 6 days old or less; there are only 3.
We didn’t touch any files; it wasn’t safe to delete anything.

Name Size Age
backup-log-2014.02.19-193402.txt 8k 2d
images-2014.02.19-193402.zip 930m 2d
images-2014.02.18-193409.zip 870m 3d
images-2014.02.17-193355.zip 840m 4d
Total size: 2.6g


\\internal.hazymat.co.uk\root\Backup\Big Files [retention period = 7 days]

Recent backups found. We needed at least 5 zip files 7 days old or less; there are 7.
Old files were removed: jolly good.

Name Size Age
backup-log-2014.02.19-193402.txt 8k 0d
images-2014.02.21-193402.zip 930m 0d
images-2014.02.20-193409.zip 870m 1d
images-2014.02.19-193355.zip 840m 2d
images-2014.02.18-193402.zip 930m 3d
images-2014.02.17-193409.zip 870m 4d
images-2014.02.16-193355.zip 840m 5d
images-2014.02.15-193355.zip 840m 6d
Total size: 6.12g

Feb 14

One year today

I wanted to write an eloquent status update reflecting my thoughts, beliefs, and status one year on.

But I am so besieged with grief, and so incapacitated by regret that I cannot.

Last night I walked his last journey from Lilac Ward Tolworth Hospital to the tree. It broke me that I could walk back, get in my car and drive home again to a warm home with loved ones.

* Please see my previous post “one week today”