Planet ALUG
January 28, 2012
If you use a computer for any amount of time, you may find some backlighting for your computer screen is beneficial.
I couldn’t find any medical research that says one way or another whether it’s a good thing or not, though I did find one article which states “one of the recommended tips for reducing computer eye strain is to control the screen glare caused by both indoor and outdoor lighting” (Reduce eye fatigue by backlighting your monitor).
I thought I’d give it a try. Via hackaday I read about the awesome Ikea Dioder light strips; the white 4-piece strips are now £19.99, reduced from £40, which makes them a bit of a bargain. So I snapped some up on a recent trip to Ikea, and so far I’m impressed.
Here’s my laptop screen with and without the backlight. I stuck the backlight to the edge of the desk behind the laptop:

And here’s my monitor with the backlight:

And here’s the LED strips stuck on the back of the monitor:

The LEDs are low power. They don’t get warm, and come with fairly long cables. You can either run them serially or have them on individual spurs from the main plug.
So far I’m preferring them to normal halogen or tungsten desk lights. The light is whiter, which is somehow more pleasant. And my eyes definitely feel happier when I’m working at night.
by Andrew at January 28, 2012 01:12 AM
January 27, 2012
This week has been a mini detox, with copious juices. Here’s the recipes for a couple of them, from Sainsbury’s magazine. These make enough for one glass. Throw the ingredients in a juicer, or apparently you can put them in a liquidiser with 300ml water and then strain well.
Apple and Carrot Detox Speeder

- ¼ white cabbage
- 3-4 carrots
- 1 small apple
- 5cm root ginger, peeled
Super-charged Spring Cleaner

- 2 carrots
- 1 beetroot, peeled
- 5cm root ginger, peeled
- 1 apple
- 3 broccoli florets
- Juice of ½ lemon
Alternatively you can just chuck a handful of whatever sounds good into the juicer. This morning’s was an arbitrary amount of carrots and apple, with a chunk of ginger for extra kick.
Enjoy!
by Andrew at January 27, 2012 09:40 AM
January 26, 2012
And now a slightly longer than usual rant: The problem with the o2 network disclosing mobile browsers’ phone numbers that I repeated 2 days ago (and it appeared on our co-op website) snowballed yesterday to the point that it was on the short bulletins from ITN, BBC, IRN… and probably many more. And then o2 fixed it. Good!
The reply claims that it’s only since 10th January which is rather at odds with other claims that it has been happening since at least March 2010 in some situations.
I started buying from o2 in December. I was using Three, but their network where I stay in Norfolk isn’t reliable and you can’t just buy a device in a shop for The Phone Co-op. The dongle from o2 is a recent Huawei USB device that just worked in debian and was fairly easy for me to get working in Ubuntu. There’s space in it for a memory card, so maybe I could boot from it… but that’s an idea for later.
The o2 deal is OK but not great, and the included wifi is nowhere near as good as it looked: when it says it includes “BT Openzone” that doesn’t include any of the “BT Openzone-H” hotspots that are much more common. You’re only allowed to register one device for wifi, so no using your phone, tablet and laptop at different times!
I can’t believe it’s legal to advertise that as “unlimited wifi”, but o2 is still a better offer than access to “BT Openzone-H” hotspots at £39/month (yes, that’s the price for wifi-only…).
Ultimately, I think the problem is that there’s a rubbish choice of mobile (wifi or 3G) internet access providers in the UK. It’s a completely and utterly failed market, so you need to use Virtual Private Networks and similar tricks to protect yourself from the dysfunctional networks. My VPN meant my mobile number was safe: how about yours?
As luck would have it, I had already proposed a resolution about protecting customer privacy to The Phone Co-op (affiliate link) for our AGM on Saturday 4 February (if you’re a member, let me know). We were trying to find a compromise wording and I don’t think this little o2 scandal has hurt my proposal at all!
At least the phone co-op’s mobile service is based on Orange’s network, which wasn’t affected. How does your network perform? There’s an Internet Service Provider evilness test which might tell you.
by mjr at January 26, 2012 05:26 AM
January 24, 2012
I’m on a train tomorrow, and thought it was a good opportunity to use my phone as a wifi hotspot.
This works flawlessly with the Samsung Wave 3 (though the GUI to turn it on is a bit suboptimal). It turns out it’s not so simple with the iPhone – because the network operators appear to have “upgraded” the experience for iPhone users.
On an iPhone you turn on Personal Hotspot by going to Settings, then General, then Network. You get a straightforward-looking button “Set Up Personal Hotspot”, like so:

Unfortunately, when I click on it, I get a prompt to visit my network operator’s website, at http://www.o2.co.uk/iphonehelp/modem:

Fortunately there’s a button “Go to Website”. Unfortunately, when you click on it, this is what you get:

That small text says “File not found“.
I opened the website in my desktop browser, and it redirects to http://service.o2.co.uk/IQ/SRVS/CGI-BIN/WEBCGI.EXE?New,Kb=Companion,question=ref(User):str(Mobile),T=guruCase,VARSET_COBJID=11820,Problem=Obj(11820) (that’s a nice URL). The page is basically a collection of FAQs, but rather surprisingly the first FAQ is not “How do I set up tethering?”:

While I was on that page, I got prompted to use o2′s online support chat, which seemed like a shortcut to solve the problem. I was connected to Guru Hayley, and encouraged to ask her anything. Turns out anything does not mean “how do I set up tethering?”:

“Our system isn’t working” is the new “my dog ate my homework”.
Ok, so reading through the FAQs a bit more it looks like I need an “Internet Tethering bolt-on”. According to the “My tariff & Bolt Ons” page on o2′s website, I already have “iPhone Web Bolt On (Unlimited data access in the UK on your iPhone)” and “Unlimited Wifi for iPhone SIMO (Unlimited Wi-Fi access on your iPhone at over 7,500 Wi-Fi hotspots from The Cloud or BT Openzone in the UK)“. Leaving aside whether it should be “Wifi” or “Wi-Fi” (doesn’t matter but at least be consistent), neither of these sound like “iPhone Internet Tethering”, so let’s have a look at the other bolt ons I can add to my account:

None of those sound like “iPhone Internet Tethering” either.
So if I want internet tethering on my iPhone it looks like I need to email o2 and wait 24 hours, or call them up at 5p a minute (probably to be told to call back when their system is working).
Or I could just stick my SIM back in the Samsung Wave 3 when I need tethering, and skip the “Bolt-On”. Which option seems easier, cheaper, and more likely to work in the time available – and less offensive to a customer who’s just wasted 30 minutes on what should be a perfectly simple task?
Perhaps I’ll just read a book on the train tomorrow…
by Andrew at January 24, 2012 03:10 PM
January 23, 2012
It feels like my Amazon order has been in transit for ages. It was dispatched over 40 years ago and I’m still waiting …

by Andrew at January 23, 2012 12:06 PM
January 22, 2012
For my day job I build storage systems. A lot of what I do at present
involves caring a lot about how different OSes deal with things like new
LUNs being presented from a SCSI target, or errors along a subset of the
available paths to a device.
It will come as no surprise to you to discover that they all suck (for
values of all equal to Linux, Solaris, Windows and VMWare). New LUNs are
particularly annoying. I'm in the situation that creation and removal of
a LUN is exceptionally easy.
Hmmm. Maybe I need to back up here a bit first. SCSI has the concept of
a target (think, device, eg hard drive). Each target can present
multiple logical units. Each of these is assigned a number - a Logical
Unit Number. Most devices (a hard drive, or a CDROM drive) will present
a single LUN. A storage array will tend to present multiple LUNs; one
for each volume that is exported to the host. At the host level each LUN
really just looks like a separate device (for Linux /dev/sda and
/dev/sdb may well be separate LUNs on the same array, rather than 2
separate arrays/hard drives, for example. At the block device level you
don't care about the difference usually).
Anyway. For various reasons I end up adding and removing LUNs quite
often. And there are ways for the array to indicate that this has
happened to the host (the UNIT ATTENTION/REPORT LUNS DATA CHANGED check
condition seems to be favoured these days, as a complete Fibre Channel
LIP can be disruptive). What I'd like to happen in that case is the host
to pick up the check condition and drop and/or add the devices that have
changed. Instead everything wants a manual rescan.
rescan-scsi-bus tends to be
simplest for Linux. Windows wants a manual refresh in Disk
Administrator. VMWare a "Rescan HBAs" from vSphere. Solaris a "devfsadm
-C" and possibly a "cfgadm -al" first. And all of these can be
temperamental about picking up the changes.
We've done a lot about hotplug for the desktop user experience, without doing the same level for the server experience. I
appreciate that there are situations that you don't want your server to
reconfigure things without being told to, but the current situation can
be detrimental (for example Linux multipathing will hold a device open
even after it's disappeared and is returning an "INVALID LUN" response;
it would be much better if it could cleanly close that device and wait
for it to return). Storage is capable of being much more than just a
single block device these days, and it's a shame that nothing seems to
deal fully with that fact.
(Yes, yes, I should write and submit patches, but I appreciate that
there's not always a simple answer, nor necessarily an answer that works
for all situations automatically. Plus, y'know, not enough hours in the day and I hope you all appreciate I've taken a break from watching BSG to write this.)
January 22, 2012 11:57 PM
I got divorced earlier this month; the decree absolute arrived in the post last weekend. I'm hoping this isn't news to anyone who knows me well, and I only really mention it here as an endpoint given that I blogged about the wedding itself.
January 22, 2012 10:12 PM
January 21, 2012
I just lost a hard disk. No big deal.
My somewhat complicated home media setup is this: I have a Samsung TV plugged in to a first generation AppleTV. The AppleTV is connected to the network via wired ethernet to an Apple AirPort Extreme
base station / router. Hanging off the USB port of the Airport Extreme is several terabytes of storage courtesy of a Drobo containing a bunch of cheap(ish) OEM hard drives.
The AppleTV has been upgraded with a Broadcom Crystal HD chip in the internal PC Card slot – which normally has a wifi card in it. I figured it was worth sacrificing wifi, since with the size of HD video you really want to be using a fast wired network anyway. In order to make use of the HD chip, I have XBMC installed on the AppleTV.
So I sat down this evening to watch a film over dinner. I switched the TV over to the AppleTV, fired up XBMC, and navigated to the files on my Drobo – except they weren’t there. For some reason, the AppleTV wasn’t seeing the Drobo. I pulled the face plate off the Drobo to find out what was going on, and noticed it was in standby mode – unmounted by the Airport Extreme. No wonder the AppleTV couldn’t see it!
I restarted the Airport Extreme, but when it came back up and woke up the Drobo, I had the ominous flashing red light beside one of the drives. The light that means “drive failure”.
At this point in the story, there would normally be panic at the thought of lost data. What actually happened was a swift trip to Amazon, a quick calculation of cost per megabyte followed by ordering a new OEM drive to replace the failed one. It should be here on Monday, but meanwhile I can still access all my data.
It’s not always smooth sailing – see Drobo good, bad, ugly and Drobo updates. But when talking to a friend the other day who was still nursing individual external USB drives, I realised that on the whole the Drobo has been well-behaved and fits into the “it just works” category of technology that is so rare these days. It’s been online for almost two and a half years, and I’ve only had to mess with it on three occasions until now: installation, adding capacity, and replacing the first blown disk.
So I’d thoroughly recommend a Drobo instead of an external USB drive, and for a home media centre solution it works really well with the AppleTV (and associated hacks) as well.
by Andrew at January 21, 2012 10:11 PM
January 20, 2012

Borrowing from Alex King’s Simple SQL Queries for Blog Stats, here’s some stats on this blog.
- The first post “It’s alive!” was made on 31st May 2003, some nine years ago.
- There have been 1,572 posts.
- On average, there are around 160 posts a year.
- Most posts are comfortably over 1000 characters long.
- The average post is about 170 words long; the longest is currently FOSDEM 2011: Saturday, and the shortest is This week’s addiction (whatever happened to…)
- There’s been an inexorable move toward fewer, longer posts in the last few years.
- These stats don’t include this post. I’ll leave that madness to xkcd.
Meta meta…
Here’s some useful queries for getting blog stats from a WordPress database.
Get first and last post:
select min(post_date) as start, max(post_date) as end from wp_posts;
+---------------------+---------------------+
| start | end |
+---------------------+---------------------+
| 2003-05-31 10:35:11 | 2012-01-13 18:14:58 |
+---------------------+---------------------+
Get number of posts:
select count(*) from `wp_posts` WHERE post_status='publish';
+----------+
| count(*) |
+----------+
| 1572 |
+----------+
Get number of posts per year:
select YEAR(post_date), count(*) from `wp_posts` WHERE post_status='publish' GROUP BY YEAR(post_date);
+-----------------+----------+
| YEAR(post_date) | count(*) |
+-----------------+----------+
| 2003 | 154 |
| 2004 | 329 |
| 2005 | 501 |
| 2006 | 225 |
| 2007 | 176 |
| 2008 | 75 |
| 2009 | 17 |
| 2010 | 19 |
| 2011 | 70 |
| 2012 | 6 |
+-----------------+----------+
Get average number of posts per year:
drop table if exists average_posts;
create temporary table if not exists average_posts
select YEAR(post_date) as Year, count(*) as Count from `wp_posts` WHERE post_status='publish' GROUP BY YEAR(post_date);
select avg(Count) from average_posts;
+------------+
| avg(Count) |
+------------+
| 157.2000 |
+------------+
Get average length of posts (in characters) per year:
SELECT YEAR(post_date), AVG(LENGTH(post_content)) FROM `wp_posts` WHERE post_status='publish' GROUP BY YEAR(post_date);
+-----------------+---------------------------+
| YEAR(post_date) | AVG(LENGTH(post_content)) |
+-----------------+---------------------------+
| 2003 | 1260.8182 |
| 2004 | 1174.0729 |
| 2005 | 1062.4770 |
| 2006 | 1003.2622 |
| 2007 | 1473.9489 |
| 2008 | 1862.2267 |
| 2009 | 3575.2941 |
| 2010 | 3447.3158 |
| 2011 | 6024.9000 |
| 2012 | 8707.6667 |
+-----------------+---------------------------+
Get average word count of posts per year:
drop table if exists word_counts;
create temporary table if not exists word_counts
SELECT `ID`, `post_date`,
SUM( LENGTH(`post_content`) - LENGTH(REPLACE(`post_content`, ' ', ''))+1) AS 'Wordcount'
FROM `wp_posts`
WHERE `post_status`='publish'
GROUP BY `ID`
ORDER BY `post_date` DESC;
SELECT YEAR(post_date), AVG(Wordcount) FROM `word_counts` GROUP BY YEAR(post_date);
+-----------------+----------------+
| YEAR(post_date) | AVG(Wordcount) |
+-----------------+----------------+
| 2003 | 148.3052 |
| 2004 | 147.6809 |
| 2005 | 112.4611 |
| 2006 | 105.3289 |
| 2007 | 161.6875 |
| 2008 | 218.9600 |
| 2009 | 451.3529 |
| 2010 | 450.3158 |
| 2011 | 673.8714 |
| 2012 | 1017.6667 |
+-----------------+----------------+
by Andrew at January 20, 2012 11:17 PM
I’ve given my reaction to yesterday’s announcement by the prime minister in my blog on the Co-operatives UK website. If you want to comment and can’t do so there, comments can be left on this article too.
by mjr at January 20, 2012 04:00 PM
January 19, 2012
So, at work we have a little single port IP KVM, it is a StarTech SV1107IPEXT - it's not a "bad" bit of kit, if you're completely configured for using it in the way they expect... When you're not, then it throws a NullPointerException when you try to connect with it's Java applet.
This morning (mostly because the monitor and keyboard I had been using for building stuff on my desk has gone missing) I decided I'd try again with the device, it's not on our default office network range, mostly because it might not always be in the office, so I quickly added an ip alias using ip addr add 192.168.0.59/24 dev wlan0 on my laptop to bring up a route to it. Navigated to the page and asked it to fire up the Java applet. Straight off, a NullPointerException happens - hmm. So looked at what was being logged by the JVM - it was trying to run ifconfig (no, really, the java applet ran ifconfig... with no path...) which, on my debian laptop, is not in the default path... so I went and make a quick wrapper in ~/bin for it... right - now it can run that... still a NPE, hmm. So look a little closer, it's looking for the MAC address assigned to the IP that you're coming from... no, really! WTF! So I went and hacked my little ifconfig wrapper to rewrite the address for wlan0 to be what the KVM expected it to be, low and behold, I can now run the java client (hoorah!).
Why the heck are they doing that though - that's just plain insane! On the plus side, I now have a work around, on the minus side, egad that's ugly!
by Brett Parker (iDunno@sommitrealweird.co.uk) at January 19, 2012 11:20 AM
January 18, 2012
Once again, lawmakers are considering a stupid protectionist measure and this time it’s the US, so it has some effects outside the US too.
Once again, some websites have taken themselves offline and caused great inconvenience to their supporters.
This is really annoying. Protesting about threats to take websites offline by taking websites offline is as stupid as protesting against a ban on kissing by not kissing. It just demonstrates that you can do without your websites/kisses if you must.
I feel it’s much better to use websites to distribute information and call people to action, like this epetition for UK citizens and residents, or by asking your associations and suppliers to oppose these measures and their supporters.
Wikipedia is probably a bit to blame. Although it called its action a blackout, it wasn’t one and there were still many ways to access its information. In fact, if you use NoScript, the banner didn’t even display and there’s only a line on the front page to say anything is happening.
The one that really annoyed me was identi.ca, which even turned off its API so clients just started spewing errors everywhere (I returned to my desk to a stack of retry questions). That stopped some of my websites from distributing a link to the anti-SOPA epetition because they read from my identi.ca stream – how much other anti-SOPA activism was hindered?
I’ve been told that Evan held a vote, but I didn’t see it, so I didn’t vote and I don’t know the turnout or anything. How many people voted for the blackout because they use other sites like twitter more anyway?
Banners: yes; Blackouts: no.
by mjr at January 18, 2012 07:21 PM
January 16, 2012
OK - so I read, a couple years back, the first book in the Newsflesh Trilogy by Mira Grant, before getting my Kindle - it was fantastic, and I wanted more, ... so, diligently I waited and then after getting my Kindle, I spotted that the second in the series was available for pre-order (yay!), so noting when it was due out, I made sure that a couple of days before the release of Deadline, I could read Feed again - having already owned it in paperback, I also diligently bought it a second time for the Kindle (knowing that I would be reading something else just before starting the voyage through Feed and then Deadline, and travelling with lots of paperbacks in my bag was just getting annoying...).
In a few months time, the final part of the Newsflesh Trilogy comes out - and I await it with baited breath. I also note, that, currently it is only available for pre-orders in paperback - NOOOOOO! So, with that in mind, can everyone please go to the Amazon page for the paperback and click on the magic link that says you want to read it on the Kindle!
Also, if someone can work out why the novellas are only available in audiobook format, and somehow makes them available in a nice printed format (well, kindle), that would be great!
(One day I'll get round to re-enabling comments on here... one day... yes, one day!)
by Brett Parker (iDunno@sommitrealweird.co.uk) at January 16, 2012 10:20 PM
January 13, 2012
In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2011 day two: Sunday.

Reason for attending this talk: to understand more of the technical details behind fast boot of Linux devices, which will be an important factor in the success of mobile linux.
The subtitle of this talk was “Booting Linux Fast and Fancy”, and the speaker focussed first on how to make linux boot quickly and then provided tips for making the boot look good. There were approximately 100 people present for this early morning session.
Why worry about boot? The evolution of phones to include linux means boot user experience becomes more important. Industrial devices don’t look like computers and shouldn’t boot slowly. Automotive devices have fast-boot requirements – they must be answering CAN messages in less than 200ms after power-on.
History of the project:
- 2007 – barebox project – forked from u-boot as a technology study under ‘u-boot-v2′ name.
- 2009 – first release, renamed barebox, hosted on own infrastructure
- 2011 – 24 releases to date, timed releases 1 per month + maintenance releases on demand.
- commit history – missed it! slide went by too quick.
The project supports a range of CPU architectures – arm (at91, ep93, i.MX, netX, nomadik, omap, s3c24xx), m68k, ppc, sandbox, x86 bios based, etc.
It supports:
- build: kconfig, kbuild
- boot media: linux16, nand, ubi, sd
- data: dfu, kermit, z/y/zmodem, tftp
- gfx: framebuffer, splash screen
- filesystem: cd, ls, cp, saveenv/loadenv, mount, partitions
- tools: crc, edit, gpio, unizo
- user interaction: login, menu (for simple text-based menus)
- drivers: i2c, mfd, flash, serial, spi, usb host+device
- modules: insmod, lsmod
- memory: meminfo, memtest, md, mw
- network: ipv4, dhcp, netconsole, tftp, rarp, ping, nfs, dns
Configuration done just by assigning variables e.g. eth0=172.0.0.3.
Booting linux fast:
- power controller releases reset line: optimize hardware (electronics)
- ROM bootloader starts running: select cpus optimized for fastboot eg mx25
- fetch boot blok from nand/sd: done by firmware, usually can’t be tuned
- execute first boot code: first place can do something in sw
- initialize hardware: only what’s necessary, tune clocks & timings
- fetch linux kernel from nand/sd: async read and decompression tricks eg prepare kernel image in blocks of certain size, while decompressing block, instruct device to send next block.
- execute linux
- extract compressed image: depending on hw, use uncompressed image or zImage
- kernel boots, initialize hardware: minimized kernel, all tricks from elinux.org wiki
- /sbin/init: depending on use case, use initramfs or real rootfs (slower)
Example: 336ms from bootloader to init on freescale mx35, 532mhz. On beagleboard this is usually 800ms.
Booting linux fancy:
- initialise hardware: backlight off load splash show splash backlight on (to avoid flicker)
- kernel boots, initializes hardware: make sure framebuffer has fixed address between bootloader and kernel – no re-init! (stops splash disappearing)linux driver looks at what is initialized, and doesn’t reinitialize.
- sbin/init: cross fading with overlay
Fast, but not the 200ms limit for automotive.
BTCS: Boot Time Critical Services (originally inspired by freescale, now implmented with mainline focus).
Idea: set aside some memory, register a poller in barebox, make sure memory is handed over to linux, poller ends up as a normal interupt service routine in linux.Interupt service routine runs during bootloader. compromise – can’t use much infrastructure from isr. possible to run commercial stacks for ECU.
CAN is ready after about < 100ms. Downside: it is a bare metal stack.
Key takeaways: it is possible with attention to detail to create extremely fast booting devices. This would be of significant value in a mobile linux stack.
Reason for attending this talk: Linaro could form an important base for a mobile linux platform.
Approximately 300 people attended this talk. The speaker began by outlining the rationale for Linaro’s creation: ARM-embedded is too hard, and there are 4 key problems:
- under-investment in the open source that makes up linux platform
- distribution fragmentation: different tools/versions, different graphics and multimedia plumbing, kernel forking and versions
- SoC fragmentation, different SoC vendors with different approaches eg kernel, power management, graphics and multimedia
- not enough optimization, features in processors not being used
How is Linaro fixing this? engineering, engineering, engineering!

In the above graph:
- blue: Canonical
- red: ARM
- yellow: codesource?
- green: IBM
- pink: TI
They recrutied engineers from all member companies and hiring their own people to work on Linaro.
Linaro engineering : working groups, taking opensource upstream and improving, releasing own branches with new features (will go upstream but maybe not there yet)
landing teams only area with privacy (future products/hardware)
platform engineering: mix all together. important to have reference images prove it works and test/validate work of other groups.
two types of cycle:
- 6 months design – implement – deliver features
- subprojects on monthly releases
10.11 technical highlights
- took member bsps and wrote summary of what was wrong
- combination of distributions and SoCs .
- release hardware packs as set of enablement files
- at end of cycle toolchain widely adopted
lessons learned
- too high level, goals too abstract
- ramping up engineers to 90 was time-consuming
2011 plans: build of linaro-enhanced key distributions on member SoCs
- android
- ubuntu
- chrome os
- meego
Building a test and validation framework for member SoC hardware.
Approx 200 attending. Speakers are kde developers – kdepim, plasma, libgcal, gallium,…
kinetic scrolling – as made famous in 2007 by iphone. but prior art discussed in 1982 bill buxton two-handed input in HCI, canola 2007
Qt flickable 2008 “oh my god QML’s so wonderful!” in fact a really really neat way to do things. You can do it in C++ but use QML, it’s easier.
implementations;
- ariya’s flickable 2008
- toyflick 2009
- plasma scrollwidget 2009
- imtk imtkkinecticlistview 2010
- qml flickable 2010
Meego UI without libmeegotouch? issues with libmeegotouch – can’t run on symbian (uses GTK), so cheat
pure blood qt runs everywhere – nokia n580, n97, n900.
by Andrew at January 13, 2012 06:14 PM
January 11, 2012
In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2011 day one: Saturday.
FOSDEM is the Free and Open Source Software Developers’ European Meeting, an annual free event hosted in Brussels and entirely organised and run by volunteers. Typically around 5-6000 developers attend. The event is run over a weekend, with a networking beer event the Friday beforehand. This year around 1500 people showed up for the beer, according to the estimates of the security staff.
The event comprises a number of keynotes and multiple parallel tracks of volunteer talks. 2011′s main tracks were:
- System
- Web Browsing
- Languages
- Web Frameworks
- Cloud
- Office
- Lightning talks
- Developer Rooms – BSD, Cross Distribution, Cross Desktop, Data Analytics, Embedded, Free Java, GNU, Jabber and XMPP, Mono, Mozilla, MySQL and friends, Security and hardware crypto, World of GNUStep, Accessibility, Configuration and Systems Management, LibreOffice, Virtualisation, Open Source Telephony, Perl, PostgreSQL.
Some thoughts from the event overall:
- Attendance
- Attendance once again seemed higher than previous years, with a broad mix of attendees in terms of age, profession, geography, language.
- Many businesses as well as projects now count FOSDEM as a “must attend” event.
- “Android is a bucket of arse” / “has anyone noticed the only Android talk is about setting it free?” / “Google’s Android is not the perfect embedded OS”
- The general mood amongst delegates is that Android is an appalling technical implementation, and very few seemed interested in developing for the platform. This was in stark contrast to the level of interest in Linaro and MeeGo.
- WebOS has problems too
- Even though Palm WebOS is widely admired by the community, apparently HP has spent the last year since acquisition dealing with licence compliance issues.
- Consolidation
- Previous years have seen rooms devoted to specific distributions and specific desktop software. This year all the distributions were in one room and the theme was typically how to work together and on cross-distribution packaging initiatives. All the desktops shared talks on important cross-desktop key components.
- Device fashion
- Despite being superseded in the marketplace, the Nokia N900 was still an extremely popular device at FOSDEM. Second most common device sighted was the G1, followed by a range of Android and iPhone models.
- Some delegates had a range of tablet devices, but these were still very few compared to laptops and netbooks. The most common laptops were Apple Macbooks and Macbook Pros, many of which were running linux.
- Trends
- There is an increased interest in the embedded end of the market with more talks and also large crowds around the embedded/beagleboard stands.
- Firefox and HTML5 seemed significantly more popular this year, and there continues to be notably few talks about WebKit/Chrome.
- Last year’s buzzword NoSQL has been superseded this year by “big data”.
Some of the talks attended:
Two reasons for attending this talk: firstly, it’s a useful barometer for the acceptance level of open source in general and the progress of open source in large organisations. Secondly, I’ve worked with Sirius on rolling out infrastructure, so it’s good to keep tabs on what else they are doing.
There were about 200 people in the auditorium for the lightning talks. This talk started by pointing out that despite many open source policies and statements of support, the government has never implemented open source to any great degree. The last Labour government were very pro-business, typically favouring large multinationals, and so vendor lock-in through proprietary formats prevented any real adoption of open source.
The civil service typically work with and are supplied by large system integrators who historically have not been open source friendly.
The new administration is taking a top-down approach to driving change and wider adoption of open source. Examples of this include an SME Summit at the Treasury on 11th February 2011, and an Open Source supplier forum on 21st February 2011 where all open source suppliers will be present.
In addition, Bristol City Council are conducting research using a large system integrator paired with a small open source company (Sirius), and Cardiff council are running a series of workshops amongst key stakeholders, facilitated by Sirius, to explore options for using open source.
I wanted to get into the Firefox talks next, but the room was full (standing room only, no-one else allowed in for health and safety reasons).

Reason for attending this talk: I’ve seen first-hand the very real economic and technical problems with the way large mobile platforms relate to upstream projects, in that code is often forked and patched and rarely contributed back, providing both an economic burden of maintenance and technical difficulties in backporting bug fixes and enhancements. It was hoped that by attending this talk key remediation strategies might be identified.
There were about 50 people in this talk. This talk was given by noted Debian developer Thomas Weber, and was subtitled “How to make both your and upstream’s life easier”. It was a follow-up to last year’s talk “How to be a good upstream”.
Key points that need to be remembered:
Communication
- when you make some specific changes, discuss with upstream what changes were made and why
- being pro-active is key
Empathy
- Different people/projects have different goals and constraints
- Remember that upstream is busy too
- if you forward bugs, include all necessary information in the bug report – don’t force upstream to use your bug tracking system
- do not propose unscalable solutions eg. “upstream can subscribe to my distribution’s bug tracking system” : Debian alone has 120+ derivatives
Packaging (initially and ongoing)
- Introduce yourself – so upstream knows about the package and has a point of contact
- Keep in contact with upstream and ensure they understand that you are packaging for a distribution
- Take a look at upstreams bug tracking system before your own release
- If you leave or stop packaging inform upstream!
Example: xdebug 2.0 bug fixed in 2.1 Aug 2009; first stable was june 2010, in Ubuntu 10.04 LTS it’s still not fixed.
Cooperative work
- Forward patches (ideally before applying them)
- Be present on upstream’s communication channels
- Intercept the questions of the users of your distribution (you know the details of your distribution far better than upstream). This generates good karma.
Key takeaways: mobile platforms don’t always do this. They should all consider identifying their upstream projects, identify all their modifications made against upstream, do an audit of their releases against upstream bug trackers, and introduce their maintainers to all the upstream projects.

There were about 75 people in this talk. This talk started with a quick survey of the audience: the audience were geographically well-distributed, some had travelled 1000+ miles to attend. 80% of the audience don’t speak english as their first language, and no-one in room has been using linux for less than 2 years – most have been using it for more than 10 years.
Jared asked “does innovation happen in a conference room?”, and then proceeded with an analogy of why salmon swim upstream and why contributors should push their code upstream. He used another analogy of how multiple streams form a river to describe how “code starts out as 1 or 2 people working together then it forms a larger community”.
What is a community? It is the relationship of people with shared goals and common interests. With a software community: what is the difference between people working on same piece of software and a software community? A software community is a table – where people with different backgrounds, experiences, goals can come together and have healthy discussions. Sometimes they talk more about the process of the table itself!
What is a distribution? It is a bundling of software. When Fedora started, they didn’t want to push upstream – but this approach didn’t work as it became impossible to maintain the platform. Fedora now push upstream aggressively to carry as few custom patches as possible.
Upstream -> Fedora -> Redhat Enterprise Linux
“people take pride in working with open source, contributing to something bigger than themselves”
Key takeaways: Fedora, a relatively large and well-supported open source linux distribution, were unable to handle the burden of maintaining the platform without pushing upstream. Mobile platforms should learn from this experience and understand that it is not possible for them alone to support a forked platform.

This talk suffered from poor audio, starting too early whilst people were still arriving, and people were talking over the introduction.
The speaker started off with the premise that packaging an open source project is easy, but modifying it (patching) to fit the distribution’s requirements is hard due to the maintenance burden incurred by patches.
The obvious answer is to get the patches upstream as soon as possible, but this is not always possible as some open source projects have missing maintainers or are unresponsive to distribution contributions.
A workaround is for distributions to work together to form a new upstream, but maintaining a new upstream is hard.
One suggestion was to create canonical-package-name-maintainers@distros.freedesktop.org and then subscribe the email address to per distribution package VCS commit mails.
Question: how many examples of upstream abandonment? Several key ones: X11R3, X11R4, lesstif, nedit. Most niche packages, but still with a significant number of users.

The second part of the talk focussed on patch sharing:
- store all downstream patches at same place
- give write access to maintainers
- read to everybody
- let maintainers collaborate
Advantages: differences are more obvious, one patch can be used for multiple versions.
Whenever someone creates a new patch:
- push into common repo
- all maintainers will know shortly
- know whether it is distro-specific
- know what it does
- know when it get upstreamed
- know about fixes
- can incorporate it
- can help cleaning it up
- can help pushing it upstream
cf. openembedded:
- one repo with recipes and patches for software
- everyone works together (even on packaging)
- only differences are marked
patch conventions – easily parseable metadata:
- upstream package name and version
- maintainer (for patch)
- strip level (-p prefer)
- list of bugs
- description
- status (quick hack, send to upstream, upstreamed)
- distributions included in
Start with debian patch policy. Other key links:
Bdale Garbee summed it up best: “if you maintain a piece of software for a particular distribution and you don’t know the maintainers from other distributions, you are failing”.
Key takeaways for mobile linux platforms: maybe they should be a patch farm against an existing distribution, rather than a platform in their own right. They could sponsor work toward a common patch store, by helping developers get together to talk about it and plan it. This would help them by mitigating their maintenance burden.

Samsung have a high level of investment in Enlightenment technologies, having hired the principle developer. This talk is therefore critical to understanding the core graphics in Samsung’s Linux platform. There were around 100 people in the room for this talk.
e16 was released in 1997, and e17 has been in development for over a decade. Embedded devices are the main target and e17 has been rewritten from scratch based on e16 experience.
Enlightenment is a lightweight desktop environment based around EFL – Enlightenment Foundation Libraries. Enlightenment takes care of the current layout. All features or gadgets on the desktop are a module – so you can unload them. An e17 desktop consists of a set of modules loaded – a profile. A default basic profile is defined for different use cases. e17 is totally modular so you can load only what you want to use.
e17 supports themes. With edje everything can be themed. There’s only one file to download for the whole theme.
e17 has full compositing support.
e17 is opengl and opengl-es compliant. If the platform has bad graphics drivers it can switch to software engine.
e17 supports textures from pixmaps and indirect rendering.
e17 works on desktop and embedded.
The gui: there is a basic toolkit, there is no complete toolkit, just basic widgets (button, list, scroller…) and some tools to make life easier for coders (for example dbus bridge). You use ecore and evas to create windows. You use edje to create a new widget.
The future: Release. Maintain compatibility.
In e18 the plan is to integrate a complete toolkit for widgets.
Questions from the audience:
- Do you have a release date?
- what is the footprint?
- Around 40mb? 30mb? (the second e17 talk stated around 24mb)
The Enlightenment stand at FOSDEM also had e17 running on a range of devices including what looked like an HTC phone and a Samsung Galaxy Tab.
Key takeaways: there is a fair amount of developer interest in e17, but despite a very long development cycle it still seems relatively incomplete. However, the minimal footprint, embedded target and eye candy focus might provide a more consistent user experience closer to iPhone than it is possible to provide using GTK or Android graphics.
This talk was given by former Sun Chief Open Source Officer Simon Phipps. It was very well attended with approximately 200 people in the room and a long queue of people unable to get in.
Governance
Sun nearly broke opensolaris with heavy governance. They learnt from that lesson and with OpenJDK they took action first, open sourcing the platform and then wrote the governance after the fact. Another key lesson is that setting up an open source foundation does not fix anything – it is important to make the open source platform work first.
All community members matter
- it’s a mistake to assume a competitor can’t help
- there are approximately zero people who show up just to break things
- the rules you make to control those zero people break things worse than the zero people do
Real relationships help and heal
- written communications only support existing relationships
- second languages affect understanding (easy to believe you mean what you say – but you only use the words you know) (saying “I’m not a native English speaker” is a great way to excuse almost anything else you say)
- old hurts can be cured by positive healing (have breakfast lunch and dinner with people you don’t agree with)
training reptiles takes time (corporations are reptiles)
- corporations don’t exist, people do (you can’t trust a corporation)
- confronting corporate problems rarely works (no point going to MS and telling them patents are evil)
- solutions need to layer and build over time – create habits not traps (gradually change the environment)
Open source isn’t about licenses or code – it’s about a certain set of liberties. Software freedom has to be the guiding principle in what you do.
Software Business Value is the first derivative of Software Freedom
- Ability to share code -> grows user base
- Ability to study code -> developers not needing training
- Ability to modify code -> ecosystem of companies
- Adopting posture of freedom is not delivering freedom
Pragmatic compromise to achieve larger goal can be acceptable
- contributor agreement
- assembly exception to allow mixed licensing
Licenses are constitutions for communities
- licenses normally bilateral agreements
- open source licenses are multilateral circle around the community that defines the boundary.
The fact that java wasn’t open sourced in 2003 and packaged in a usable fashion on linux meant it lost a huge amount of momentum.
Why was apache license not chosen? BSD/Apache/GPL were all considered. Apache patent grants and lack of contribute-back would have removed commercial incentives to collaborate. BSD/MIT don’t convey patent grants in any concrete way, so could have been an option.
Bdale commented that it’s a balancing act that GPL represents between conveying rights and ensuring everoyone plays openly.
The most important thing Sun ever did to get Java adopted was not licensing under GPL but sending Tom to debconf to make debian packages. This made the JDK a second class citizen and not a third class citizen.
Key takeaways: companies must work together across commercial boundaries. Foundations / holding organisations should lighten up on governance and focus on software freedom and deriving value from building the platform. Making the platform usable is critical to widespread adoption.
Simon’s slides: Lessons I learned liberating Java
by Andrew at January 11, 2012 05:52 PM
The Tizen source and SDK were unleashed yesterday, and I’ve just had a first glance. The documentation is a bit all over the place, so here’s some notes on getting up and running. For more information on what’s going on with Tizen, read my blog post on Tizen and on platform community.
~
The platform build page at https://source.tizen.org/platform_sbs_install.html states Tizen requires Ubuntu 10.04 or higher. The SDK page at https://developer.tizen.org/sdk.html caps Ubuntu at version 11.04, as does https://developer.tizen.org/sdk_install.html. In reality, the SDK installed on 11.10 without any problems.
Installing the SDK
The SDK page says “To install the SDK you will need to have root privileges” but does not use sudo to run the installer. You will be prompted for the root password during the install.
The following steps worked for me:
- Install Virtualbox.
- Install Ubuntu 11.04 (or risk 11.10)
apt-get install git
sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin
- Get the SDK working by running through: https://developer.tizen.org/sdk.html. Install the Tizen SDK prerequisites. Because Tizen loves you, they kindly put commas between package names so you can’t copy-paste them. Here’s the list all ready to go:
sudo apt-get install qemu-kvm binutils-multiarch debhelper fakeroot realpath libsdl-gfx1.2-4 gettext procps xsltproc libdbus-1-3 liblua5.1-0 libexif12 libcurl3
- Download and install the SDK:
wget https://developer.tizen.org/download/tizen_sdk.bin
chmod +x tizen_sdk.bin
./tizen_sdk.bin
- The installer will exit (“Installing ….. OK”, “Done”) before the GUI installer has completed. Don’t worry about it.
- Go through the install process. Note the SDK needs 1.2GB to install. The installer is only 4.6mb, so expect some downloading.
- First time around, my installation failed with the following error:
(Un)Installation failed
Cannot connect to server. Please check your network status or use command line option ‘-proxy <address>:<port>’ for using proxy.
It’s recommended to uninstall all and install again.
The install is wanting to talk to http://112.106.1.254/tizensdkpackages/InstallManager/Linux/ and http://112.106.1.254/tizensdkpackages/current/linux-packages/ but those both work fine.
The second time around it worked (and good grief, the tizen download server is fast … or not very busy. I got 1.52MB/s).
Some random notes about the SDK:
- the open source license is alphabetical, so the first thing you’ll see on the list of software components is ‘Android Open Source Project(ADT DDMS, adb)’.
- The SDK license is actually a Samsung SDK license: TIZEN SOFTWARE DEVELOPMENT KIT (“SDK”) LICENSE AGREEMENT [...] A LEGAL AGREEMENT BETWEEN YOU AND SAMSUNG ELECTRONICS CO., LTD. (“SAMSUNG”).
- The Open Source SDK components are at http://developer.tizen.org/download/tizenopensdk.tar.gz but that basically consists of valgrind, qemu, the emulator kernel and oprofile.
Installing Scratchbox Build System (SBS)
This works pretty much as advertised – though note that the first step 1 (installing package dependencies) conflates two separate lines, and should read:
sudo apt-get update
followed by:
sudo apt-get install dpkg-dev pkg-config uuid-dev cpp gcc gcc-multilib libarchive-dev liblzo2-dev zlib1g-dev libxml2-dev automake autoconf realpath
Or you could just do:
sudo apt-get update && sudo apt-get install dpkg-dev pkg-config uuid-dev cpp gcc gcc-multilib libarchive-dev liblzo2-dev zlib1g-dev libxml2-dev automake autoconf realpath
There’s IP addresses hard-coded all over the place: in the SDK install, in the SBS documentation, in the SBS install script, and in the SBS utilities themselves, for example:
# The server with all required APT repositories
_APT_SERVER="${SBS_APT_SERVER:-112.106.1.254}"
This is extremely brittle, and I expect there to be breakages. It’s pretty poor practice and I would have preferred that the ‘source.tizen.org’ CNAME was used more consistently. That IP belongs to Samsung, by the way.
Where there is a domain name configured, it’s www.tizendev.org, which does not resolve to a public machine:
./install-sbs SBS install script
git version: 08ecba2
last commit: Date: Wed Jan 11 16:39:11 2012 +0900
For help see: http://www.tizendev.org
Note that you’ll end up with SBS stuff in ${HOME}/sbs-install and ${HOME}/sbs, which may or may not annoy you.
As per the instructions, ~/sbs-install/bin/sbs -A i386 -c will give you a working i386 Scratchbox target. It’s great to see at the end of the first run:
sbs: All done. Build environment was successfully setup at /home/savs/sbs
Progress!
~
On the whole, kudos to Samsung (and Intel, and Tizen) for getting the code out there. And especially for having a reproducible build system with clear instructions. This is a huge leap forward for Tizen, and a critical first step.
by Andrew at January 11, 2012 09:58 AM
January 10, 2012
Although I’ve been a regular at FOSDEM for a few years now, I’ve been rather poor in ensuring my notes got onto this blog. In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2010.
The Free and Open Source Developers’ European Meeting (FOSDEM) is an annual free and non-commercial event organized by the community, for the community. It’s a two day event organized by volunteers to promote the widespread use of Free and Open Source software and to provide Free and Open Source developers a place to meet. The event takes place in Brussels and has been running since 2000. In recent years attendance has been in the region of 4000, and in 2010 the attendance was closer to 6000. The event is hosted by the Université Libre de Bruxelles.
During 2010′s event there were 294 talks organized across 10 tracks (including Keynotes, Security, Scalability, Monitoring, Database, Javascript) and 22 subject-specific rooms (including Distributions, Embedded, Mozilla, GNOME, Openmoko, X.org).
I presented two LiMo talks: “LiMo Platform and Mobile Linux” and “Mobile distributions and upstream challenges“. I also attended a good number of talks, which – due to my employer at the time – mostly had a strong mobile and embedded focus. Some of the highlights included:
Adrien gave a complete end-to-end guide on how to do embedded platform development. He covered everything from source control, to build mechanisms and quality, to code review and distribution. The talk identified many issues that open mobile platforms do not address.
One slide in particular that appealed to me on build processes applies equally well to any software development environment: how long does it take a developer to get up and running?

FreeSmartphone.org and D-Bus (Michael Lauer, OpenMoko)
OpenMoko was hardware and software combined in a single device. The device is now dead, the software lives on. FreeSmartPhone.org (FSO) is the community software platform that has developed out of the ashes of OpenMoko.
What is FSO intended to be? A collaboration platform, a bottom-up stack, and a reference implementation. The heavy focus is on working software in real hardware with constant innovation/improvement on top. The goal is to close the middleware gap. ie. “middleware for mobile phones”. It is deliberately not positioned as a standards effort like LiMo Foundation/LiPs.
There’s heavy reuse of pre-existing components both within community source and old OpenMoko (eg. phone stack). D-Bus facilitates good architecture because it permits separation of business logic from UI. Lightweight, language independent UI independent, P2P and P2M IPC process communication enabler. D-Bus architecture involves a system bus and per user session bus. Methods and signals handle P2P and P2M. Get/Set for fast operations, list/retrieve for slow operations.
- > “mdbus -s” to enumerated system bus services
- > “mdbus -s org.freesmartphone.ogsmd” to talk to SIM app toolkit
One D-Bus interface can expose multiple objects.
- > “cli-framework” gives you a Python command line to D-Bus operation on FSO
Using it everything you can do programmatically with D-Bus can be done interactively which is very cool for demos.
Python D-Bus support: “One small step for programming, one giant leap for middleware”. FSO has control logic all written in Python for faster development time. BUT Python is slow! Also, an interesting comment: people are afraid of using scripting languages in embedded devices. FSO2 has been entirely rewritten in Vala – a high level language that can be compiled to generate C. FSO2 has libmsmcomm (Qualcomm MSM) and libgsm0710 modem (from OpenMoko). The OpenMoko team are looking in 2010 to port FSO2 to OpenMoko Neo FreeRunner, Palm Pre, and HTC Dream.
FSO2 initiative is very interesting – they’re focussing on how to build a mobile Linux platform not as a bunch of disconnected static APIs but as a living system of methods and signals mediated via IPC. The “APIs” are entirely exposed through D-Bus and developers interact with system components/services through D-Bus.
SHR (Thomas Zimmerman)
Stable Hybrid Release (SHR) is the Reference UI for FSO1/2. It’s gradually going to phase over to FSO2 (Cornucopia) in 2010. You build an SHR-based image with a single makefile. There are a set of user side daemons:
- phoneuid: UI daemon which caches views for performance
- libphone-ui-shr: main UI library providing dialler, contacts, messages
It’s based on X.Org Xserver 1.7.4, E17 Illume (Enlightenment).
An FSO-SHR Conference was planned for 2010.
hackable:1 is a Debian distribution for ‘hackable’ devices. It works by maintaining patchsets and building debian packages by downloading vanilla upstream, applying patches, and compiling for specified target. The focus is on providing a stable and easy to use development environment. It provides a much cleaner way of maintaining downstream changes. It provides a basic platform including simple UI. It’s supported by a Parisian openmoko reseller and ISP.

Tracker is an RDF semantic store. ie. a “nosql” approach to data storage – even though today it has an sqlite backend. Metadata is associated with a file through tags which can then be queried to present data in interesting ways. Rob demoed a clutter-based applet that was sorting/sifting photos and twitter feeds. It was written in 200 lines of js and backed by a tracker database being queried using SPARQL. See labs.codethink.co.uk.
~
Previously: FOSDEM ’08, FOSDEM 2010, FOSDEM 2011.
by Andrew at January 10, 2012 05:58 PM
January 08, 2012
I thought as a template this might be handy for somone out there.It's pretty much the minimum circuit you need to run up an Arduino project from a bare board, i.e. not using your Arduino board but just a ATMega chip with the Arduino bootloader.The power and GND rails on the right of the chip can be safely omitted if you don't need the ADC. D1 can also be omitted if you are sure you aren't going to connect the supply round the wrong way. The Serial programming header can be omitted if you don't want to program the chip in situ. LM7805 is comfortable supplying a small Arduino project at a supply voltage of 6.2 to 12V. However if your total consumption approaches 100mA then you need to fit a heatsink, limit the incoming voltage to about 8 or 9V or update the design to use a more efficient switching regulator. I'd recommend the later because linear regulators aren't cool. If your project is to be battery powered then I would move to switching regulators as a matter of course. Here is the PDF (arduinocore.pdf) Here is the gEDA source file (arduinocore.sch) (this version has a hand build ATmega component so works with just a standard component library) Use it as a template for your project. Sorry Windows users gEDA is fully available for Linux and Mac but only experimental builds exist for Windows.
January 08, 2012 06:47 PM
January 07, 2012
Cringely has a bunch of predictions for 2012. They all feel wrong, for one reason or another. Let’s run through them.
A new CEO for Apple: No.
Amazon and Bezos supplant Apple and Jobs: No. Shareholders don’t understand Amazon and will keep punishing the stock in the same way they punish Apple stock. “Selling stuff cheap” is not sexy enough. No-one gets excited about Primark. Amazon will take 3-4 years at least to see the advantage of Kindle Fire strategy. And Bezos is not the man to build a rapport with media industries, he’ll continue to just try to route around them – which will take much longer. So long term: yes. Next year? No. Don’t get me wrong – I think Amazon is one of the best companies on the planet. But I don’t think many others realise it.
Intel buys Qualcomm: No. Hubris. If Intel can, they will try to get there by throwing marginally less cash than the purchase price of Qualcomm at dumb initiatives like Tizen. And they aren’t hurting enough – yet.
Motorola buys Tivo: No. Tivo is dead anyway. Googorola hubris will say they can build the new TV experience better than Tivo, Apple, or anyone else. Expect another year of Google TV failures.
No IPO for Facebook: This could go either way. My bet is it will be very late 2012 or early 2013; those new investors that came in last year are going to be anxious to see a big return in a 1-2 year time frame. They won’t be happy to wait. And Facebook are sailing very close to the wind on all-out privacy invasion, and need to IPO before this becomes a mainstream PR issue.
Thompson’s no Yahoo: Well duh. This is not a prediction. Nokia Windows phones are going to bomb. And it will probably rain this week. Any other dumb non-predictions we can make while we wait for Yahoo to quietly die?
New Microsoft CEO: I’d bet against it, as the real damage to shareholders hasn’t happened yet. Office and Windows remain safe strongholds in the medium term; acquisitions like Skype allow the perception of progress (and actually are a pretty smart move if you can no longer innovate). Most shareholders simply don’t understand the form factor bloodbath that iOS is wreaking, and are therefore content to see Windows Phone bumble along. Microsoft always gets it right on the third iteration … Mango is only the second (never mind the 6 versions of Windows Mobile before it).
~
See also Gruber’s claim chowder of Cringely on Adobe.
~
Let’s put my money where my mouth is. Here’s five predictions you can judge me on:
- No Apple television set and no iPad 3.
- Google TV will be another failure. And Google+ will continue to be a failure.
- No new WebOS hardware.
- No Euro collapse (sneaking in a non-tech one).
- This year will be ‘boring’ (at least in tech) in comparison to last year’s apocalyptic nature (Elop, Leo, Jobs, etc), even counting Nokia off-loading the smartphone division to Microsoft and little Nokia resurrecting mobile linux.
And you? Where do you place your bets?
by Andrew at January 07, 2012 09:22 AM
January 05, 2012


I have a rather lovely Humax PVR9300T
, a digital video recorder that I bought a year or so back. Or, it was lovely, I should say. Just before Christmas, the box started to freeze. Rebooting it didn’t make a difference; it would play television for a minute or two before freezing again.
I figured this was all part of the failing IT saga (Macbook, Kindle, now PVR). But no.
It turns out that I’ve been using the Humax PVR all wrong. The firmware on the device hadn’t been updated since January 13 2010, and the old firmware is buggy. I had auto-update turned on, but apparently the automatic over-the-air firmware updates only run when the PVR is in standby mode, and I’ve never bothered to put it in standby.
So, if you have a Humax PVR, you need to:
- Check that you have the latest firmware (UPTTF1.00.26 from 7 July 2011, at time of writing)
- If not, ensure that automatic updates are enabled
- Make sure you put the device into standby mode when you are not using it, so that it can update.
- Alternatively, force a manual update when the OTA firmware is being broadcast.
And then, happy TV watching and recording!
~
I hadn’t realised that these devices can do over-the-air updates, but I guess it’s a logical extension to the switch to digital. It’s quite cool to see the device pulling down an update without having to plug in a serial or network cable. At the same time, I’m a little disappointed that I don’t get to hook my laptop up to the PVR to flash the firmware and play geek. Maybe next time.
~
Of course, if I were to buy a new PVR today, I’d be getting the Humax HDR-FOX T2 HD 1080p 500GB Recorder with Freeview HD
which is all shiny and has HD in the name and so is clearly better. Guess I’ll have to ‘accidentally’ put a few thousand extra volts through my newly-fixed 9300
by Andrew at January 05, 2012 11:02 AM
December 25, 2011
Gruber considers the relationship between Mozilla and Google really weird. MG Siegler suggests that it’s in part due to a bidding war, and in part because of anti-trust concerns based on a tweet from David Ulevitch. I’m sure both those hypotheses are true, but let me suggest another idea: Google needsFirefox – for at least two reasons, and probably a whole lot more.
~
Firefox legitimises Chrome. Firefox Sync has been around in one form or another since 2007, and before there was a Google feature called Google Browser Sync. The idea is that some central server stores synchronisation data so that all your browser instances have the same bookmarks, preferences, passwords, and so on. The Mozilla implementation stores the data on Mozilla’s servers, and comes with strong promises of data protection, using encryption to stop even Mozilla from accessing the information. A similar set of features have been creeping into Chrome: bookmark syncing in January 2010, followed quickly by preferences in May, form data in September, and passwords the following year. All this data is synced with your existing Google account. There’s a subtle difference between storing your data on the servers of a non-profit foundation that talks about the safety of that data, and storing your data on the servers of a for-profit corporation that has the stated goalof indexing all the world’s information. Everybody loves Mozilla, everybody loves Firefox. They are the great white knights of the internet. They slayed the evil Internet Explorer; they stand for freedom and open standards and other good stuff. If storing your data in Firefox is okay, it’s a natural assumption and logical step to store your data in Chrome. Legitimacy by association. Firefox leads with the feature, and Chrome follows through. Google wins by getting hold of previously “dark data”: bookmarks, form fields, passwords and preferences that were previously locked away on users’ computers.
~
Firefox inspires Chrome. Someone said the other day in a meeting that “Google has all the money in the world, and all the PhDs in the world”. Whilst that’s not entirely true, it’s a good enough approximation. But even with all the money and all the brains, you can’t guarantee you’ll have all the ideas. If necessity is the mother of invention, then competition is the mother of innovation. The leapfrogging that goes on in browser development between Chrome and Firefox is proof of that. It’s arguably fantastic value for Google to pay Mozilla to act as an outsourced browser think tank. And of course Mozilla do so much more than just build a browser. Take a look at the list of Mozilla projects, the Mozilla community map, driving forward web standards, protecting an open internet. Many of Mozilla’s activities directly support Google. It’s a symbiotic relationship. Sure, Google could probably hire the Mozilla teams to do the same for Google, but why bother if Mozilla are already doing it cheaper and/or better than it could be done at Google?
~
So maybe rather than thinking “that’s really weird” or “they’re overpaying” or “it’s a dodge to avoid Government intervention”, we should be thinking “great job, Mozilla” and “hey, that’s great news for the open web and browser innovation”.
Update 16:31GMT: A similar story has hit Slashdot. Peter Kasting’s argument is that Google use Chrome (and Firefox) for the betterment of the web, which I buy in addition to the ideas above. Mozilla is a partner in this. A better web equals more people for Google to sell to advertisers, and more search revenue for Mozilla to use to advance the web even further.
by Andrew at December 25, 2011 01:51 PM
December 24, 2011
In the last four months there should have been plenty of opportunity to read books, right? Well, not so much. Herein my most recent literary conquests.
- World War Z by Max Brooks
. This is the book that had Brad Pitt up in Glasgow filming with a bunch of zombies. I’m not sure what the film will be like, but I thought the book was absolutely brilliant. It’s written as a series of interviews with survivors of the zombie outbreak, a useful device that lets the author hop about through multiple viewpoints. The “factual” presentation style makes it feel more real. If you haven’t read it and you love a bit of walking dead action, go get it right now.
- Immune (The Rho Agenda : Book Two) by Richard Phillips
. As I wrote about the first book in the series, “do expect an enjoyable tale”. This one was a bit more sluggish, but still an entertaining read.
- Engineman by Eric Brown. Utterly brilliant.

- The Scar by China Mieville
. So good. The bizarre and strange world of Bas Lag that China Mieville has created provides a great backdrop for wonderful stories. I loved Perdido Street Station
, and although The Scar is not a sequel, it’s set in the same universe and felt familiar.
- Iron Council by China Mieville. Again, not a sequel, but still wonderful. Almost steampunk (but in a good way).

- Broken by Karin Slaughter. This was on offer at Amazon so I picked it up for the awesome price of £0. It’s now £3.49 and I would probably recommend it at that price. I’m not a big crime reader, but I enjoyed this one. It had sufficient twists and turns to keep me turning the pages,
and moved at a good pace.
- The Phoenix Conspiracy by Richard L Sanders. Some of the writing was a bit wobbly, especially early on, but this is a fast-paced sci-fi romp that proved to be quite entertaining. It’s currently free at Amazon, normal price £2.09, so go grab it!

- The Dervish House by Ian McDonald
. If you’ve ever been to Istanbul, there’s a good chance you’ll love this book right off the bat. If you like your scifi in a hot and grimy and all too plausible near future, you’ll love this book. The kindle formatting is basically rubbish, and this can make it hard to follow: switches in narrative are not immediately obvious. But stick with it (or get the paperback) because it’s a fantastic story.
Previously: books, books 2, books 3, books 4.
by Andrew at December 24, 2011 08:26 AM
December 21, 2011
Can I just say that after watching Obsessive Compulsive Hoarder on Ch4 I am disgusted with the Councillor who didn't visit, the “Mental Health Expert” who walked away and reported Richard Wallace for fire safety, the Vicar who sat on the fence and the neighbours who first extended the long arm of the law rather than the hand of community. However I am touched by the humanity of one Landscape Gardener who looked at the ill and damaged man rather than eyesore in the garden and hence made more progress than anyone else in over 30 years of one man's suffering. Bravo to that man and everyone he managed to turn around to provide positive help at the end.
December 21, 2011 11:18 PM
So previously my Macbook Pro stopped booting and got stuck at the grey boot screen. Then after a week at Apple for repair, they called me to tell me the SSD was stopping the Macbook Pro from booting.
Yesterday I ordered a new Crucial M4 256GB SSD
, which Crucial claim to be compatible with my laptop. I also collected my laptop from Apple. This afternoon the new drive arrived (thank you Amazon Prime
), so I set about removing the old dubious SSD and replacing it with the new one.
It didn’t go well.
Firstly, the old SSD. It was an OWC 115GB SSD with mount kit. It replaces the optical drive, which means I can have all the benefits of fast boot from SSD, coupled with copious storage from the factory-installed 500gb hard drive. The downside of this approach is Apple don’t provide the service themselves, so it has to be a DIY upgrade.
Unfortunately, it looks like the SSD has failed completely. Plugging it into an SATA docking station
had no result. It didn’t show up in the device list, so it’s effectively a chunk of dead plastic. Luckily, this chunk of dead plastic decided to dodo within the warranty: it was only bought last April.
On to the new SSD. Unfortunately, this SSD arrived with a rattle. You can’t make this stuff up. This solid state drive has bits that make noises when you shake it. The PCB that’s mounted inside the plastic case was a loose fit, so with the slightest nudge you can hear it moving around. Holding the SSD by the SATA connector as well as the case stopped the rattle. The drive itself was fine (I used it to confirm the SATA docking station was working and the other SSD was dead), but given my luck I decided it was safest to return it.
Back to the Mac. With no usable SSD, I put the Superdrive back in it for the time being, and powered it on.
Except it wouldn’t turn on.
The battery showed it had a nearly full charge, but just to be sure I plugged the power in. The laptop immediately came to life, showed the boot screen, and then started booting from my old hard drive. So far so good. Unfortunately, when it got to the login screen, it quickly became clear that the keyboard was not working. No input was detected, and the caps lock light failed to light up. So I selected shut down, let the laptop power off, and then tried powering it on again.
Except it wouldn’t turn on.
Plugged in, unplugged, nothing works. It appears to be dead. Not resting. Not stunned. Not pining for the fjords.
I guess I’ll take the laptop back to Apple after Christmas, and see what they can do. Given the keyboard was the first sign of trouble and Apple say they tested with a new logic board, my suspicion is something went awry when they put the old board back in (especially as the Superdrive/SSD shenanigans I performed were nowhere near the keyboard controller). I can’t see anything obvious like a loose connector, so perhaps the logic board blew in all the excitement.
Meanwhile, at least my old laptop continues to work, for now.
Sigh.
by Andrew at December 21, 2011 10:11 PM
At the Sainsburys filling station yesterday, I opted to pay at the pump. I inserted my debit card at the prompt, and heard an audible clunk as it was read. I typed in my PIN, and after a few seconds heard another audible clunk which I assumed meant it was done, so I removed the card. Oops. “Card removed too early, transaction cancelled”. What was the clunk, and what should it mean to the user?
The John Lewis website has the option for premium delivery of goods, which when selected presents a drop-down list of available dates. These dates currently start from after the Christmas break, on Wednesday 28th December. If I’m ordering something yesterday (Tuesday), and I see a drop-down with Wednesday already selected, and I’m in a section titled “Premium Delivery” and subtitled “Next, named or Saturday UK delivery”, I might assume that the Wednesday in question was the next day, rather than one week’s time. Could this have been improved by stating the number of days until delivery, or highlighting the unusual case due to the holidays?
The new Westfield Stratford City shopping centre uses little green parking tokens. You pick them up on entry, and on exit you take them to a pay machine, insert the token, and are then told how much money you have to pay. After paying, the token is returned. If you you’re visiting for late night shopping, you might not have to pay. When you insert the token, it falls straight out the bottom of the machine. Nothing changes on the display. You might end up putting the token back in a few times, wondering what is happening. Couldn’t the machine show a “parking is free” message, or “nothing to pay”?
The door to the corridor below my flat has a large u-shaped handle, so I invariably pull it even though the door needs to be pushed to open. Wouldn’t it be better to have a flat panel, since the door cannot be pulled?
There are so many small but broken interactions we have on a day-to-day basis. Fixing the small annoying details may seem like a needless expense, or something that can be dealt with later. But in a world where we are surrounded by a constant background of such low level frustrations, paying attention to detail and sweating the small stuff becomes nothing short of miraculous.
by Andrew at December 21, 2011 09:02 PM
December 20, 2011
The tale of my broken Macbook Pro just took a bizarre turn.
Apple called me (not even five minutes after I called them to poke them for an update) to provide an update on the repair. Apparently my laptop works just fine with both the new logic board and the old logic board – just as long as the SSD is not plugged in.
The happy news is I’ve just been saved from a £420 repair bill.
The bad news (apart from having lost a week) is that my Mac won’t boot with the SSD. I have to go back to the old internal hard drive while I decide what to do with the SSD. I’m a little annoyed, as I asked Apple to confirm it wasn’t the SSD, and was told that SSD failures should result in the “select boot device” screen or some other error, not a grey screen. It’s also not clear at this stage if the SSD is outright broken, or if the Mac simply doesn’t like it – I’ll find out when I get it home and plug it into something else.
I’ve seen other reports of SSD weirdness, including Jeroen’s detailed account. This whole situation with Apple hardware and what should be a fairly standard add-on is intensely frustrating. It’s exacerbated by Apple’s boot firmware failing to do anything sensible.
It’s also extremely odd that the whole setup was working just fine for several months before it failed. I bought the SSD in April, and have been reliably booting from it since Lion was released in July. If the SSD has failed, that means it only lasted 5 months of sustained use!
So, lazyweb: what SSD drives are actually confirmed to be 100% compatible with a Macbook Pro? What is the likely lifetime of an SSD? And why are the hardware gods being so unkind to me this month?!
by Andrew at December 20, 2011 12:12 PM
December 17, 2011
I have what is now called the Kindle Keyboard, a 3rd generation Kindle that I bought on 18 October last year. Like my laptop, it’s now dead. Incredible, right?
Aside from observations on how all the gadgets I bought last October are now breaking – less than 2 months outside of warranty – I am left wondering whether in this instance a book has killed my Kindle.
For a few days before the Kindle died, it had been freezing whilst reading The Dervish House, by Ian McDonald
(it’s a great book by the way, don’t let me put you off). Around 80% through, every couple of pages it would hang, requiring a forced restart. I also noticed that this book includes graphics which show up on my TouchPad but not on the Kindle 3, and that on both devices it has horrific paragraph spacing.
Whilst reading up on different ways to restart the Kindle, I came across reference to potential indexing problems. Apparently the Kindle can sometimes get stuck indexing a book. The symptoms sound similar: extremely flaky device, and constantly having to recharge it. (Having left mine to recharge all night, I’ve just plugged it in again and it wants recharging, even though all I’ve done in the last 20 minutes is try to restart it.)
So here I am with a Kindle that won’t restart, once again stuck with the cost of ecosystem lock-in and the apparent need to include the cost of warranty extensions in my purchasing decisions.
Update 22:05: So I just went through the fault with Amazon’s (really quite good) Kindle support telephone line. It’s great to be able to click “Call me” and have them phone you right away and talk you through the issue.
Their suggestion was to plug the Kindle into a laptop for half an hour: apparently, the laptop charging is ‘different’ to charging via the Kindle charger
. And indeed, after 30 minutes the Kindle booted into USB mode. When I unmounted it from the laptop it booted back into the home screen, and I was able to move the cursor down one menu item, but as soon as my books reappeared the device hung again.
I spoke again with Amazon support, and they suggested charging it for longer. Otherwise, as the device is out of warranty, they couldn’t replace it but they did offer me a discount on a replacement device as a one-time exception. The discount was reasonable, but still put the replacement in the realms of “quite a bit more than buying real books and bookcases”, especially in the context of a device lifespan of just 14 months.
I also don’t have much confidence in this approach as the problem feels like a software issue rather than a hardware issue – given the Kindle boots, allows some input (not enough to perform a factory reset), and then hangs. I’m definitely not about to pay for a hardware replacement if the fault is a software bug.
So I guess I’ll finish reading my remaining Kindle books on the Touchpad, and then look around for alternative ereader devices. The ready availability of electronic books is a model that definitely works well for me: I’ve read 81 books on the Kindle in the year since I first got it. It works out at more than one a week – that’s probably the most prolific reading I’ve done since I was at school.
But I’m not going to pay a hardware tax on ebooks every year.
by Andrew at December 17, 2011 08:49 AM
December 14, 2011
...but I'm too lazy, busy and tired to actually find time to write stuff here.
This entry was originally posted at http://quinophex.dreamwidth.org/1127.html. Please comment there using OpenID.
December 14, 2011 06:18 PM
December 09, 2011
There’s lots of noise out there about WebOS being open source. Everything from “WebOS is dead” to “WebOS is saved!” – but what is really going on? Why did Meg make this move now?
Thinking about it, this move makes a lot of sense for HP. Léo Apotheker‘s disastrous handling of the original WebOS announcement effectively destroyed any opportunity for HP to sell the platform. Léo destroyed confidence, and no OEM would want to pick up something that HP could not afford to build. Léo himself stated that building the WebOS business would be a multi-year, multi-$billion proposition. Few OEMs have pockets as deep as HP, and certainly none would have the stomach to invest so heavily – especially after seeing HP back away from the investment.
It would be difficult for Meg Whitman to perform a complete about-turn and start pushing WebOS again with a tablet and smartphone strategy, presumably against the express wishes of the HP board. If there’s no-one to buy the platform, and no politic way to resurrect the platform internally, what are the alternatives? Meg could write off the investment, or disrupt the market. The latter option at least carries the potential to see a long-term return of sorts, and keeps HP’s smart printer dreams alive and leaves the door open for future tablet hardware sales, too.
Whilst the fire sale proved there’s consumer demand for a bargain (as always), I suspect it did little to build OEM confidence in the platform. Everyone is being hammered by Apple: non-iPad tablets aren’t selling well, despite significant investment and endless product announcements. Buying the number two tablet platform isn’t an exciting proposition when it’s only number two by dint of selling at below cost, and when even then it has only a small fraction of the market versus the incumbent.
Meanwhile, Google are tightening their grip on Android. Everything about Android smells from an OEM perspective: the Motorola purchase; the preferential treatment of Motorola and Verizon; the refusal to open source Honeycomb, significant license costs payable to Microsoft; and perhaps worst of all, ‘non-fragmentation’ clauses that seek to end differentiation, in a crowded and contested market where manufacturers desperately need to stand out as they fight over the scraps that iPad leaves behind.
At the same time as Android becomes less appetising, opportunities to adopt other open source platforms at low cost have dramatically evaporated over the last year. In fact, as I tried to illustrate in the death of ‘open’ mobile platforms, we’ve lost Maemo, Symbian, LiMo, and MeeGo in addition to Android. If you’re looking to productise on an open mobile platform right now, your choices are starkly limited. In fact the only platform that’s not been pronounced utterly dead is Tizen – a platform that’s not even alive.
And yet there are plenty of device manufacturers who are desperate to start delivering smartphone hits: LG’s rights issue springs to mind as demonstrable of a manufacturer that’s struggling; even the über-shiny HTC is seeing profits dip; and Samsung will need to switch to an all-smartphone lineup sooner rather than later, if they are to achieve their ambition of not losing all their profit to Apple.
But for all these companies, and any others, there is no sense in buying WebOS from HP. If they buy the platform, they will have to go it alone: running the infrastructure, doing the platform development, handling the developer outreach, building the consumer brand, working with big name brands to get apps on the platform … it’s an enormous resource sink, and a massive diversion from core business. This is the key to the Android success: all those aspects are covered, and the only critical task the manufacturers have is shipping product. And boy, do they understand how to ship product (ship, not necessarily sell).
So the landscape that WebOS fits into as an open source platform is one where Android manufacturers are fighting over scraps in an increasingly locked-down ecosystem; where no other open source platform is currently available; where the manufacturers are desperate for differentiation; and where the most elegant user experience continues to take the lion’s share of the market.
In that context, why wouldn’t the manufacturers consider using an open mobile platform, that has an arguably elegant user experience, and less encumbrance than the only other pseudo open-source alternative?
HP now needs to find a way to establish an equitable level playing field for manufacturers; an open development ecosystem where each can take the platform and commercialise it, free of IP encumbrance and business model conflicts.
As I said about Tizen, there are some obvious metrics to gauge the future success of open source WebOS:
- a unified platform (not disparate platforms for different form factors)
- availability of source code
- open collaborative development
- clear and open governance
- mature web APIs based on open standards
- mature native APIs
- mature SDK and emulator
- devices shipping from more than one manufacturer and in more than one form factor
- route to market for developers (an app store of some description)
- significant developer adoption and mindshare
- being a credible alternative to Android and iOS, as measured by current features, functionality, stability and performance
What’s most interesting is that WebOS already scores pretty highly on some of these indicators: a unified platform around WebOS 3; good web and native APIs; mature SDK; route to market; features, functionality, stability and performance. Let’s hope they can provide effective answers to all the other metrics in a timely fashion, and bring on board the OEMs who can really benefit from this platform.
by Andrew at December 09, 2011 11:26 PM
A funny thing happened today on the way to the codeface.
This morning, as I was packing up to leave London, I did the usual: hit the Macbook Pro power button, hit S, wait for it to sleep, close it, pack it in the Crumpler laptop case, put it in the padded backpack, and head off to the car.
When I got to Norwich, I unpacked the laptop, plugged it in, opened it up and watched as it popped back to life. It seemed to be struggling to talk to the network, so I toggled WiFi off and back on again. No luck: all the London hotspots were still showing up, and none of the local ones were. Then WiFi did the pizza wheel thing, so I switched to iTerm, planning on finding out what was going on, but then that pizza wheeled too. Opera – pizza wheel. Finder – pizza wheel. Uh-oh.
I gave the Mac a few minutes to sort itself out. Sometimes I struggle to wake properly, so why shouldn’t the laptop? No dice. And without a network connection, I couldn’t ssh in to force a reboot. So I took the only option left, and forcefully powered down the laptop by holding down the power button. And then restarted it.
Except the laptop didn’t restart. It got to the first grey screen, but then stayed there. It didn’t even display a list of drives, or an unhappy mac sign.
I didn’t panic, not right away. This has happened on other laptops from time to time. I did the dance: rebooting and holding ‘Alt’ (Option) to select a different boot drive. Resetting the SMC. Resetting the PRAM and NVRAM. Starting in Safe Mode. Giving the Mac some alone time on the naughty step to think about what it had done, and to decide whether it was going to behave again or not. Nothing worked. Every time the Mac restarted, it would get to the grey screen and then do nothing more.
I fired up the Touchpad, and booked myself a slot at the Genius Bar of the nearest Apple Store. Thank goodness Norwich is now a civilised city, replete with its own shiny geek Mecca. I packed up the disobedient Mac and headed into town, stopping only to make some snarky remarks on twitter, including how autocorrect spellchecking converts the Macbook Pro’s Unibody to ungodly. Rather apposite.
At the Apple Store, it was not good news. The kindly genius I spoke to did all she could: booting from network (no joy), ambidextrous yogic keyboard sequences (no joy), reseating the RAM (no joy), taking the laptop into the magical back room to perform secret rituals known only to the Apple inner circle (no joy). My shiny unibody Macbook Pro, bought just last October, was declared dead and in need of a new logic board, which could be mine for just £350 plus VAT. Ouch. I went home to think about that one (and to pour myself a very large whisky).
Fortunately, my original Macbook Pro 1,1 was travelling with me as well (itself the recipient of a new logic board back in April 2010). The plan was to set it up with Windows for my sister this weekend, and then hand it over to her. She’ll not be happy either.
So here I am, back on my old laptop. Ordinarily, I would be unfazed by the switch. Since the advent of MobileMe and Dropbox, migrating between Macs stopped being a problem. For years now it’s merely a matter of a thrashed network for a few hours as the latest updates sync, followed by productive work.
Unfortunately, life after Lion has somewhat shattered that ideal state:
- Lion ‘replaced’ MobileMe with iCloud, so my usernames and passwords (“keychain“) will no longer sync to my old laptop (which is only running Snow Leopard, as it does not have the prerequisite 64-bit processor to run Lion). This is a good argument for building your own cloud infrastructure, or relying on a different third party (Mozilla? Google?) to the OS provider. It also makes me wonder why those of us that previously paid Apple to deliver the MobileMe service would ever trust them again for our business continuity needs.
- Despite having downloaded XCode 4 previously (while I was a paid-up Apple developer), I can no longer download the Snow Leopard-compatible version of XCode 4, as Apple only provide the latest version for download. So I’m forced to use XCode 3 on Snow Leopard, or to pay again to get access to 4.0. Somewhat bizarrely, XCode 4 (and many other Lion-only apps) shows up in the Mac App Store list of purchases with an “install” button alongside it. That’s poor usability: I can’t understand why Apple doesn’t grey-out or disable the install button beside apps that won’t run on Snow Leopard.
- I don’t recall encrypting an external USB drive, so I’m puzzled as to why it refuses to mount on Snow Leopard, requesting a newer OS before mounting. But until I get a Lion machine running again I can’t definitively pin this one on Apple, so let’s leave it as “grumble grumble” for now.
Other than that, I’m somewhat perversely glad to be back on Snow Leopard. No more bluetooth audio problems. No more (far fewer) kernel panics. No painfully sharp unibody case to chafe my wrists. But boy do I miss the SSD. And the extra memory. And the higher screen resolution. And all those extra processors.
In my rush to be productive again, I’ve thus far (in approximate order) slung on: Scroll Reverser (muscle memory will not be denied), iStat Menus (feel blind without knowing what’s happening on my box), Dropbox, Opera, XCode, Google Notifier (so I can click on mailto: links and be taken to GMail, not Mail.app), Colloquy (IRC ahead of the WebOS all-hands tonight), Growl (used with continuous integration tools for test status updates), Cinch, NetNewsWire (keep up with the news whilst this sloooooow laptop compiles), BreakTime (more tea?), MarsEdit, Alfred, Twitter, Homebrew (and thence git, wget, mysql and the rest of my life slowly compiling), TextMate, and Yojimbo (my life in license keys).
A productive day lost. An expensive shiny brick to fix or replace. But thanks to Dropbox and git, I don’t think any critical data has been lost.

by Andrew at December 09, 2011 06:25 PM
December 04, 2011
Web servers
After uploading a large file to the gallery application I'd mentioned in a previous post, I discovered that there's a bug in lighttpd that eats up all the memory when shoving a large file through the proxy module.
The gallery application I'm writing is written using node and includes its own (tiny) web server. I was using lighttpd to handle the SSL part of the connection and simply proxy the requests to and from the application. That large file I'd uploaded triggered the bug when I tried to download it later. It's interesting that the upload went perfectly smoothly.
After having been unable to find any convincing fixes for the problem in lighttpd and being unwilling to try to rethink how my application works, I decided it was time to try another web server.
I toyed with the idea of - and in fact partially implemented, just for fun - a web server written with node but really, that's far more effort than I really want to go to and I suspect it wouldn't have the performance characteristics I'd want. That and I'm far too lazy to want to reinvent the wheel.
Taking my queue from work, I though I'd have a look at nginx. At Proxama, we're using nginx on our Amazon EC2 instances to proxy requests to the django application that is our application server. From my limited experience of setting it up (well, I've only needed to do it once), it seemed pretty simple to configure and yes, after half an hour or so I'd managed to set up web server with all the virtual hosts, SSL certificates, and proxy settings I had before. And with a much cleaner-looking config file ;)
For future reference, here are the tricky bits and caveats I came across:
Make sure you define an index somewhere as there isn't a default
location / {
root /srv/http/;
index index.html;
}
The CA cert goes under the ssl_client_certificate option. This wasn't mentioned in the SSL howto page.
Uploads are, by default, limited to 1MB. This is controlled with client_max_body_size
FastCGI is a dark art and I really hope I never have to see another PHP script in my life.
- php-fpm made it slightly easier
- but it uses a unix socket rather than running 127.0.0.1:9000 which had me confused for a while
- roundcube, despite being written in PHP, is still the best webmail option for me
Don't forget the semi-colons at the ends of lines!
So far, nginx seems to be doing the job very well, solves the issues I was having and (that I've noticed) hasn't created any new ones.
White terminal
The other day, I decided that I was bored of having white text on a black background in my xterms and resolved to spend a day working in black on white.
It didn't work; I'll stick with white on black, thanks.
Chilli lenses
No matter what method one uses (with the probable exception of using rubber gloves), however much one washes one's hands after chopping chillies, some residue remains. This became particularly manifest when taking out my contact lenses last night; yowch.
Having a liking for scotch bonnets does not help ;)
Facebook
After a month's experimental non-usage, I finally deleted my Facebook account several weeks ago. I really haven't missed it. What I have noticed is that I'm quite relieved to not feel compelled to spend several minutes of every day reading through my friend feed :)
Twitter works fine for me and, because it's so full of content and I'm not personally acquainted with most of the people I follow, it doesn't compel me to catch up with every single post. The same applies to Diaspora.
I highly recommend ditching Facebook. There are an increasing number of reasons to do so which I don't think I even need go into ;)
by steve@offend.me.uk (Steve Engledow) at December 04, 2011 12:22 PM
November 26, 2011
I think I'm currently supposed to be out buying a TV at the moment. Or something else expensive. Instead I'm lying on the sofa listening to Whale and drinking tea. That's much better in my opinion, but it reminded me that I hadn't mentioned that I bought a projector.
I had the loan of a projector for a while when I was in Belfast. It was a huge thing that made a lot of noise, but was pretty cool for watching films with. When I moved to the US I decided not to bother with a TV to start with - using my laptop did just fine for most things. Except films. They really benefit from a bigger screen. Especially if you want to watch them with someone else. So I started looking at pico projectors, because I wanted something small and cute that I could throw in a bag with my tiny laptop. At the time the best the pico projectors could do was 840x480, which I felt wasn't really that great. However back in January TI announced their DLP Pico HD chipset, offering a resolution 1280x800.
I kept a look out for projectors using this to appear, and eventually, in July, Amazon claimed to have availability of the Vivtek Qumi. So I bought one. And I'm very happy with it. I'm not a heavy user, and there are some niggles, but it's small and does exactly what I want. In low light conditions it'll happily throw an image all the way across the room, which is more than it's rated at. There's a mini-HDMI connector on the back, so it's a doddle to plug it into my laptop using the supplied HDMI to mini-HDMI cable. The laptop auto-detects the device and extends the desktop appropriate, as you'd expect.
It'll also do media playback itself - there's a USB host port and a micro SD slot on the back. This works ok, and the included remote means you can easily set the projector somewhere above your head and still be able to easily control it. Unfortunately the built in speakers are fairly useless. There's a 3.5mm socket for external speakers, but having to plug something else in detracts from the convenience factor of the built-in media player. Also my unit had the power switch installed upside down (the little red line indicating the power is on actually shows up when it's off), but that's the only complaint I've got about the build quality. There's a little neoprene case to store the thing in as well.
So, er, yeah. I think I can continue to make do without a normal TV for a while longer and avoid the nightmare that I suspect are the shops on Black Friday.
November 26, 2011 12:28 AM
November 23, 2011
With a burning need to fill our fridge, I set out for the land of Sainsbury's during my lunch break today. On the way, a number of strange things happened - or rather, a number of strange things seemed to happen. I suspect they're more a reflection of my state of mind today. I've probably been watching too much Dexter.
Strange thing number 1: The tail
After coming home from rehearsal on Monday night, I'd been forced to park my car on the next street as all of the spaces were taken on mine (something that I'll probably rant about in the future). Having walked to my car, got in, and started down the road, I realised that I'd left my shopping list at home. I began the twisty-turny drive around the block back to my house and noticed that a blue car had been following me all the way along my illogical route.
I parked outside my house (there was space!), went in and grabbed the shopping list. After starting my car up and performing a quick three-point-turn, I continued my pilgrimage to Sainsbury's. Near the end of my road, the same blue car went past me and I'm sure the driver looked at me guiltily.
Strange things number 2 and 3: The cyclist and the woman in the car
After I'd completed my shopping, I returned to my car, filled it with my shopping and got in. I then realised I'd forgotten to buy a lettuce. While crossing the car park, I noted that a woman in a black car who had started her engine around about the time I'd emptied my trolley had now stopped her engine and was watching me walk past her back to the store. Just before I got to the store, I was nearly hit by a cyclist who was cycling across the car park much too fast.
I bought my lettuce.
On the way back to my car, I had to stop for a car that was crossing the car park very quickly; the driver looked the same as the cyclist!
Once I'd got in my car and pulled out of my parking space, I noticed that the woman in the black car had started her engine and was also pulling out!
Strange thing number 4: The geography teacher
On the journey home, I drove past my old high school geography teacher who I'd mentioned only the other day to my old high school IT teacher who I'd bumped into in a queue at the fish'n'chip shop. I've not seen or thought of either of them for some years.
The End, or is it?
Nothing more happened except that I had a strange compulsion to blog about these events ;)
by steve@offend.me.uk (Steve Engledow) at November 23, 2011 03:43 PM
ARGH! Have just finished "The Wise Man's Fear" - fantastic book, but still the middle of a trilogy, without the last book in sight... If you've not read "The Name of the Wind" and "The Wise Man's Fear" by Patrick Rothfuss, I seriously suggest going and picking them up (at least if you read some fantasy, even if you don't they're worth a read I reckon).
by Brett Parker (iDunno@sommitrealweird.co.uk) at November 23, 2011 12:45 AM
November 22, 2011
I've just finished converting this site and blog over to using markdown for its content. I'd been using ReST for work and nearly went with that but decided I slightly prefer the syntax used by markdown.
I really hope this kind of thing catches on; HTML is so ugly and not particularly suitable for writing content. Writing a blog in markdown just feels a lot more natural - like I can just get on with the writing and not have to think about how it will look on a web page.
If only code could be like that! I've had a number of moments of fancy when I've thought it would be great to have a programming language that looks like english. I've tried out a few ideas but never really come up with anything that would keep me totally happy. The best example I've seen of this kind of "literate" programming language so far is Inform 7, which I've dabled with a little.
I still have some ideas and might consider breaking a few of them out again.
I think I'm unecessarily obsessed with dreaming up toy languages. (See obfuna)
by steve@offend.me.uk (Steve Engledow) at November 22, 2011 01:28 AM
November 14, 2011

Eli Sarre from Essential Trading speaking at C-SW Annual Conference
Last Friday (11 November 2011), I was at the Cooperatives-SW annual conference at the Cube Cinema in Bristol, titled “Growing Your Co-operative” and sponsored by the Co-operative Membership South and West. It was another sold-out event, featuring headline talks from Co-op Party member and Labour MP Kerry McCarthy, Eli Sarre of Essential Trading worker co-op (pictured), Carole Theyer of Sparks Inc and Jim Pettipher from Co-operative Futures.
There were also some great workshops – I went to a finance workshop led by Ian Rothwell from Co-operative and Community Finance and a regulations one with Paul Martin of Kabin (details may appear on their event page) – and a brilliant lunch from Runcible Spoon (and those of you who know me will know I have been livid with some co-op event lunches!) with some time to chat and network, although I also went to a fringe meeting about the RISE problems.
The event concluded with the formal AGM of Co-operatives SW (electing a new chairperson and approving transfer to a new co-op corporation) as well as a bit more chat afterwards. I felt it was a great event and well worth my time being there. I’m glad that some people from outside the co-op movement, from community businesses like the Strawberry Line Cafe and a few people considering joining or forming co-ops, were there and I hope it was good for them too.
by mjr at November 14, 2011 03:44 PM
November 13, 2011
At the start of November, Samsung held a Bada Developer Day to herald the launch of Bada 2.0. This followed on from the 2010 Samsung Bada developer day they held (I took some pictures during the 2010 event).
~
Bada was launched in December 2009. It’s part of Samsung’s plan to dominate the mobile industry and to beat Apple’s iOS and iPhone juggernaut. It’s also clever sleight of hand: Samsung’s target is to gain a significant percentage of the smartphone market in 2010, so by releasing Bada as a ‘smartphone’ OS on featurephone devices, they can at a stroke redefine a market segment and meet their internal targets. Or, as Samsung put it:
The vision of bada is “Smartphone for Everyone”. bada’s main goal is not to compete with other existing smartphone platforms. Instead, bada will turn Samsung’s conventional customers into smartphone users by providing cost-effective smartphones.
As The Register said in early 2010 when the first Samsung Wave device was announced:
If Bada had come from anyone except Samsung then it probably wouldn’t be worth pursuing, but Samsung shifts an awful lot of handsets and if the company decides to back Bada properly then it’s going to be an important platform.
Now in late 2011 we can see the steady advances that Samsung has made with their multi-year Bada platform investment, and it does indeed appear that the company is backing Bada properly. Some of the highlights (see the timeline embedded below for the full details): in June 2010 the Wave handset went on sale in the UK; in July Samsung published a developer book; in August the 1.0 Bada SDK was released; in October 2010 the Wave II handset was announced; in August 2011 Bada 2.0 was announced; and later that month the Wave 3 handset was announced along with the Wave Y and Wave M lower-spec devices.
It’s a fairly consistent attempt to carve out a niche for Samsung with their own phone operating system. At first glance at least, Samsung are focussing on many of the things that are critical to platform success: a steady flow of devices, an SDK, comprehensive documentation, a potentially compelling proposition for the consumer, monetisation routes for developers, continued outreach, and an evolving platform.
~
Compared to last year’s event it seemed like there were far fewer attendees this year: maybe less than half (150 or so as opposed to 400 or so). The day was also half as long, with maybe a quarter as much technical content.
Last year’s London developer day agenda began with the usual marketing and positioning presentations, and then moved on to more than four hours of technical content. At times it was really heavy going, but there’s no doubt that leaving the event most people will have had a solid understanding of what Bada was about.
This year’s event had much shorter marketing presentations, followed by an overview of the changes in Bada 2.0, a rather long coffee break for networking (which only works if there’s enough people to network with), some partner presentations, and a final closing talk by David Rowan. David’s the editor of Wired UK, and his talk on the future of technology was amusing, entertaining and insightful. It was interesting of Samsung to add this to the agenda, and is a subtle bit of positioning of Bada.
I did leave this year’s event feeling like there was more I needed to know about Bada 2.0, and many unanswered questions. What about upgrades of older devices to the latest Bada release? Is it possible to publish apps that support Bada 1 and Bada 2? What is the benefit of writing apps for Bada rather than Samsung’s other mobile platforms, Windows Phone 7 and Android?
The last question is particularly important given Samsung’s own analysis, from their marketing presentation, that suggests Bada and Windows Phone will have 17% of the market each in 2012, with Android at 66%:

If those numbers are correct, wouldn’t it be better to develop for Android’s larger market share?
The Samsung Hub appears to be in part Samsung’s answer to that question (though it should be noted Samsung Hub is creeping on to Android devices too). By developing for Bada, you get access to some interesting Samsung-specific functionality, for example being able to share phone content with your Samsung TV or PC. Another cool example I heard about during the day was using a Bada phone as a remote control (including remote viewfinder) for a Samsung camera. Samsung are also borrowing heavily from other mobile platforms with remote device location and wipe (iOS and Blackberry), aggregating contacts across multiple social networks (WebOS Synergy), flip to silence the phone (HTC Sense).

In addition, Samsung are challenging the likes of Apple, Google and Amazon head-on with a range of content provision services: music, films, curated games, books and other media, all under the branding of Samsung Hub.

You’ll note in the pie chart that there is absolutely no mention of iOS. There’s a marketing tactic which involves never mentioning the competition by name, but if you take it too far you end up with graphs like this that are blatantly wrong. Horace Dediu at asymco has assiduously been keeping track of smartphone shipments including Bada (for example here, here, here,here), and fortunately he’s done the hard work of putting together an accurate smartphone platform share chart for Q2 2011, which might help us imagine the situation in 2012. According to Dediu, Android is currently closer to 48%, Bada at 4%, with iOS at 19%.
If Samsung want Bada to succeed, they need to be a bit more honest about the market reality, and have suitable explanations for why developing for Bada makes sense. Perhaps the statistics are the best answer, as they show a real revenue opportunity for app developers:

In summary, Samsung continue to make progress with Bada and to promote it strongly. But whether it is a long-term success or not will depend as much on the devices and the developer experience as on the strength of Samsung’s engagement with the platform.
This is part one of a three part series of blog posts on Samsung Bada. Coming up: a review of the Wave 3, and a review of the SDK and developer experience.
by Andrew at November 13, 2011 04:08 PM
November 09, 2011
I was going to write about a very strange and excellent dream I had the other day. I'd even written some notes down so that I'd remember it but I managed to delete those notes during some git fiddling.
So I'll write about that instead :)
The back story
I've been working on a photo gallery application to use for my photos as I'd become dissatisfied with everything else out there. Here's an example of where I've got with it so far.
The basic features I wanted were:
- that it's easy to upload files and put them into a gallery
- images don't have to go into a gallery
- galleries and files each get a unique, unguessable id
- There'll be no real security as such, but:
- the site will operate over SSL
- "public" images/galleries are simply those whose IDs have been published (on a blog or whatever)
- only a gallery's owner can add things to it
- a user can view a complete list of their files and galleries
- galleries can also contain galleries
- galleries and files can store arbitrary meta data
- the default view for a gallery is a page full of thumbnails
- selecting a thumbnail expands the image and provides a scrolling bar to move through the others
I've implemented all of those features but the UI needs work. For example, there's currently no good method of adding/editing meta data and I need to work out how to do multiple file uploads, I think HTML5 has features I want.
The git fiddling
During the development of the gallery, I've obviously tested it out with quite a number of different images and, at some point, decided to check some of those in to the repository. A while later (this was obvious in hindsight - as most stupid decisions are) I realised that was a bad idea and subsequently removed them from my working tree.
As any git user will know though, the history of those files stays around which means that your .git folder stays very big. After having checked out my repository on another machine and realising why it was taking so long to download, I decided I'd better do something about it.
Enter git filter-branch!
This is a feature of git that I wish I'd known about ages ago. Ok, it's not something that anyone should be using every day (not even every month) but if you find yourself in a situation like mine - the sole user of a repository, misguided check in of a large file in the past - it's a very handy tool to know about.
Here's the man page.
The basic idea is that you ask git to rebuild the current branch by working through every commit from the first to the most recent, run any commands you like and then re-commit that commit. Eventually, you end up with a branch that's made up of entirely new commits that are based on the original commits you made.
For my need, the git command I needed was:
git filter-branch --prune-empty --index-filter "git rm -rf --cached --ignore-unmatch gallery" HEAD
Translated, this means: Rebuild the current branch from the ground up, one commit at a time. Before re-commiting each commit, run "git rm -rf --cached --ignore-unmatch gallery". This means I'm asking git to remove the gallery folder at each commit. --prune-empty means that if, after removing the gallery folder, the resulting commit would consist of nothing else, skip that commit.
After that was done (it took a while), I was left with a nice clean history that contained no mention of the gallery folder.
Now, because git isn't reckless, the gallery files were still kicking around and, if sufficiently motivated, I could bring them back. Even the old commits still hang around in the .git folder just in case. To properly clean up, I git cloned the repository folder. Success! The new folder was smaller by around 90% :) I deleted the original folder and did a forced push to my remote. It's necessary to force push when you change history - something every time-travelling Jedi will know well.
Then I realised that any untracked files were lost forever! That's why I'm not writing about the dream I had that I am still convinced was extremely interesting and revealing.
Unlike this rather rambling article about git. I'm rather tired. Just pretend you read something great and feel a lovely warm glow inside. ALL GLORY TO THE HYPNOTOAD!
by steve@offend.me.uk (Steve Engledow) at November 09, 2011 09:51 PM
November 08, 2011
You should probably ignore this post. I'm just venting. I'll be better after a nice cup of tea.
Things that are causing me to fume about the fact Gnome Shell just hit Debian/Testing:
- Spacefun came back. Even on GDM3. Just fucking die already.
- I had to reboot to get bluetooth working again.
/desktop/gnome/shell/windows/workspaces_only_on_primary set by default? SRSLY?
- It failed to carry over my previous monitor settings.
- I'm pretty sure I don't have a latent desire for a machine running OS X, whatever the GNOME devs might think.
- How many mouse clicks to get to the list of applications?
- Er, why have you changed my default apps? (Why is clicking a link in a terminal opening Epiphany rather than a new tab in Iceweasel?)
I update my testing boxes (work + home laptops) almost every day. It rarely breaks, and certainly when it does I accept that's what I get for doing rolling upgrades. I can't remember the last time I did an upgrade that actually made me angry.
Also I suspect this thing is going to have a complete fit on my binary nVidia/hacked up DisplayLink configuration at work (the DisplayLink side refuses to do 3D for starters). Perhaps better not to upgrade there until I have a sufficient block of free time.
Maybe it's time to go back to evilwm. I only stopped because I wanted a dock for wifi/bluetooth etc applets on my laptop that didn't get hidden when I fullscreened things. Implementing _NET_WM_STRUT might make that doable...
(I'm sure some of this is just dealing with the change but it's a bit bloody difficult to deal with a complete change in user interface that hasn't even managed to carry across settings from the old one.)
November 08, 2011 05:53 AM
November 07, 2011
So you want to install Windows on your Macbook Pro? It’s easy, as long as you haven’t replaced your internal SuperDrive with an SSD upgrade.
The Apple Boot Camp Assistant doesn’t let you create a bootable USB if you’re on certain hardware. This seems to be because quite a lot of Apple hardware doesn’t support booting from USB (for example, my mid-2010 unibody Macbook Pro).
Almost all the documentation you’ll find on installing Windows on a Mac is aimed at those who can burn and boot from a DVD, which obviously doesn’t work if you have no DVD. There’s also lots of documentation about workarounds using rEFIt and USB keys or virtual machine software, but few clear descriptions.
After a weekend of fighting, I’ve found a way that works for me. My setup: I have an internal SSD running Lion, and an internal HD running Snow Leopard. I have a copy of Windows 7 as an ISO (disk image). Here’s what I did.
In Lion, I fired up Boot Camp Assistant and used it to shrink my Snow Leopard partition and add a Boot Camp partition. I also let the Boot Camp Assistant download the latest Windows support software from Apple.
When you start Boot Camp Assistant, it will warn you about not having an optical drive. You can ignore this warning:

After clicking Continue, you’ll be able to select tasks for installing Windows. If your Mac doesn’t support booting from USB and does not have an optical drive, the option to create a Windows 7 install disk is greyed out. Select the other two options and click Continue:
BootCamp will download the drivers (almost 700mb, it’ll take a while), and then move on to the drive partitioning. I selected my Macintosh HD as the one to partition, primarily because it’s way bigger than the SSD but also because I don’t know how well rEFIt and Windows will work with Lion’s whole disk encryption. Because I want Snow Leopard around, I chose to create a new second partition for Windows (shrinking the Snow Leopard one in the process) rather than taking over the whole disk:
Select the amount of space you want to give to Windows, and then click Continue:
The process of repartitioning can take some time, as Mac OS X has to shuffle around the contents of your Mac OS partition in order to make space for Windows. This was particularly bad in my case as I deleted several GB of data prior to starting the whole procedure.

When you get to the end, you may get an error about not being able to install – just ignore that.
I rebooted into Snow Leopard and installed rEFIt and VMWare Fusion trial edition. The plan is to use VMWare to boot the Windows ISO and install the initial Windows setup files on to the Boot Camp partition, and then to reboot into that disk and let Windows carry on without VMWare.
To do this, you first need to configure VMWare to use the Boot Camp partition ‘raw’, as a real disk rather than a virtual disk. To do this, open up a terminal and type:
mkdir Virtual\ Machines
/Applications/VMware\ Fusion.app/Contents/Library/vmware-rawdiskCreator print /dev/disk0
The output will be something like:
Nr Start Size Type Id Sytem
-- ---------- ---------- ---- -- ------------------------
1 1 409639 BIOS EE Unknown
2 409640 583984384 BIOS AF HFS+
3 584656896 392116224 BIOS B Win95 FAT32
Identify the correct drive number on the left – as a guideline, it’s probably listed as FAT32 or NTFS formatted under ‘Sytem’ (sic).
Next, create the raw disk description:
/Applications/VMware\ Fusion.app/Contents/Library/vmware-rawdiskCreator create /dev/disk0 3 windows7 ide
This will give you two raw disk description files:

Next, start VMWare Fusion and select “New…” from the File menu. Select “Continue without disc”:
On the installation media page, drag and drop the windows7.vmdk file previously created onto the “Use an existing virtual disk” drop-down (where it says “None”). You can’t just select the disk by clicking the radio button and then the drop-down, because the disk files are in a different format and will show up greyed-out.
You will be prompted to convert the virtual disk to a newer format. Select “Don’t Convert”. If you select “Convert”, you will get an error about insufficient permissions. It works just fine without converting.
If all went well, you should see your vmdk listed and be able to click Continue:
Accept the defaults for the operating system and version, and click Continue:
On the last page, click “Customize Settings”:
Accept the default save filename and click “Save”:
You’ll then be taken to the Customize Settings screen, where you want to configure the ISO to boot from. Click on the CD/DVD (IDE) option:
And then select the location of your Windows 7 ISO:
Go through preliminary install up to the point that Windows does the first reboot. At this point, power down the VM, and reboot the computer.
You should see the rEFIt boot prompt:

Select the windows partition, and your computer should boot into Windows and setup should continue. When setup is done, copy over the Windows support software that BootCamp Assistant downloaded, and install it.
At this point, you should have a working Windows install. Congratulations!
by Andrew at November 07, 2011 06:40 PM
If you’re trying to install the VirtualBox guest additions on a fresh CentOS install, you may find that the kernel drivers compilation fails. To work around it, try this as root:
yum install gcc kernel kernel-devel -y
That worked for me.
by Andrew at November 07, 2011 03:55 PM
November 03, 2011

As an alumnus of the University of East Anglia (in Computing), I was shocked to hear that UEA are closing the School of Music.
As an Honorary Research Fellow of the School of Music, who saw first-hand some of the brilliant teaching and research that takes place there, I am furious.
MUS has long been a source of inspiration, passion, innovation and excellence, and I am amazed that UEA does not recognise this. UEA putting a dubiously-evaluated financial bottom line ahead of excellence in teaching is extremely disturbing.
The UEA press release about the School of Music is amusing and fact-free. In one particularly entertaining bit:
the University will draw on best practice from other universities’ experience of handling departmental closures of this kind
I would have thought they could also draw upon their experiences of closing the School of Physics, which they did some years back. How many departments will be left at UEA in a few years’ time? How many other UEA departments have been kept on life support for decades, and are still around today?
The report of the Music Review Panel is available.
Perhaps some of the money UEA pays on ridiculous rebranding and management consultancy could be funnelled into a proper recruitment effort, to bring the School of Music up to the minimum staffing recommended in the external review report from 2002.
There’s a Save UEA Music website. Please consider signing the petition. There’s also a twitter account and Facebook page.
by Andrew at November 03, 2011 12:14 PM
October 27, 2011
There are several ways you can get PostgreSQL up and running on Mac OS X Lion (see for example OS X Lion #2: PostgreSQL as default database, PostgreSQL 8.4 on Mac OS X 10.7 (Lion), How to install PostgreSQL on OS X Lion). However, if you’re already a Homebrew user, perhaps the easiest and best-integrated route is to install the postgresql recipe for homebrew:
brew install postgresql
Unfortunately, this doesn’t give you world peace, a cure for cancer or a working postgresql install: there’s also some post-install configuration required. For more information tailored to your install, type:
brew info postgresql
The extra steps boil down to running initdb and then pg_ctl start.
(Sound familiar? It should do – I did the same with MySQL yesterday.)
by Andrew at October 27, 2011 04:20 PM

UWE Frenchay, Bristol: Venue of the RISE EGM
The RISE co-op is the sole shareholder in the Social Enterprise Mark CIC and its members have been called to an Extraordinary General Meeting during the lunch break of next Tuesday’s “Knowing and Growing” conference at UWE Bristol. The RISE board has proposed Four Special Resolutions that would dissolve the co-op and transfer all assets as windfalls to the SEM CIC and a trust, ignoring RISE Ltd’s Memorandum of Association. software.coop is calling on other RISE members to attend the EGM and oppose this demutualisation attempt. Update: dissolved but not demutualised (see below). Update 2: new vote called (see below).
RISE is constituted as a common ownership co-op and its Memorandum of Association contains a clause that directs the assets to be transferred to another common ownership social enterprise organisation if the co-operative is dissolved. However, unlike the CIC asset lock, there is no independent regulator enforcing it and, unlike in many co-ops, there has been no requirement for new members to pledge to obey the RISE common ownership clause at an individual level and there has been no member education about common ownership in the last three years.
This demutualisation is the wrong solution for RISE because:
- it has recieved much public money and money from members on the understanding that it would be kept in common ownership;
- there are common ownership social enterprises that could really benefit from the legacy assets at this time of budget cuts, but if those assets go to a CIC, they are lost from common ownership;
- the EGM is the day after the global launch of the United Nations International Year of Co-operatives, which is about promoting mutualism around the world and the RISE co-operative should support this;
- many RISE members are mutuals, including the world’s largest consumer co-operative and demutualisation would be embarassing to them;
- demutualisation should be discussed seriously, through a proper democratic process before the regular Annual General Meeting, not sprung from the board to members in a short meeting during the lunch break of another event;
- the proposal has not been published on RISE’s website or email newsletter;
- appointing the former directors of a dissolved co-op as trustees without member oversight seems unlikely to secure the assets in the long term.
software.coop will vote against the demutualisation, in favour of social enterprise, and calls on other RISE members to show solidarity with the co-operative and common ownership social enterprise movements.
Update 2 November: rise has announced its dissolution but they’ve got to “give further consideration” to where the assets go because the demutualisation resolutions were defeated. I fear that they’ll still try some way to bail out the Social Enterprise Mark despite the rejection, but I hope they’ll do the right thing and give the assets to good common ownership social enterprise like the RISE Memorandum of Association requires.
Update 10 November: We got another “Dear Member” letter today, dated 7 Nov, saying “there are two key issues to be resolved” (which is rubbish because the Memorandum offers a default – I think the board just hates that clause) and that there will be a new postal vote that will run from 18 November to 5 December.
by mjr at October 27, 2011 11:58 AM
A while ago, I decided to learn how to use the canvas and that for my first project I was going to write a breakout clone. Pretty standard fare for a first-time project :)
After writing some routines to draw blocks on the screen some weeks ago, I finally got around to doing some real work on it this evening. Two or three hours later, I'd ended up with a mostly working, radial version of Breakout.

Click here to play it
There are still some obvious bugs (the collision detection is a bit shoddy) and it doesn't keep score or do anything special when you win but it's reasonably fun and I'm quite pleased with what I've achieved in just a couple of hours.
The code is released under the If-You-Steal-This-Without-Asking-Me-I'll-Bite-Your-Legs-Off licence ;)
by steve@offend.me.uk (Steve Engledow) at October 27, 2011 12:06 AM
October 26, 2011

This was non-obvious to me, so I’m documenting it here.
There are several ways you can get MySQL up and running on Mac OS X Lion (see for example Rob Allen’s Setting up PHP & MySQL on OS X 10.7 Lion, StackOverflow’s Getting MySQL work on OSX 10.7 Lion, or Installation of MySQL server on Mac OS X Lion). However, if you’re already a Homebrew user, perhaps the easiest and best-integrated route is to install the mysql recipe for homebrew:
brew install mysql
Unfortunately, this doesn’t give you instant fame, fortune or a working mysql install: there’s also some post-install configuration required, which I missed. For more information tailored to your install, type:
brew info mysql
The extra steps boil down to running mysql_install_db and then mysql.server start.
~
One thing that puzzles me about a lot of the mysql documentation (and in fairness other similar software) is the insistence of providing post-install configuration instructions like mysqladmin -u root password 'new-password'. This is such a bad idea, as it means your new password is stored in your console history. For fun, try grep password ~/.bash_history and boggle at the number of times your password is listed in plain text.
These command-line utilities are all perfectly able to prompt you for the password text; entering mysqladmin -u root password or mysqladmin -u root -p password will result in a password prompt, which prevents the password showing up in your history. It makes sense because you never know who will be looking over your shoulder as you scroll back through your command history.
~
One last thing: you might like to read Removing MySQL from OSX Lion if you’d previously installed it some other way. Some day Apple will provide an uninstaller, but until then…
by Andrew at October 26, 2011 01:31 PM
October 25, 2011
Last week I set off for rehearsal a little early because the sunset was beautiful and I wanted to drive through the rose and mauve air (it really does that on the estuary!). This week there was rain. it hasn't rained for ages, and the frogs have been waiting a long time to get out: there were hundreds of them, ecstatically leaping all over the little roads. Fortunately there wasn't much other traffic, so I could drive very slowly and swerve.
Last night we had thunderstorms, or one thunderstorm passing here three times. After the rain, the air is clear, the grass and small herbiage are green again, and wildflowers have blossomed. The sky is almost clear to the east; in the west lush multi-grey clouds are heaped like silk cushions against which the red, orange, and gold autumn trees glow so brightly they sound like a symphonic tone poem.
by sunflowerinrain (noreply@blogger.com) at October 25, 2011 11:02 AM
October 24, 2011
It’s been busy at our co-op but I’m never too busy to support calls for the freedom to install debian (or any other Free and Open Source Software Operating System) so I’ve signed the FSF-led public statement on so-called “Secure Boot”.
“This could be a feature deserving of the name, as long as the user is able to authorize the programs she wants to use, so she can run free software written and modified by herself or people she trusts. However, we are concerned that Microsoft and hardware manufacturers will implement these boot restrictions in a way that will prevent users from booting anything other than Windows.”
So please, read the full thing and consider signing it yourself. If you want to watch for further news on this topic, Matthew Garrett’s Journal seems to be the bomb.
Right, well, it’s another busy week this week, so it might be the weekend before I find time to blog again, but posts will be a bit more frequent next week: watch this space!
by mjr at October 24, 2011 06:11 PM
October 22, 2011
Originally posted on Rolling Release. I'm reposting this here as I recently broke my finger and so made a few changes to my xmodmap settings to accomodate the ensuing one-handed typing. Once again, I had to search for how to use xmodmap and came upon my own post. I'm keeping it here for easier reference and in the hope the details will burn deeper into my mind. It was written for a tutorial column so excuse the tone.
About xmodmap
Xmodmap is used to control the mappings between the keys you press on
the keyboard and the results you will experience on screen.
Some common usage examples of xmodmap are:
- Disabled and/or relocation changing the caps-lock key
- Mapping certain foreign or other special characters to keys on your keyboard
- Enabling "media" keys
- Terminology
To achieve things like the above, you’ll be mapping KeyCodes to
KeySyms and KeySyms to Modifiers so it’s obviously important to
understand exactly what xmodmap means by these terms (I certainly
didn’t when I started out).
KeyCode
A KeyCode is a number generated by your keyboard when you press a
certain key. For example, the space bar usually produces the KeyCode
128.
KeySym
A KeySym is simply a word used to name a type of key. This concept is
very important because it means that applications don’t need to
interpret the information output by your keyboard directly; they can
refer to keys by name.
As mentioned above, most keyboards produce the code 128 when you press
the spacebar but it would be possible to have a very non-standard
keyboard that outputs the KeyCode 64 when the spacebar is pressed.
You’d certainly want to ensure that code 64 is interpreted as a
spacebar press without having to rewrite all the applications you use.
To do this, we’d map the KeyCode 64 to the KeySym "space".
Modifier
A Modifier is a special kind of key that can be held at the same time
as another key and modify its output. For example, when you press the
A key on your keyboard, you see the letter ‘a’ appear on screen. If
you hold shift and press A, you’ll see the letter ‘A’ – shift is a
Modifier.
Let’s start with looking at modifiers to get the hang of Modifiers and
KeySyms…
Modifiers
There are 8 modifiers:
- Shift
- Lock
- Control
- Mod1
- Mod2
- Mod3
- Mod4
- Mod5
Xmodmap provides three different operations for changing the way
KeySyms are mapped to Modifiers: clear, add, and remove.
My favourite example – turning off caps lock:
$ xmodmap -e "clear Lock"
This command clears the Lock modifier meaning that no keys now produce
a caps lock effect. Bliss!
To reassign the caps lock key to do something more useful:
$ xmodmap -e "add Shift = Caps_Lock"
This adds the KeySym "Caps_Lock" to the list of keys that produce the
Shift modifier. In other words, we’ve turned caps lock into another
shift key.
If you change your mind and want to stop the caps lock key behaving as
a shift key:
$ xmodmap -e "remove Shift = Caps_Lock"
This is basically the opposite of the previous example.
Mapping KeyCodes to KeySyms
Now we’ve got the hang of changing the Modifiers, we’ll round off by
looking at mapping the physical keys on your keyboard to produce the
results you want.
First things first, you’ll need to know the keycode of the key you
want to change. To do this, you can use xev.
$ xev
After running xev, press the key in question and you’ll see some
output like this in your terminal:
KeyPress event, serial 21, synthetic YES, window 0x800001,
root 0x40, subw 0x0, time 1539131, (69,8), root:(683,402),
state 0x0, keycode 63 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
The third line is the one we’re interested in. You’ll see the word
keycode followed by the number you’re going to need next, in the
example above it’s 63.
Now we’re going to map that key to give us some foreign characters.
$ xmodmap -e "keycode 63 = e E eacute Eacute"
The "keycode" command maps a KeyCode to a number of KeySyms. The order
of the KeySyms is important as it represents how the KeySyms are
derived.
- The key pressed alone
- With the Shift modifier
- The key pressed along with the Mode_switch key
- With Mode_switch AND Shift
Mode_switch is just another keysym and you can map it to a chosen key
on your keyboard like this:
$ xmodmap -e "keycode 64 = Mode_switch"
My personal choice is to map Mode_switch to my AltGr key. To do this,
you can use a special version of the keycode command.
$ xmodmap -e "keycode Alt_R = Mode_switch"
This asks xmodmap to lookup what keycode(s) are currently assigned to
the KeySym Alt_R (right alt) and assign them to Mode_switch as well.
So with the above mappings, here’s what happens when I press the keys
on my keyboard:
| The key on it’s own | A lowercase ‘e’ |
| With shift | An uppercase ‘E’ |
| With AltGr | A lowercase e-acute (as used in French for example) |
| With AltGr and shift | An uppercase E-acute |
Saving Your Mappings
Once you’ve decided how you’d like everything set up, you obviously
don’t want to have to type all those xmodmap lines in every time you
start X. To save you from this, you can just put all your mapping into
a file (I save mine at ~/.xmodmap) and then just tell xmodmap to load
from it.
$ xmodmap ~/.xmodmap
Ideally, you’d add that line to your .xinitrc so it runs automatically
when you start X.
The End
That just about wraps up this howto. I hope somebody finds it useful
as I certainly found xmodmap confusing in my early days. Now I have my
keyboard customised to do just what I want and I couldn’t live without
it.
Useful Links
A few useful links about xmodmap.
by steve@offend.me.uk (Steve Engledow) at October 22, 2011 09:02 PM
October 21, 2011
Welcome to my new look blog. Oooh, shiny.
I’ve been trying to upgrade the software behind this blog on and off for quite a few years now. It was back in 2008 that I installed MovableType 4.12, and although MovableType has served me well I’ve been struggling to keep it maintained – for example, my custom templates were a bit broken, and the spam handling wasn’t nearly as effective as I wanted.
It’s taken a few days of beating up the server, but WordPress is finally installed. I’m still working out a few kinks, but for the most part everything is now in place. In case anyone else is looking to migrate, here’s the gory details on the incredibly painful process I had to go through.
The first thing I did was made sure my server was running the latest version of Ubuntu, 11.10. This turned out to be a slight mistake – and I lost some time to fixing a logging regression. Latest and greatest is not always best, especially when you’re on a virtual server.
I made sure my MovableType data was as good as it could be. I cleared out any draft articles that were hanging around, and I dealt with in excess of 1200 spam comments. The final tidied- up data includes almost 1400 blog posts and over 800 comments – accumulated over more than eight years of writing.
I opted to install WordPress from the Ubuntu wordpress package, as one of the reasons my MovableType install got so old was because it was a manual install from source packages.
A couple of tips:
- I did the initial deploy on my test domain, and kept refining it until I was happy. I thoroughly recommend this approach, as otherwise you could be looking at sleepless nights and days with your blog out of action. There is some pain in the final switch over to the live domain, but it’s worth it.
- It took several attempts to find the right solution in terms of configuration and data import mechanism. It was therefore useful to reset the WordPress installation each time by running /usr/share/doc/wordpress/examples/setup-mysql with the -d flag (for ‘destroy and purge’), to get back to a vanilla state before trying again.
The final process was then something like:
- From a clean vanilla install, I went through the initial WordPress configuration: running setup-mysql specifying the database name and the website domain, then visiting the website and going through the long and tedious setup (uh, entering a username and password – crazy simple!).
- I downloaded, installed and enabled the bulk delete plugin to let me get rid of posts when I got the imports wrong.
- I deleted the default first post that WordPress automatically creates.
- Trial and error proved that the WordPress-provided movabletype and typepad importer is useless. It only imports the bare minimum of data. The movabletype backup importer is far more complete, so I installed that.
- I created a backup of all my MovableType blogs from the MovableType web interface (top-right System Overview menu, Tools, Backup). I chose .tar.gz archive format, and set the Target File Size to 300KB to make debugging broken exports a little easier. The backup should be unarchived into the wp-uploads/domainname/import folder.
- It turns out the MovableType export does not always correctly encode all entities, and this broke the import. It also transpired that most recent moderated comments had an incorrectly set junk status. I wrote a fix_export.sh script to fix both these problems. I then ran the fix script on my data prior to triggering the import.
- Through the backup importer plugin screen, start the import. You might want to keep an eye on your webserver error logs for any failures, as the importer doesn’t report back errors.
- Once the import was complete, I updated the database manually to tidy up comments, specifically replacing ‘Registered User’ with my real name: update wp_comments set comment_author=’Andrew Savory’ where comment_author_email=’the email address I used’;
- The next challenge was to fix WordPress’ ugly URL scheme. By default, every post hangs off the index page with the post ID as a query parameter. I decided to go for a year prefix followed by the post ID.
- The biggest problem with the migration is that the URLs for MovableType and WordPress are completely different. Lots has been written about clever ways to fix this: Using Permalinks, MovableType to WordPress without losing your permalinks, From MovableType to WordPress in 301 Easy Steps, and so on. But there’s no guarantee post IDs will be the same across the two blogs, so the simplest solution seemed to be to write a map.pl script to create rewrite rules to handle this. See Apache Module mod_rewrite and Redirect Directive for more information. The output of the mapping script was 1876 lines, so I kept it in a separate file and used the Include directive to import it into my webserver config.
- I added a few manual redirects for the various old RSS feed URLs to point them to the new URLs. See WordPress Feeds and Customizing Feeds for more information on the feeds available.
- I then changed the default about page, and then fixed the configured WordPress blog address and site address in the general settings. This also involved some renaming (for example the config file in /etc/wordpress).
- Finally, once the blog was at the correct address, I updated the header to suit the season, went mad adding a ton of plugins and tweaking widgets. In particular I added Google Analytics (no more manual editing of MovableType templates to make it work!), and did some work to ensure scaling and caching: see also WordPress Optimization/Caching.
There were a few teething troubles – when I first put the new blog live, WordPress decided to screw up the URL scheme, for example. Some of the plugins are still distinctly unhappy. There’s still a few broken images on the earlier posts, as I was inconsistent in whether I used flickr, uploaded images to the blog, or just copied them onto the server. Some of the posts have technorati tags in the body rather than in the metadata. Some of the mobile blog posts are badly-formatted and show up CSS in previews. I’m slowly working through all those problem posts and fixing them.
Hopefully readers will find the new look easier on the eye, with better access to the content. Happily, all the old links should still work, too. I’m looking forward to blogging without the nagging sense that I’m dumping content into an old legacy system. And to playing around with more plugins. Shiny!
by Andrew at October 21, 2011 06:00 PM
If you happen to have upgraded to Ubuntu 11.10 but are running an old kernel (for example, you’re working on a hosted virtual server), you may see the rsyslogd process running away with your CPU.
This seems to be a nasty regression in Ubuntu, and is documented in rsyslogd stuck at eating 100% (or more) CPU after upgrading to Ubuntu Natty Narwhal, and is also in Launchpad bug 523610 (including a comment just 8 hours prior to mine).
A workaround that seems to provide a fix (but is by no means guaranteed sane or healthy) is to downgrade the package:
- Add maverick lines back into your /etc/apt/sources.list:
deb http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu maverick-security main restricted universe multiverse
- apt-get update
- apt-get install rsyslog=4.2.0-2ubuntu8
The rsyslog should be restarted automatically during the downgrade, and you should then see your CPU return to normal.
by Andrew at October 21, 2011 03:30 PM
October 18, 2011
Following my frustration at the DroidCon venue having no cycle facilities (tweet tweet), I was pleased to see that ExCel London (host of Nokia World 2011) do in theory have secure bike parking. It took a while to find this information, though. It seems to me that if enough conference attendees start bugging venues about the availability of cycling facilities, the situation will soon improve.
Note that the Nokia World event website specifically does not mention cycling as an option – something to take into account when you read the greenwashing on the Environment section of Nokia’s website.
Here’s a slightly-amended version of an email I just sent to ExCel London on the subject:
Dear ExCel London,
I am delighted to see that under the ‘Green Credentials‘ section of your website you have a Transport page with information on cycling:
Cycling to ExCeL London?
We welcome those who choose to cycle to ExCeL and provide secure, CCTV monitored cycle parking racks both in our west entrance taxi drop off area and outside the main east entrance (subject to the area reopening in May 2010).
To plan an approved cycling route to the venue from your start point, please use this link for the Transport for London Cycle Journey Planner.
However, it would be even better if you added a ‘By Bike’ category to your general travel page, as this information is currently not immediately obvious to those wishing to travel to ExCel by bike.
You might also want to update the information on your website, as it currently refers to works happening to the main east entrance in May 2010.
Thanks,
Andrew.
by Andrew at October 18, 2011 01:46 PM
October 17, 2011
The TV Licensing staff are on strike due to a pay dispute. This seems as good a time as any to talk about the TV license and the notorious enforcement company, TV Licensing.
I am a big fan of the BBC. Although it feels like they have struggled to find the right balance in programming over the last few years, I still think the BBC is incredibly good value for money, and that a taxpayer-funded media service is hugely valuable to society.
Some of you may recall BBC promos like or “bbc news on your mobile“, “we believe in listening“, “new music“, and more overt TV license adverts like ”bbc for small people“, ”because of the unique way we are funded“, “what has the bbc ever given us“, “you make it what it is“, “vic and bob“, or “the complaints department“. I’d be surprised if you can watch all of those without at least one giving you goosebumps, without one of them making you smile. The BBC truly delivers world-class productions across a range of media. I think it’s terrific value for money and so I gladly pay the £145.50 annual fee.
So it’s bitterly disappointing that the BBC’s glorious reputation and legacy is tainted here in the UK by the thuggish and threatening behaviour of the TV license collection agency, “TV Licensing“. Here’s one example, my own experience with them.
~
TV Licensing know which properties contain TVs based on two sets of data: firstly, every retailer that sells TVs has to capture the address it will be used at; and secondly, an assumption that every address in the UK has a TV unless proven otherwise. They also claim to have “detector vans” that can tell when you’re watching live broadcast television.
~
I don’t watch live TV when I’m in Norwich (I plug in the laptop to watch films or to catch up on stuff via iPlayer), but I do occasionally watch live TV when I’m in London. So I switched my TV licence from the Norwich address to my London address, and I notified TV Licensing online that I don’t need a TV licence at the Norwich address, specifying that the TV there was used for watching non-live programmes.
This notification they subsequently acknowledged. Their acknowledgement, addressed to me and sent in March, stated:
Our records have been updated and you won’t receive any more letters from us for almost two years.

Unfortunately, within just three months, a threatening letter arrived on my doorstep, addressed to “The Present Occupier”, using language such as “it is illegal“, “you may later be prosecuted“, “taken to court“, “found guilty“, “maximum fine of £1000“. Remember – this is for an address where I have declared I don’t need a licence, and received an acknowledgement and a promise of two years of peace and quiet just a few months previously.
This was followed by a subsequent funereal letter telling me my details are being passed to enforcement officers. The message is deliberately threatening: the very name “enforcement officer” is designed to intimidate and lend legitimacy; again, language like “you are breaking the law“, “taken to court“, “fined up to £1000“, “visiting your area soon“, “may call at your home any time during the day or evening or at the weekend“, “enforcement visit“. And this is for an address that has been correctly and properly identified as not needing a licence via TV Licensing’s own website.

A month after that – the third month in a row I received a threatening letter, and barely 6 months after declaring the address does not need a licence, I get an official warning. The “Enforcement Officers are authorised to visit your address“, the letter tells me. Watching TV is “against the law“, “they may interview you under caution, in line with the Police and Criminal Evidence Act“, “the first step in a legal process“. Remember, it is not illegal to own a television, it is not illegal to use a television to watch content other than broadcast television, and there is no legal requirement to buy a TV licence in these circumstances.
And finally, within a few weeks of the Official Warning, I received yet another letter, this time addressed to “Legal Occupier” rather than “The Present Occupier”, and with a comparatively friendlier tone (“we want to help you get licensed so you can enjoy TV legally”).
Despite doing everything by the book by ensuring the property where I watch live TV is covered by a licence, and providing TV Licensing with notification that a licence is not needed for the other property, I have so far received four warning letters – three of which were incredibly threatening.
Sadly, this is not an isolated case. There’s a TV Licensing blog, a TV Licensing website, another TV Licensing website, forum postings, newspaper articles, blog posts, reports of heavy-handed behaviour, and hundreds of thousands of search results on the issue.
I never thought I’d say it, but Noel Edmonds is completely right.
As media consumption habits go through a period of dramatic change, it’s more important than ever that the BBC explains the value of the TV licence and keeps the licence-payers on side. But the behaviour of TV Licensing is so appalling that I fear future generations will learn to hate the BBC and the intimidation that comes from owning a television.
by Andrew at October 17, 2011 01:09 PM
October 15, 2011
Installing a Color Profile for a Lenovo Thinkpad W510 in Ubuntu Linux Download the monitor drivers exe file from Lenovo's Support Site Ok won't unpack as an exe archive or cabextract...bah ok install wine and unpack it in that. wine 79oi26ww.exe Open the self extracting installer in wine and capture the files it writes out to Drivers/Win/Monitors within the .wine directory. Bah first problem........get-edid is thowing a fit so I don't know what panel I have Let's see what options are there for my resolution grep -i 1920x1080 TPLCD.INF Ok only 2 options LEN40B2 and LEN40B3 now I know I have the 95% Gamut display and one is listed in the ini as %TPWFHD% = TPLCDWFHDG95.Install, Monitor\LEN40B2 ; 15.6 Wide FHD 16:9 LED B/L 1920x1080 Gamut95 Right so that's me then :) Sooo lets look around in the same ini file and see what colour profile that really maps to shall we ? grep -A 2 \\[TPLCDWFHDG95.Install] TPLCD.INF [TPLCDWFHDG95.Install] ; Wide FHD 16:9 1920x1080 Gamut95 DelReg=DEL_CURRENT_REG AddReg=HD1920, DPMS, ICMG95 Almost there, so it maps to the ICMG95 profile which in turn grep -A 1 \\[ICMG95] TPLCD.INF [ICMG95] HKR,,ICMProfile,0, TPLCD95.icm So there we go...that's the file I need to load into gnome-color-manager, Who said Linux wasn't easy huh ?(update, this is now broken in Ubuntu 11.10 as you cannot load a Colour profile for an unknown display so now I really do need to fix edid)
October 15, 2011 08:04 PM
I’ve been using this for a while and had it recorded on a private on a private wiki. I was just tidying up my hosting account and thought I’d get rid of the wiki and store any useful info from it on my blog
Clone full subversion history into git repository (warning, may take a long time depending on how many commits you have in your Subversion repository).
1
| $ git-svn clone -s http://example.com/my_subversion_repo local_dir
|
-s signifies trunk/ branches/ tags/ exist in the svn repo (standard repository setup)
Create branch for local changes and check it out
1
| $ git checkout -b XXXX-description # where XXXX is a ticket number
|
Make my changes in the branch…
Make my commits in the branch…
Change back to master branch
Merge branch as one commit to master
1
| $ git merge --squash XXXX-description
|
Commit changes to master branch:
Push changes back to svn:
Resync local_changes to master:
1
2
| $ git checkout XXXX-description
$ git rebase master
|
October 15, 2011 02:12 PM
October 09, 2011
Dave has written a detailed post on the types of community that Tizen hopes to target. It’s great, and I recommend you read it through. For more background, you should also read my blog post on what’s really going on with MeeGo and Tizen.
There are many details still to come out about Tizen over the coming weeks and months, but I think one of the most interesting and valuable lessons we can learn from Tizen will be the effect that “platform resets” can have on a developer community.
A platform reset is what happens when a significant force in a given community decides to make a fundamental shift in project direction. It’s especially prevalent in projects that have few large corporate sponsors, and projects that are being sustained around otherwise-closed ecosystems.
A platform reset is what happened for example when Maemo and Moblin became MeeGo: a lot of the underlying direct and indirect engineering effort around Maemo was ostensibly thrown out, to be replaced by Moblin’s package system and by a lot of new integration infrastructure and tools that were developed or repurposed specifically for MeeGo. To a lesser degree, it’s also what happened when Ubuntu switched to the Unity desktop.
~
There are a number of effects that platform resets can have on a project. Sometimes, the clean slate enables developers to get involved, take more ownership, and leads to a huge leap forward in community. Sometimes it spurs innovation, and gives people a chance to re-imagine how things should work. Sometimes it is perceived as a negative, with developers wondering about the future of a project and their contributions to it. This often results in fragmented or duplicated communities – like Maemo and MeeGo.
A platform is necessarily a complex beast, and none more so than an open source mobile platform, and there are many points where people will want to try and get involved (as Dave illustrates). It’s critical to the long-term survival of the platform that these complex communities of developers are integrated and nurtured. They need to be empowered to contribute, they need to share the platform vision. They need to see the results of their efforts. The many well-documented community best practices such as open governance and meritocracy help to ensure this.
What, then, was the effect of the Tizen announcement on the various existing mobile platform communities? How well is the Tizen community forming? What was the effect on the MeeGo and Maemo communities?
~
There are many ways that a community can be assessed. The MeeGo Metrics wiki page provides links to many reports on MeeGo community. Unfortunately, not all of the source data is publicly available for all projects, so a simpler approach is needed.
One of the simplest ways is to monitor the traffic on public mailing lists. An excellent example of this are the Apache Software Foundation Mailing List statistics, which gives an at-a-glance idea of the activity across a multitude of projects. Fortunately, MeeGo, Maemo, and Tizen all have public mailing list archives, which we can use to compare activity.
There are lots of obvious caveats that need applying, for example some projects manage themselves through alternate channels such as IRC, some projects use web-based forums and wikis in preference to mailing lists. But in general, mailing list activity can be considered one reasonable indication of community health, and is often one of the few sources of raw data that is made public.
~
Here, then, are the rough and ready results of some preliminary analysis on the Tizen, MeeGo, and Maemo mailing lists. For each umbrella project, I analysed traffic across all available public list archives. Click through for a full-sized image of each, and see Mobile Linux Stats for the breakdown between individual lists and aggregates per project.
Traffic on the Tizen lists:
Traffic on the MeeGo lists:
Traffic on the Maemo lists:
It’s too early to tell what the Tizen announcement has done to these communities long-term, so I will be updating these charts on a regular basis over the coming months. Some interesting observations though:
- The Maemo community, although theoretically replaced by MeeGo, has continued to be busy even after the introduction of MeeGo, and has even seen a similar almost identical rise in activity between July 2010 and July 2011.
- In July 2011, activity notably dropped in both the MeeGo and Maemo communities. This is too early to coincide with the “Intel dropping MeeGo” or “Samsung acquiring MeeGo” rumours, so perhaps this is the logical result of the Nokia N9 shipping.
- Compared to MeeGo and Maemo, the Tizen community is non-existent at this point.
I’d welcome suggestions for improvements or for other platforms and projects to monitor as part of this ongoing activity, or other analysis that could be performed on the data.
~
It’s particularly important to understand the effects of the Tizen ‘reset’ as we are about to enter into another era of platform fragmentation. After the extensive consolidation we saw in mobile initiatives in 2006-2008, we’ve now seen the death of ‘mobile linux’, and the fragmentation of Android with a proliferation of Android mobile platforms.
It’s possible for any one of the six vendor-driven Android-based mobile platforms predicted for 2012 to declare itself a “fork” of Google’s Android. Any of these platforms can implement the type of open governance and meritocracy that Google Android is missing. Several of these vendors have the skills, the understanding and the manpower to make it happen. And if it does, we will start to see significant pressure on the Android community – in fact, exactly the pressure that’s being exerted by Intel and Samsung’s fork of MeeGo through the creation of Tizen. Maemo, MeeGo and Tizen give us some perfect case studies for understanding the pressures and likely outcomes of Android divergence in the future.
by Andrew at October 09, 2011 08:33 PM
October 08, 2011
Below is a video of the amazing Mike Mills from Toehider doing an acoustic cover of Bohemian Rhapsody:
October 08, 2011 03:48 PM
October 06, 2011
Aww hell, I don’t really like writing about Apple these days since it’s often a cheap route to page views, but here’s a few things.
Firstly, Horace Dediu is obviously right in his article “Why is there no iPhone 5?“. Demand, requirements. Secondly, Apple apologist Gruber is sort-of right in his post “By Any Other Name“, that we should be happy with the iPhone 4s. It’s a fine phone.
But none of this talks about the elephant in the room.
Apple are a very market-savvy company. With the jump from iPhone to iPhone 3G they showed they understood the importance of perceived version numbers, even if the ’3G’ referred to the network connection rather than the release number. Then the jump from the 3GS to iPhone 4, a clean version number increment. What does 4S even mean? It’s odd, and feels hasty.
The pacing of the keynote was off. The polish of the keynote was off. It felt like a rushed hack, as Apple pulled back late in the day from an iPhone 5 launch in favour of a less dramatic 4s launch. Too much filler. Some of it might be first night nerves for Tim, but that doesn’t account for the weird expressions on the rest of the team’s faces. What’s going on?
There’s a whole “well, duh!” expectation about new form factors, given Apple’s well-publicised tooling up a bunch of component manufacturers to build curvy glass and other such phantasmagoric stuff. Where is the outcome of this spend?
Maybe lawsuits with Samsung screwed up their marketing plans (unlikely). Maybe earthquakes and tsunamis messed with supply lines. Maybe as a result Apple hadn’t been able to pull together the final package in time.
Most likely: Apple are deliberately keeping stuff in reserve. Not because they feel they have an unassailable position, but because pretty soon they know they will need some way cool stuff to distract from a huge loss elsewhere, and to make a clean break with the past. And for that reason alone, I think Tim did the right thing. As the necessary calm before the storm, the pause, the intake of breath, this step makes a lot of sense.
On the other hand, less dramatically, it could just be entirely business as usual with phone and OS continuing at a metronomic pace. Just another small step. In which case, the only wrinkle in the pattern is why there wasn’t an “iPhone 2″ that featured minor enhancements to the original iPhone.
(Data from wikipedia’s entries on iPhone and iOS version history.)
Either way, it does feel like there’s a real opportunity for manufacturers to take advantage of what little “anti-apple” sentiment there is, to differentiate themselves. The 4S is a fantastic device, with a powerful ecosystem, but there’s a great marketing opportunity for alternatives right now.
Final thought: shouldn’t Apple drop the version numbers entirely? I’ve had so many MacBook Pros, all with the same name, all with different specs. Differentiating between iterations is most unseemly, most un-Apple.
by Andrew at October 06, 2011 12:35 AM
October 05, 2011
I’m off to #droidconuk tomorrow and Friday, for a couple of days of Android immersion. Should be a useful benchmark for the adoption rate of Android by developers … looking forward to some interesting discussions. If you’re there, come say hi!
Here’s an official logo, that I fully expect to break within a week or so, given the URL of the image (http://skillsmatter.com/custom/images/120×120.gif).
Dear SkillsMatter: you rock, but you should consider using a sensible image naming convention, e.g. http://skillsmatter.com/conferences/droidconuk/images/120×120.gif.

by Andrew at October 05, 2011 11:20 PM
It seems I didn’t blog about Over the Air back in 2010, beyond referencing the phone I won for my hack. That’s pretty poor. I don’t appear to have blogged much about any of the previous events either, apart from Hack Day 2007. Decidedly lax of me. So let’s do a ‘quick’ catch-up.
For those that aren’t aware, these events are typically 24-36 hours long, including an overnight portion, and the aim of them is to learn new stuff, see cool things, and during the event to create something wonderful – typically a proof-of-concept hack of some kind. There are often prizes for different categories of hack, as well as the motivation that comes from working amongst your peers.
These events are not dissimilar to the hackathons found in many open source communities (for example the Cocoon GetTogether hackathons in 2004, 2005), but the hack days tend to be more far-ranging and technology-agnostic.
The 2007 event was an eye-opener for me, though as I wrote at the time I bailed out before the second day. Aside from the network troubles, I seem to recall one of the major frustrations for me was getting a ‘quick’ development environment up and running on my laptop in order to do a timely hack.
After 2007′s hackday the event morphed into “Over The Air“, and the 2008 event I sadly missed. It was back for 2009, and in 2010 I was determined to enter a hack of my own.
As a result of some conversations (I seem to recall a chat with Thibaut resulted in the Plaxo bit), I created a hashblue/Plaxo mashup, which took the o2 #blue APIs and plaxo APIs to automagically match text messages to people in your address book. I used PHP and Postgres for this, and was later able to pretty much design-out the RDBMS bit since most of the data was in Plaxo. I was then only using the DB to store details of avatars, to make the page look fancier. It worked pretty well, until the #blue API was changed earlier this year (such is the fate of apps using beta APIs). Even better, I won an Android phone as a result, which was awesome. What’s left of the hack is still online at OTA 2010 #blue hack, and I may resurrect it if I ever find a use for it.
~
This year’s idea was to be a mashup of competition categories as well as APIs. I wanted to update my knowledge of the BlueVia APIs after my #blue experiences, and the Pearson APIs seemed to have some compelling content. Given last year’s prize was a Sony Ericsson phone, I also wanted to use the Ericsson Labs APIs to say ‘thank you’. Finally, the Met Theft Challenge tickled me, and although I didn’t attend the stolen phones session, I thought it would be a fun problem to tackle.
The idea I came up with was this: if your phone is stolen and was not locked with a PIN, there’s a good chance the thief is going to look at your apps and your data. Bear in mind here that not all phones have a ‘find me’ feature yet. It seemed plausible to use social engineering to trick the thief into telling you where he is. So, I would prominently place a banking app on the phone’s home screen, which when launched would fire up a realistic (and customisable) dummy copy of an online banking website. The website that would actually be loaded would use the BlueVia APIs to send a message to the phone’s owner, containing the device location. Of course, “your phone is at latitude 51.507071, longitude -0.036241″ does not mean much to most people, so I would use the Pearson APIs to search the Eyewitness Travel Guides for places near that location. “Your phone is near St James’s Palace” being theoretically more human (or tourist) friendly. Finally, with the magic of the Ericsson Mobile Maps API, I would deliver a friendly web page to alternate phones (for example nearby friends), plotting the stolen phone and all those nearby tourist locations.
This year I cheated a bit, in that I spent time ensuring I was pre-registered with most of the Over The Air API providers in advance, to ensure optimum hacking time (rather than waiting for API keys etc). I’d also picked the development environment I wanted to use, and got everything up and running. Sadly, the best-laid schemes o’ mice an’ men…
For this hack, I decided I would use HTML5/JS/CSS and node.js on the back-end. This was before all the controversy kicked off around the use of Node (node.js is a cancer), but frankly I would still have used it as it’s a simple solution to prototyping hacks.
What I did get working:
- Geolocation through the BlueVia API, using the BlueVia node.js example to take the pain out of the oAuth part. I had some help from the BlueVia guys when the Location API kept failing; the trick was to use the sandbox environment until the servers came back.
- Lookup of the points of interest nearby through the Pearson API. This caused some n00b problems for me where node was complaining during parsing the data – turns out https.get fires data events for response chunks, not for the whole response. Oops.
- The map view, with all the points of interest plotted. Except I ended up using the Google Maps API due to time constraints, and because the Sony Ericsson APIs are aimed at Android/J2ME devices.
What didn’t work so well:
- The idea of the app on the phone. It turns out you don’t really need this bit, since the BlueVia APIs will give your phone’s location via any web app that’s suitably-authorised, it doesn’t need to launch from the phone itself. So I scrapped that bit.
- The network. The very same thing that bit me at the 2007 HackDay came back to haunt me: sadly, the Over The Air wifi had some problems, so I ended up tethering my laptop to my mobile for most of Friday. Quite literally, with a USB cable to keep the phone charged while I punished the 3G connection.
- The data. Using APIs for purposes other than their expected use isn’t necessarily going to win. In this case, the “points of interest” data from Pearson tends to be clustered towards central London; if your phone is located away from those points, there’s not much point plotting it on a map or referencing the points. Nice idea, fails in implementation.
- Time. Although 3G is good for big chunks of data, it sucks for multiple small requests due to the latency/setup overhead lag. I also lost an embarrassing amount of time to the http chunks problem.
- Tube trains. I headed home Friday night to get some good network connection and then some sleep and a shower (seriously OTA organisers: next year, make it a venue with showers. Please!) But the Northern Line was closed on Saturday, making it a pain to get back to Euston and thence to Bletchley Park.
- The weather. Although it was awesome being at OTA on Friday and hacking on a bench in the sunshine, and the best bit of OTA is the hack demos, I decided to throw out the nightmare transport problems on Saturday in favour of a trip to Greenwich.
So the final hack is rather more rough and unfinished than even I expected. You can see a static copy of the output at OTA 2011 BlueVia Pearson Google Hack; if I get time I’ll set up a proper proxy of the node.js version so you can try out the locator bit yourself (assuming you’re signed up to BlueVia).
Lessons learned from this year? Don’t trust the network. Don’t be ambitious with your hacks if the sun is shining. If the forecast is good, take a tent. And always, always go to Over The Air: it’s both a learning experience and an inspiration. If you’re in IT, and do (or have done) development, make sure you’re there next year.
by Andrew at October 05, 2011 06:13 PM