The HP Stream as a cheap open-source Chromebook

I really like Chromebooks but I must admit there are times when I’m travelling and I’d like a more conventional offline setup.

Also one of the attractions of the original wave of Chromebooks were their price and I feel that the more recent editions have been price comparable to mid-range laptops.

Finally I read a few pieces warning against slipping into a monopoly of convenience around the Chrome browser so I thought it would be great to have a Chromebook that essentially ran Firefox.

I chose the HP Stream as the cheapest laptop that people mentioned that had Linux running on. It’s plastic and it’s proud of it, I bought one in an aquamarine blue. Trying one out in a store it has a good sized keyboard with only one quirk around the enter key which a bit smaller than the typical UK keyboard and has a hash key right above it.

That plastic shell means it is light but it is durable to have been shoved in a few travel bags and transported round. It has a custom power adaptor which is a pain when you’re travelling. USB-based charging would have been much better.

Installing Linux

I chose Elementary as my distribution, partly out of curiosity but also because people mentioned that it was an opinionated take on what a user-friendly operating system might be.

I had to read how to enter the Stream’s BIOS on the internet and set it to boot from a USB but after that it was pretty plain sailing to get the Elementary ISO onto the USB and for the Stream to load it.

Everything worked first time and I had the new OS completely replace pre-installed Windows and also encrypt the drive, which seems important if you are going to be travelling with the laptop and thus more likely to lose it or have it stolen.

Connecting to Wifi was painless as was the upgrade process.


Elementary takes a very different approach to all the other Linux distributions with the UI essentially hiding all the normal Linux details. It has its own app store and upgrades of managed packages are seamless and mostly seem to complete without the need for restarts.

You can get to the terminal and install packages via Debian-style packages if you want to but Elementary mostly shines when you stick to the GUI and the apps.

For the kind of consumer electronic experience I wanted Elementary was an excellent choice. The only real problem I encountered was the classic issue of the OS not suspending when the laptop lid was closed, instead I had to manual suspend and then close the lid. This has subsequently been fixed in a subsequent update and currently the whole OS feels like what you’d expect from a modern system.


I am an absolute tab monster when it comes to browsers. I rarely have less than 40 tabs open in each browser and I have been known to use multiple windows on top of this.

My Chromebooks have struggled in the past and I’ve had to use the Task Manager to figure out where the CPU and memory are going in terms of the sites I use.

The situation was similar with the Stream. When I run Chrome and Firefox the system struggled and the battery ran flat quickly. I’ve since stuck to just Firefox and tried to limit myself to a set of about 15 to 20 tabs. This has been stable and has given me a few days worth of web browsing per charge.


When I started experimenting it would have been hard to say that I really had a better experience using my setup compared to a Chromebook. As we head towards Christmas, almost a year into the experiment, I’m now starting to think that I’d prefer to take the machine that would allow me to use git and my choice of text editor if I wanted. Firefox is a great choice for most of my daily websites and both of the machines have encrypted drives.

Elementary isn’t quite consumer electronics and the Stream is probably the wrong side of the price/quality divide but its actually the flexible machine I want to talk as I visit family and friends over the holidays.

Gadgets, Programming, Python

Creating the Guardian’s Glassware

For the last two months on and off I’ve been developing the Guardian’s Glassware in conjunction with my colleague Lindsey Dew.

Dealing with secret-pre-alpha hardware has at times being interesting but the actual process of writing services using the Mirror API is actually pretty straight-forward.

Glass applications are divided into native, using the Glass SDK, and service-based Glassware using Mirror. Mirror is built on web-friendly technologies such as HTTP, JSON and OAuth2. It also follows the Google patterns for APIs so things like authentication, discovery and the client libraries are all as you would expect if you’ve used a modern Google API before.

For our project, which was focussed on trying to create a sensible, useful newsfeed to Glass, we went with Mirror. If you want to do things like geolocation or picture and video upload then you’ll want to go native.

For various reasons we had a very narrow initial window for development. Essentially we had to start and finish in May. Our prototyping was done with a sample app from Google (you can use Mirror without an actual device), the Mirror playground and a lot of imagination.

When we actually got our Glass devices it took about a week to get my head round what the usecase was. I was thinking that it was like a very lightweight mobile phone but it is much more pervasive with lots of light contact points. I realised that we could be more aggressive about pushing information out and could go for larger sets of stories (although that was dialled back a bit in the final app to emphasise editorial curated content).

Given the tight, fixed deadline for an unknown product the rest of the application was build using lots of known elements. We used a lot of the standard Glass card templates. We used Python on Google App Engine to simplify the integration service and because we had been building a number of apps on that same stack. The application has a few concerns:

  • performing Google Authentication flow
  • polling the Guardian’s Content API and our internal Notification platform
  • writing content to Mirror
  • handling webhook callbacks from Mirror
  • storing a user’s saved stories

We use Content API all the time and normally we are rendering it into widgets or pages but here we are just transforming JSON into JSON.

The cards are actually rendered by our application and the rendered content is packaged into the JSON along with a text representation. However rendering according to the public Glass stylesheet and the actual device differed, and therefore checking the actual output was important.

The webhooks are probably best handled using deferred tasks so that you are handing off the processing quickly and limiting the concern to just processing the webhook’s payload.

For the most part the application is a mix of Google stock API code and some cron tasks that reads a web API and writes to one.

Keeping the core simple meant it was possible to iterate on things like the content mix and user interactions. The need to verify everything in device served as a limiting factor.

Glass is a super divisive technology, people are very agitated when they see you wearing it. No-one seems to have an indifferent opinion about them.

Google have done a number of really interesting things with Glass that are worth considering from a technology point of view even if you feel concerned about privacy and privilege.

Firstly the miniaturisation is amazing. The Glass hardware is about the size of a highlighter and packs a camera, memory, voice synth, wifi and bluetooth. The screen is amazingly vivid and records and plays video well. It has a web browser that seems really capable of standard HTML rendering.

The vocal recognition and command menus are really interesting and you feel a little bit space age when you fire off a Google query and get the information you’re looking for read back to you in seconds.

Developing with the Mirror API is really interesting because it solves the Android fragmentation issue. My application talks to Mirror, not to the native device. If Google want to change the firmware, wire protocol or security they can without worrying about how it will affect the apps. If they do have to make breaking changes then can use the standard webapi versioning they already use.

Unlike most of the Guardian projects this one has been embargoed before the UK launch but it is great to see it out in the open. Glass might not be the ultimate wearable tech answer; just as the brick phones didn’t directly point to the iPhone. Glass is a bold device and making the Guardian’s journalism available on a new platform has been an interesting test of our development processes and an interesting challenge to the idea of what web-capable devices are (just as the Pixel exposed some flaky thinking about what a touch device is).

What will be interesting from here is how journalists will use Glass. Our project didn’t touch on how you can use Glass to share content from the scene, but the Glass has powerful capabilities to capture pictures and video hands-free and deliver it back to desk editors. There’s already a few trials planned in less stressful feature pieces and it will be interesting to see if people find the interface intuitive and more convenient that firing up their phone.


The Doxie handheld scanner

Doxie makes handheld scanners, which seemed the perfect replacement for my flatbed scanner that is currently without working drivers for any modern OS.

I opted for the DoxieOne even though my scanning is primarily for Linux and there it wasn’t going to use all the integration and software the device comes with.

Doxie’s failure to integrate with Linux is a bit baffling but the basic behaviour is absolutely acceptable. It connects as a standard storage device by USB and you can just use all your usual tools against the device’s drive.

The scans produced are good quality and unlike a flatbed it will scan any length of document as long as it is roughly A4 or less in width. Of course you can’t use it to scan books (although there is a mini-flatbed version) if that matters to you.

The only real difficulty in using the Doxie is that an slight misalignment when you first engage the roller can get very pronounced by the end of the scan and the result is a picture at an angle that is hard to fix up in an image editor. If I realise that something is feeding incorrectly I tend to rescan as it is easier.

I was looking for a portable scanner that is easy to store and interact with and the Doxie meets the bill in an elegant way.


Using Linux and WD’s My Box Live

For a while I’ve had a hankering to be able to share content (mostly music) between my various laptops via a network drive, mostly to avoid having to either attach a drive or waste laptop SSD space. A cursory look through Amazon gave me Western Digital’s My Book Live, which seemed compatible with Ubuntu while mostly being presented as an OSX/Windows product. However the official line is actually “if it works with Linux great, if not we don’t support it”.

Actually getting things working was harder than I had anticipated, if I had a Ethernet connected computer switched on then the drive appeared normally however as soon as I switched off the computer then the drive disappeared as well, presumably meaning that the drive was being shared via mesh networking rather than being available to the Wifi devices as a first-class network citizen.

Some online comments suggested that the issue was that the device was not using a static IP, so I went into the settings and changed that. While in Static IP mode the drive started to give a warning it wasn’t connected to the internet, which presumably is something to do with port forwarding for the WD2GO service which also requires some router config. Despite this the drive was available once the static IP binding was done. However any music player (Rhythmbox and Banshee) that tried to connect to the drive failed to connect and there didn’t seem to be a way to provide the required anonymous login.

The final stretch was helped by this post about mounting network drives, on mounting the drive manually it was possible to access the new drive and generate playlists for the new drive. I didn’t want to edit fstab for this so I’m think of creating aliases for the mounting and unmounting operations.

I am now able to share my music collection to my Ubuntu laptop but it has not been a simple experience and I do think WD are short-sighted in not making the operation smoother. Linux may not be a massive market but it doesn’t seem that complex to support it better, if nothing else in the FAQ for the product.


Wifi extension using Solwise power adaptors

I have a problem in my building of having many competing wifi networks, having tried upgrading my router and also scanning the networks to try and find the least used channels I decided that the only way to improve things was to try a wifi extender. My initial plan was to try a range extender but figuring that my problem was congested airspace I thought I might give powerline transmission a go instead since at least my electrical cabling ought to be mine alone.

I’ve been kind of aware of powerline transmission from former colleagues and the tech publications but I have to say that I don’t know how it works and it feels kind of magical right now. After looking at some recommendations on Amazon and BE forums I selected a package by Solwise and bought it direct from them but via Amazon Marketplace for convenience.

Setup wasn’t complicated but wasn’t exactly plug and play either. Contrary to what I had read it was perfectly possible to use the adaptors in gang plugs which was helpful in getting the pairing and initial connectivity to work. There is a helpful leaflet in the package that shows you how to pair the adaptors but I seemed to be struggling to get the individuals into pairing mode rather than resetting. In the end I think I put the extender into pairing mode first and then the adaptor that was going to connect to the router.

Once they were paired then getting access going was as simple as connecting a ethernet cable to the router. LEDs indicate whether the connection is being shared or not but I would recommend connecting to the default unprotected wifi network first to make sure everything is working.

Setting up the SSID and password was again a little more involved than I expected, there was another leaflet that explains the whole process and the easiest way to do the setup is by connecting a laptop directly via Ethernet cable. However at one stage I was modifying my laptop’s IP address to get it to connect to the in-built webserver which is fine for me but I wouldn’t want to be explaining that process over the phone on parent support.

With the setup up done then the whole thing works really well, the adaptors give a great signal and fast connections, transforming my previously flaky connections for the PS3 and AppleTV. The extending adaptor runs too hot for my liking but you can just choose to unplug it. A pretty cheap solution to my problem.


A Kindle and not an iPad?

I had been waiting for the Apple Tablet for a long time. Although I had been mulling the Sony E-Reader for a while there was no way I was going to buy anything until I saw what was behind all the rumours.

Then came the big iPhone… well it may be a sound consumer electronic device but it wasn’t what I was looking for. Namely I wanted to read books and ideally I wanted to recharge less than once a week.

But in the end I didn’t go back to the Sony, instead I ordered a Kindle from across the pond, complete with US power adaptor. So what was I thinking?

Well firstly I know the Kindle is DRM and platform-lock-in bad. Strangely the iPad being based on the iPhone OS and being locked down made this an easier choice. Sony devices are no less proprietary if they are actually the market leader.

In these terms I think consumers actually need to put pressure on both Apple and Amazon to play fair with them. After all Amazon opened up the music market from Apple’s iTunes DRM, hopefully with the advent of the iPad Amazon may have to consider opening up the Kindle to ePub books.

In the end the thing that really convinced me about the Kindle was actually the Kindle for PC software. Being able to download the software and play around with the Amazon ordering system really helped, in fact if they already had a Kindle of OSX I may not have even ordered the physical device because the software actually delivered a reading experience I enjoyed.

Friends had complained about the poor experience of buying books for the Sony reader and as a heavy Amazon consumer already I am already in tune with the Amazon experience and have the necessary accounts.

Since getting the Kindle I have been impressed with the idea of having the books licensed (unfortunately) to an account that is then synchronised between all the Kindles you’re reading. I like being able to read a few pages on the PC and then carry on where I left off on the tube. That’s a nice feature that is a bit unique at the moment (although I am open to the idea of having multiple sets of ebook software).

I bought the smaller Kindle (not the DX) as frankly the iPad’s full colour and touch screen mean that I didn’t fancy paying the same amount for something that is much more limited. It does mean that PDFs don’t have enough screen space and the lack of a zoom is frustrating. However a big plus is the free wireless, paying a subscription for the iPad was unappealing and the ability to go and look things up in Wikipedia from the Kindle is not getting old yet.