The cost of keeping your cool

As the UK basks in record temperatures (“Scorched Britain”, “Havoc on hottest day for a DECADE”, “ travel disruptions and health fears as temperatures soar”, “Record-Baker”, “Heatwave UK”), I’ve been running the air conditioner at home rather more frequently in a desperate attempt to avoid melting.

I was intrigued to know what it costs. According to the label on the side of the AC, it uses 930 watts of power. UK Power has a handy running costs calculator, which does the work for me.

Assuming I use the AC for 6-7 hours a day for a month, it would cost me an extra £19.08 to keep cool*:

AC cost calculator

Not bad! Especially as it’s unlikely this heatwave will last very long at all (certainly not 30 days), so the cost will be significantly less than that. In fact, expenditure is still going to be lower than in the middle of winter, based on First Utility’s handy usage chart:

Electricit usage

And since I use less electricity than the average house (even though I’m usually working from home), I can relax in the cool, cool, breeze coming from the AC.

Comparible electricity spend

Now all I need is a fridge full of cold beers.



* I am of course ignoring the environmental impact of this, but there’s little I can do until I am able to move to a house built on more sound ecological principles.

Posted in Personal, Planet, Research | Tagged , , | 1 Comment

It’s Pebble Time

I backed the Pebble Time Kickstarter project, and my watch arrived a couple of weeks ago. It’s a great device and the first “smart watch” I’m happy wearing.

I’ve been critical of the wearable space. Back when Samsung and Google were first making noises about smartwatches, I thought the design was wrong and the devices themselves needed more battery, smaller size, less weight. I tried the Sony Smartwatch 2, but it ended up in a drawer as the frequent charging (and cumbersome USB port) was too much hassle. I looked at the Apple Watch, but I’m annoyed enough at charging my phone daily, I don’t need another thirsty device.

When the Pebble Time was announced, I was convinced. A few things won me over: the “up to a week” battery life, colour display, and the microphone. The original Pebble E-Paper Watch was nice, but this third iteration from Pebble convinced me. For a run-down of the differences between versions, see Pebble Time vs Pebble Steel vs Pebble.

So is the Pebble Time any good?

Pebble Time Box

The box felt like something Amazon would ship; very much like Kindle packaging. That actually is a good summary of the feel of the device itself: “Kindle-like”. It’s not premium, but it’s functional. 

The hardware is nice and ‘watch-like’: it does not look particularly oversized, and it fits on the wrist properly, especially compared to the Sony Smartwatch 2.

Setup was really easy. Plug in, turn on, connect to phone, up and running.

After a couple of weeks I seem to be getting 5-6 days battery life between charges. The choice of watch faces seems to make a difference: watch faces that update frequently (second hand, or weather reports) naturally chew through more battery than the less-featured faces.

Pebble Watch Face

Changing watch face is one of the understated killer features of this device. It’s nice to pick and choose based on mood. I’m currently a big fan of “DIN Time”, “Weather Land”, and “91 Dub”.

The notifications are good, and less problematic than they were with the Smartwatch. This is in part because Apple Mail’s VIP feature is responsible for delivering only important mails to my wrist, and because it’s easier to control what you see by turning off iOS notifications.

The much-heralded timeline functionality is nice but to be honest I haven’t much used it.

One annoyance is that a lot of meetings show on my watch even though they are cancelled. I’m assuming this is a problem with corporate calendaring systems rather than the Pebble but it’s still irritating to be buzzed for an event that isn’t happening.

Another annoyance is that iOS’ Do Not Disturb capability is ignored by the watch, so even if the phone makes no noise when a new notification arrives, you can be sure the watch will vibrate.

Another problem is that when your phone rings the pebble gives the option to accept / cancel a call, but the first time I accepted a call on the watch, the watch kept vibrating until I hung up. This seems to have been a one-off glitch as I can’t replicate it.

The Pebble website is a disappointment, all style over substance. The pebble watch faces and the pebble apps are killer use cases, but there’s no easy way to see what’s available. The website that powers the app store in the Pebble iOS app is but browsing is blocked. You can go to and but there’s no search. You can search the app store via which recreates the phone app UX, but it’s not ideal.

Reddit’s /r/pebble is a good source of community and I found a few nice apps and watch faces from recommendations there.

How is the watch for developers?

In Mean Time to Hello World, I talked about the importance of developers being able to be productive quickly:

if you want developers to adopt your platform, provide the simplest possible path to getting a trivial application up and running in the minimum amount of time.

Custom WatchfaceAnd that’s what Pebble has done. The SDK is simple to install, and the tutorials are straightforward. I was able to get a simple watch face built in no time at all.


brew install pebble/pebble-sdk/pebble-sdk
pebble new-project foo
cd foo
pebble build && pebble install


Pebble QEMU Simulator

With the built-in simulator it’s easy to see results without having to debug on-phone. Simple.

Despite the niggling annoyances, this is a really credible smartwatch and a great example of how innovation can come from a scrappy startup just as easily as from an industry behemoth. It’s amazing that Pebble hit a feature/functionality sweet spot that the likes of Samsung, LG, and even Apple have struggled to match.

Arguably as batteries improve then the Apple Watch and myriad Google Wear watches will overtake Pebble, but for now I’ll take a week without charging over any number of wearable gimmicks.

Posted in Uncategorized | Tagged , , , , | 1 Comment

Office 365

I want to give Microsoft Office 365 a chance. But it’s just a terrible and incomplete experience. Herein my tale of woe.


I received a link to a folder from a co-worker. I need to keep up-to-date on the files within it. Great news, there’s a “Follow” button that looks like it will do the trick:

office 365 follow

Except, when I click on it, I get an error:

office 365 follow errror

Ok, worst case, I guess I can just sync the folder to my local filesystem and monitor it that way. There is a big shiny sync button that leads to this:

office 365 sync

Well, it makes sense that I’d need to download a desktop app to perform the sync, like with Dropbox. What happens when I click “Get the OneDrive for Business app that’s right for me”?

onedrive fail

“Only on a PC”? That’s … disappointing.


Microsoft really should know that table stakes for cloud-hosted services is that the clients work seamlessly across multiple devices. After this experience, they’ll have a really hard job to convince me to take another look in a few years’ time.

Posted in Uncategorized | Tagged , , | Comments Off

Mastering the mobile app challenge at Adobe Summit

I’m presenting a 2 hour Building mobile apps with PhoneGap Enterprise lab at Adobe Summit in Salt Lake City on Tuesday, with my awesome colleague John Fait. Here’s a sneak preview of the blurb which will be appearing over on the Adobe Digital Marketing blog tomorrow. I’m posting it here as it may be interesting to the wider Apache Cordova community to see what Adobe are doing with a commercial version of the project…


Mobile apps are the next great challenge for marketing experts. Bruce Lefebvre sets the the scene perfectly in So, You Want to Build an App. In his mobile app development and content management with AEM session at Adobe Summit he’ll show you how Adobe Marketing Cloud solutions are providing amazing capabilities for delivering mobile apps. It’s a must-see session to learn about AEM and PhoneGap.

But what if you want to gain hands-on practical experience of AEM, PhoneGap, and mobile app development? If you want to roll up your sleeves and build a mobile app yourself, then we’ve got an awesome lab planned for you. In “Building mobile apps with PhoneGap Enterprise“, you’ll have the opportunity to create, build, and update a mobile application with Adobe Experience Manager. You’ll see how easy it is to deliver applications across multiple platforms. You’ll also learn how you can easily monitor app engagement through integration with Adobe Analytics and Adobe Mobile Services.

If you want to know how you can deliver more effective apps, leverage your investment in AEM, and bridge the gap between marketers and developers, then you need to attend this lab at Adobe Summit. Join us for this extended deep dive into the integration between AEM and PhoneGap. No previous experience is necessary – you don’t need to know how to code, and you don’t need to know any of the Adobe solutions, as we’ll explain it all as we go along. Some of you will also be able to leave the lab with the mobile app you wrote, so that you can show your friends and colleagues how you’re ready to continuously drive mobile app engagement and ROI, reduce your app time to market, and deliver a unified experience across channels and brands.

Are you ready to master the mobile app challenge?


All hyperbole aside, I think this is going to be a pretty interesting technology space to watch:

  • Being able to build a mobile app from within a CMS is incredibly powerful for certain classes of mobile app. Imagine people having the ability to build mobile apps with an easy drag-and-drop UI that requires no coding. Imagine being able to add workflows (editorial review, approvals etc) to your mobile app development.
  • No matter how we might wish we didn’t have these app content silos, you can’t argue against the utility of content-based mobile apps until the mobile web matures sufficiently so that everyone can build offline mobile websites with ease. Added together with over-the-air content updates, it’s really nice to be able to have access to important content even when the network is not available.
  • Analytics and mobile metrics are providing really useful ways to understand how people are using websites and apps. Having all the SDKs embedded in your app automatically with no extra coding required means that everyone can take advantage of these metrics. Hopefully this will lead to a corresponding leap in app quality and usability.
  • By using Apache Cordova, we’re ensuring that these mobile app silos are at least built using open standards and open technologies (HTML, CSS, JS, with temporary native shims). So when mobile web runtimes are mature enough, it will be trivial to switch front-end app to front-end website without retooling the entire back-end content management workflow.

Exciting times.

Posted in Computing, Planet, Work | Tagged , , , , , | Comments Off

Login problems on Mac OS X Snow Leopard

These are notes from a tech support call with my parents last night, saved here for the next time stuff breaks.

If you’re running Mac OS X Snow Leopard (and possibly other versions), you may find you can’t log in. Symptoms are:

  • You click on your username and enter your password
  • The login screen is replaced by a blue screen for a short time
  • You are returned to the login screen.

After searching the interwebs I found Fixing a Mac OSX Leopard Login Loop Caused by Launch Services. It seems the problem is caused by corrupted cache files (which could be caused by the computer shutting down abruptly, or may just be “one of those things” that happens from time to time). This gave me enough information to come up with these “easy” steps to resolve it:

  1. Log in to the Mac as a different user*
  2. Press cmd-space to open Spotlight, type “Terminal”, and click on the Terminal application.
  3. Work out the broken user’s username by typing: ls /Users and look for the appropriate broken account name e.g. franksmith or janedoe.
  4. Find out the user ID of the user from the previous step by typing: id -u janedoe which will print a number something like 501
  5. Delete the user’s broken cache files. In the following command, be sure to substitute the correct username (in place of janedoe) and the correct user ID after the 023 (in place of the 501): su -l janedoe -c ‘rm /Library/Caches/*’ (be very careful with this, you don’t want to delete the wrong things).
    • If you’re super-confident in figuring out backticks you could of course skip step 4 and instead of step 5 do: su -l janedoe -c ‘rm /Library/Caches/`id -u janedoe`.*’
  6. Test by logging in to the troublesome user account.
Note that if you had any apps configured to launch at login, you may need to re-add these.

* This makes me think it’s good practice when setting up a Mac to always set up an extra user account, just in case stuff breaks.

Posted in Computing, Planet, Technology | Tagged , , , , , , | Comments Off

Super markets

I’ve been using our local Lidl recently, because their policy of regularly baking throughout the day means I can pick up fresh croissants and pains au chocolat whenever I go, whereas the local Tesco, Sainsburys, and Waitrose have usually run out by mid-morning. Are the so-called discount supermarkets really cheaper than the mainstream supermarkets? Here’s the result of one unscientific survey.

This morning I checked my till receipt against Tesco online.
There are some items that cost the same regardless of which supermarket (fabric softener, fresh orange juice). There are some items that don’t have direct equivalents across stores, so price comparisons aren’t possible. And there are some items where the price is not significantly different (fresh milk, toilet paper).
On today’s basket of comparable items, Lidl was £10.62 cheaper (costing £18.46 instead of £29.08).
There are some real eye-openers. Eggs are 1.5x more expensive at Tesco. Fresh vegetables were often almost twice the price at Tesco. And what about my fresh croissants and pains au chocolat? £0.29 and £0.39 at Lidl, vs £0.80 each at Tesco. Over twice the price — on today’s shop, buying just these alone saved me £4.70. And they were fresh from the oven, still warm when I got them home.
Posted in Personal, Planet, Research | Comments Off

Netflix versus Blu-Ray

Which is better … streaming content or buying shiny plastic discs?

It’s surely an unfair comparison because the constraints of a service like Netflix (delivering uninterrupted video over a range of network qualities) are very different to delivering content on physical media. But I was looking to justify my purchase of Battlestar Galactica (BSG) on Blu-Ray so here’s some screen captures as a very unscientific comparison. The screen captures are only approximately the same frame on each media, but should be close enough for a rough comparison.

The Netflix screen captures were done streaming on a fibre internet connection using a Mac with Silverlight installed, but with no other adjustments. The Battlestar Galactica Blu-Ray claims to be “High Definition Widescreen 1.78:1” (but doesn’t define high definition further … is it supposed to be 720p or 1080p?).

Here’s the two sources at 100% magnification (click for full-size):

Battlestar Galactica Netflix vs Blu-Ray 100%

And at 200% magnification:

Battlestar Galactica Netflix vs Blu-Ray 200%

And at 300% magnification:

Battlestar Galactica Netflix vs Blu-Ray 300%

In this instance, Netflix does a pretty good job, although it looks a little blurry. BSG is probably a bad choice for showing off Blu-Ray in comparisons: it’s heavily processed to make it look grainy like film, and almost every single scene is very dark. I doubt it was shot on the latest HD cameras, either (the miniseries first aired in 2003, the full series began in 2004). But since more recent series like Game of Thrones aren’t available on Netflix, this is the best I’ve got for comparisons at the moment.

Of course, even if the Blu-Ray and Netflix versions were identical, a big benefit of those shiny plastic discs is they can be used off-line and don’t require a continuing subscription.

Posted in Personal, Planet, Research, Technology | Tagged , , , , , , | Comments Off

Home Automation: buttons on the desktop

I want a button on my Mac’s desktop to turn on or turn off the lights I have controlled by the Raspberry Pi. Here’s what I’ve got so far.

First, I wrote a script on the Pi to turn the lights on:

/usr/bin/tdtool --on 1
/usr/bin/tdtool --on 2
/usr/bin/tdtool --on 3

For everything here, I also wrote the equivalent to turn the lights off.

Next, I tested running the script via SSH from my Mac:

ssh -f user@raspberrypi.local /home/user/ &>/dev/null

You can use the Applescript Editor to make pseudo-apps, so I wrote an Applescript to execute the SSH command:

tell application “Terminal”

    do script “ssh -f user@raspberrypi.local /home/user/ &>/dev/null”


end tell

delay 15

tell application “Terminal”


end tell

I saved this as file format “Application” in my Applications folder, then dragged it to my desktop (an alias is automatically created, leaving the original in Applications). I can now double-click the app and the script runs, or launch it from Spotlight or the wonderful Alfred:
It works but it’s ugly as I have a Terminal window pop up for ~ 15 seconds. There must be a better way.
After some searching, I came across Use automator to create X11 shortcuts in OSX. It’s similar to the Applescript trick, but uses Automator instead, so there’s no need for Terminal. I put the SSH command into the “Run shell script” workflow action, and saved it as an application:
It works! Now I can turn the lights on or off without the Terminal window popping up.
There’s a couple of issues:
  • The tdtool command takes a long time to execute on the Pi. It takes about three seconds for all three plugs to switch, whereas the smart plug remote has an “all on / all off” button which is instant. I need to find out why the command is so slow, and/or a way to control all three in one go.
  • I don’t really want “Lights on” and “Lights off” apps, I want a single app that toggles the state. This could be done by making the server-side script smarter, but I’d really like the app icon to reflect the status of the lights too.
Room for improvement, but this is good enough for now.
Next up: automating sunsets.
Posted in Computing, Home Automation, Personal, Planet, Research | Tagged , , , , , , , | Comments Off

Home Automation: Turn it on again

In Pi three ways I wrote:

what happens when you combine an RF transmitter, smart sockets with RF receivers, and a Raspberry Pi?

I’m still finding out what can be done, but this is what I’ve discovered so far.


This is what I bought:

bye bye standby kit

First, I set up each of the smart plugs, and paired them with the remote control.

This is already a big improvement: my home office has bookshelves filled with LED lights, but with inaccessible switches. Being able to turn them all on and off from the remote is awesome, but I’d really like them to turn on automatically, for example at sunset. So I need some compute power in the loop. Time for the Pi.

The Pi is running Raspian. I followed the installation instructions for telldus on Raspberry Pi. See also R-Pi Tellstick core for non-Debian instructions.

Next I tried to figure out the correct on/off parameters in tellstick.conf for the smart plugs. The Tellstick documentation is a bit sparse. Tellstick on Raspberry Pi to control Maplin (UK) lights talks about physical dials on the back of the remote control; sadly the Bye Bye Standby remote doesn’t have this.

Each plug is addressed using a protocol and a number of parameters. In the case of the Bye Bye Standby, it apparently falls under the arctech protocol, which has four different models, and each model uses the parameters “house” and sometimes “unit”.

Taking a brute-force approach, I generated a configuration for every possible parameter for the arctech protocol and codeswitch model:

for house in A B C D E F G H I J K L M N O P ; do
    for unit in {1..16} ; do
      cat <<EOF
device {
   id = $count
   name = "Test"
   protocol = "arctech"
   model = "codeswitch"
   parameters {
      house = "$house"
      unit = "$unit"

I then turned each of them on and off in turn, and waited until the tellstick spoke to the plugs:

count = 0
for house in A B C D E F G H I J K L M N O P ; do
    for unit in {1..16} ; do
        echo "id = $count, house = $house, unit = $unit"
        tdtool --on $count
        tdtool --off $count

This eventually gave me house E and unit 16 (and the number of the corresponding automatically generated configuration, 80):

tdtool --on 80
Turning on device 80, Test – Success

bye bye standby plugs

But this only turned on or off all three plugs at the same time. I wanted control over each plug individually.

I stumbled upon How to pair Home Easy plug to Raspberry Pi with Tellstick, and that gave me enough information to reverse the process. Instead of getting the tellstick to work out what code the plugs talk, in theory I need to get the tellstick to listen to the plug for the code.

So this configuration should work, in combination with the tdlearn command:

device {
    id = 1
   name = "Study Right"
   protocol = "arctech"
   model = "selflearning-switch"
   parameters {
      house = "1"
      unit = "1"

However this tiny footnote on the telldus website says: 

4Bye Bye Standby Self learning should be configured as Code switch.

So it seems it should be:

device {
    id = 1
   name = "Study Right"
   protocol = "arctech"
   model = “codeswitch"
   parameters {
      house = "1"
      unit = "1"

… which is exactly what I had before. Remembering of course to do service telldusd restart each time we change the config, I tried learning again:

tdtool --learn 1
Learning device: 1 Study Right - The method you tried to use is not supported by the device

Well, bother. Looking at the Tellstick FAQ:

Is it possible to receive signals with TellStick?

TellStick only contains a transmitter module and it’s therefore only possible to transmit signals, not receive signals. TellStick Duo can receive signals from the compatible devices.

So it seemed like I was stuck with all-on, all-off unless I bought a TellStick Duo. Alternatively, I could expand my script to generate every possible combination in the tellstick.conf, and see if I can work out the magic option to control each plug individually. But since there are 1 to 67108863 possible house codes, this could take some time.

Rereading Bye Bye Standby 2011 compatible? finally gave me the answer. You put the plug into learning mode, and get the Tellstick to teach the right code to the plug by sending an “off” or an “on” signal:

tdtool --off 3

So setting house to a common letter and setting units to sensible increments, I can now control each of the plugs separately.

Next up: some automation.

Posted in Computing, Home Automation, Planet, Research | Tagged , , , , | Comments Off

Mobile modem

I was trying to get a handle on how much mobile data download speeds have improved over the years, so I did some digging through my archives. (The only thing I like more than a mail archive that spans decades is a website that spans decades. Great work, ALUG!) Here’s some totally arbitrary numbers to illustrate a point.

Sony-Ericsson t68i

In response to A few Questions, this is what I wrote in May 2002:

[Nokia] 7110 works fine with IR (7110 has a full modem). The 7110 supports 14.4bps
connections, but I bet your telco doesn’t :-)

That should have been 14.4kbps (14,400bps). In 2002 the phones were ahead of the network’s ability to deliver. In 2014, not much has changed.

In GPRS on Debian, this is what I wrote in November 2002:

I finally took the plunge and went for GPRS [..]  (up to 5x the speed of a dialup connection over a GSM mobile connection)

Remember when we did dialup over mobile connections? GSM Arena on the Sony-Ericsson T68i states 24-36 kbps. I’m assuming I got the lower end of that.

Nokia 3650

In 2003 I was using a Nokia 3650 GPRS connection. GSM Arena on the Nokia 3650 states 24-36 kbps. Let’s be generous and assume reality was right in the middle, at 30 kbps.

In 2004 I got a Nokia 6600, which according to GSM Arena could also do 24 – 36 kbps. It was a great phone, so let’s assume the upper bound for the 6600.

In 2008 I upgraded to 3G with the Nokia N80, and wrote:

3G data connections are dramatically better than GPRS

… but sadly I didn’t quantify how much better. According to GSM Arena, it was 384 kbps.

That’s a pretty good and pretty dramatic speed increase:

Mobile download speeds 2003-2008

Nokia N900

But then in 2009 I was using the Nokia N900 (and iPhone, HTC Hero, Google Nexus One, …). GSM Arena on the Nokia N900 states a theoretical 10Mbps … quite the upgrade, except O2 were limited to 3.6 mbps.

In 2012 I was using the Samsung Galaxy SII. GSM Arena on the Samsung Galaxy SII promises 21 mbps.

And now the Sony Xperia Z Ultra supports LTE at 42 MBPS and 150MBPS. Sadly, the networks don’t yet fully support those speeds, but if they did, the chart would be truly dramatic. 2003-2008 starts to look like a rounding error:

Mobile download speeds 2003-2013

I don’t need to use a modem or infrared, either. Things have really improved over the last twelve years!

(This post is probably best read in conjunction with Tom’s analysis of Mobile phone sizes.)

Posted in Computing, Mobile Tech, Planet, Research | Tagged , , , , , , , | Comments Off