Planet ALUG
May 18, 2012
This just happened:

And so this just happened:
Dear Principal Cullum,
I frequently commute by bicycle past your school, traveling down Heath Road toward Weybridge. I have often observed that parents tend to let their children out of their cars along here when queuing in traffic or waiting for the traffic lights.
Unfortunately, car passenger doors opening into the route of cyclists represents a very serious hazard for cyclists, and I have seen a number of near-misses.
Even more unfortunately, today I was the victim of exactly the accident you’d expect, as one of your pupils opened the door right into my path, too late for me to avoid, resulting in a painful crash and some nasty bruising. The pupil (and his father) were extremely polite and extremely apologetic and thankfully no permanent damage has been done this time.
Whilst I understand that you have limited control over the actions of your pupils and their parents outside of school grounds, I feel it would be extremely useful if you could issue a reminder to parents to only drop off their children at appropriate places – for example, after parking off the main road – to ensure that a more serious accident does not occur in the future. Anything you can do to raise their awareness of the dangers of ‘dooring‘, and taking care to avoid cyclists in general on that crowded road, would be much appreciated.
Other than this unfortunate incident, I continue to be impressed by the general good contact of pupils on their way to your school, which reflects well on the level of education they must therefore be receiving.
We’ll see if this makes any difference.
Incidentally, the road in question is a nightmare for everyone. It’s relatively narrow, so there’s not much space either side of the cars for cyclists. Between 8 and 9 every morning there’s usually a long queue of mostly-stationary cars. There’s no footpath (just a muddy track) for much of it. There’s also a number of junctions with cars turning off and pulling out.
I’ve tried various tactics for getting down the road in one piece:
- overtaking down the middle of the road: too risky – too many idiots turning across the road without looking, too many large and fast vehicles travelling in the opposite direction;
- cycling down the path: too dangerous – too many school kids walking down there, and the frog in the kerb is not low enough to navigate safely on a small-wheeled bike (as evidenced by the woman I saw crash last month);
- cycling down the left-hand side of the cars: also too risky it seems, because drivers don’t advise their passengers to take care when opening their doors.
Perhaps I just need a better bike horn.
by Andrew at May 18, 2012 08:24 AM
May 17, 2012
Doves and pigeons aren't very bright, are they? A pair of woodpigeons has made a nest in my garden - in the honeysuckle which grows up the side of a wooden arch. It's a frail plant, and the birds are fat and hefty. If they manage to incubate the eggs at all, the added weight of growing chicks is likely to send their ramshackle home to the ground. That's if a cat doesn't casually reach in to the low-hanging nest and remove the chicks.
by sunflowerinrain (noreply@blogger.com) at May 17, 2012 05:54 PM
May 12, 2012
Meant to post this a while ago when I booked the tickets, but life has a habit of being busy at present. I'm pleased to say I'm going to DebConf 12 in Managua. In the off-chance someone else might be on some of the same flights as me, here's what I've booked:
Outbound:
2012-07-07 00:15 SFO -> 08:12 CLT US466
2012-07-07 11:40 CLT -> 13:44 MIA US1831
2012-07-07 16:07 MIA -> 16:45 MGA US4925
Inbound:
2012-07-14 21:15 MGA -> 01:50 MIA US4944
2012-07-15 06:15 MIA -> 08:19 CLT US1800
2012-07-15 09:40 CLT -> 12:08 SFO US1485
There were some single stop options but the timings didn't them any quicker, they weren't any cheaper, and these times worked better for me anyway.
May 12, 2012 04:02 PM
May 05, 2012
April 28, 2012
April 24, 2012
Back in 2004 when Simon and I went full time with Black Cat one of the first things I did was sort out an ADSL offering, including native IPv6. We were one of the first UK ISPs to offer this (possibly the first; I know A&A had been doing tunneled IPv6 for a lot longer, but I'm not sure exactly when they enabled IPv6 on the PPP session. Also Bogons were fairly quick to enable it as well). By the middle of 2004 I was fully IPv6 enabled; my colo box had a native connection, my entire home network (a /64 for the wired, a /64 for the wireless) was configured, BCN had multiple native IPv6 connections to other ISPs (such as peering over LoNAP). By and large it just worked; I remember at one point looking at a traffic graph link from someone in Australia and them indicating surprise that I'd come in over v6. I hadn't noticed anything different than normal, which is exactly how it should be.
When we sold BCN in 2007 unfortunately one of the casualties was the v6 support. The ISP that took over the ADSL wasn't setup to be able to continue the v6 support, nor were RapidSwitch, who took over most of the hosting (I note with sadness that RapidSwitch still don't seem to be offering v6, though they keep saying it's a work in progress). So I stopped having any v6 for some time, refusing to slum it with a tunnel.
This changed at the start of last year, when I sought out new hosting for the. I ended up selecting Bytemark, partly because I knew of their commitment to v6. I'd chosen Sonic as my US access ISP, again partly because they offered an IPv6 tunnel service (while not as nice as native v6 over the DSL I felt that a tunnel provided by the DSL ISP was acceptable for access). However a combination of not having a machine that was always on at home, and a dynamic IP on my connection, meant that I never got round to configuring anything permanent up.
Recently I got around to buying a little low powered box to be always-on and this week I finally looked at configuring it up as the tunnel endpoint, planning to do some sort of screen scraping of the web interface to automatically update the tunnel broker information for the rare occurrences when my IP changes. The first nice surprise was that Sonic are now doing static IPs for free (previously you could only have a block of 8 for $20/month extra). That makes things a lot easier. So tonight I configured up the little server as the tunnel endpoint, installing radvd and some basic v6 firewalling. As expected my laptop sees the RAs, automatically configures everything up and my ssh sessions start to go over IPv6 instead. Looks like my phone also does the same. I'm not entirely sure what the NAT on the ADSL router is doing and if inbound connections will fail if there's nothing outbound holding the translation entry active, but I'm sure I can work around that if it turns out to be a problem. I care more about access than hosting anything on the end of my DSL anyway.
This means I'm finally almost back to where I was nearly 8 years ago, just in time for World IPv6 Launch day.
April 24, 2012 06:38 AM
April 22, 2012
A recent pub conversation about scary things that people had had happen to them reminded of my own spookiest moment and I thought I'd better note it down before I start getting old and forgetting such things.
(I'm afraid it's not particularly scary though)
I was spending a lazy summer afternoon at my grandparents' house in Freethorpe - at least I think it was summer; it was definitely Freethorpe. I must have been around 8 or so as I was behaving quite mischievously and found myself getting bored easily. After a couple of hours of playing quizzes together on Teletext (anyone remember Bamboozle?) and general grandparent-grandchild things, my granny went through to the kitchen to call her daughter, my aunty.
I remember that Strike It Lucky was on the television and that I wasn't enjoying it very much and had been finding Michael Barrymore quite annoying so I decided to pick up the second telephone - which was in the living room with me - to see if my granny and aunty were talking about anything interesting. I'm not sure what possessed me to do that as it turned out to be quite a dull conversation.
After a few minutes of listening in on their general chit-chat (I'd worked out that they knew I was listening in and I'm pretty sure they were trying to bore me into hanging up), I noticed that the incessant drone of game show noises coming from the telly had been slowly driving me nuts.
So I turned to the telly and stuck my tongue out at it; the only sensible act of defiance in the face of daytime TV.
At that exact moment, the camera cut to Barrymore so that he was looking directly at me. The audience was silent as he spoke: "Don't do that!"
And then the audience all laughed at my shocked expression.
I had insulted Michael Barrymore and he had noticed and chastised me for it! (Lucky it wasn't 2001; it could've been much worse)
That single, terrifying moment has stayed with me all my life although I can't say that it's particularly affected me except perhaps for giving me a greater appreciation of coincidence.
So, well, that's my tale of terror. Dull, I know but I wanted something to remind me of it in future.
by steve@offend.me.uk (Steve Engledow) at April 22, 2012 08:55 PM
April 21, 2012
April 14, 2012
April 10, 2012
Stop using CAPTCHAs. It’s time to switch to DLT: Design, Limit and Trapdoor.
“[a certain website] has the evil bad wrong Google reCaptcha on the edit page to stop disabled users, so screw it. Google’s reCaptcha seems to be spreading again, obstructing more people when accessing more websites. Is there a reason for that? The re in reCaptcha stands for replace with real anti-spam, please!“
I wrote the above about two years ago and it’s not getting any better. I’ve written similar things over the last ten years, as have many others, and I’ve always sought to avoid using physical ability tests as a way to cut down spammers.
Why do people keep reaching for the reCaptcha non-captcha or things that use similar bad eyetests like Mollom? So most online messages may be spam, but those physical ability tests do nothing to test for spam. They’re trying to detect computer submissions (the TCHA in CAPTCHA is meant to be Telling Computers and Humans Apart), but that’s really bad when the computer is helping someone with a disability to access the internet.
People from the home of the CAPTCHA describe access for sight and hearing-impaired users as “an important open problem for the project” (Luis von Ahn, Manuel Blum and John Langford. Telling Humans and Computers Apart Automatically. In Communications of the ACM). Until that problem is closed, CAPTCHAs should be considered defective and removed whenever possible.
What webmasters should do instead is DLT:
- Design it well: Set up sites so the spammers cannot get a quick win in the first place. Configure permissions and things like that so people have to do some work before they are trusted to post links. This is similar to the basic theory behind my Open Activism paper Fighting in the Shadows. This is much easier to do if the system is Free and Open Source Software (FOSS), too.
- Limit the damage: include rate limits to stop one person causing you lots of work: even with computer-assistance, few people need to post 10 forum messages every minute. Join up in co-operative anti-spam networks like blogspam.net so if they hurt you, others can see them coming. Again, it’s easier to hook into a network if you’re using FOSS.
- Trapdoor: keep a way for people to contact you if they are really blocked by your design decisions and limitation and keep a way to exempt them from the limits if needed. Make it welcoming because disabled users are tired of reporting barriers to webmasters who don’t care and will never fix the web. A good multi-step eyetest-free contact form is a basic way to do this.
Have you tried this? Have your experiences been as good as our co-op’s? Are there sites you don’t think it would work for? A comments form is on the original of this article, as ever.
by mjr at April 10, 2012 05:18 AM
April 07, 2012
April 05, 2012
Voting is open in the Debian Project Leader Elections 2012
So now I need to figure out who to vote for. This year I didn’t take part in the discussions (all my spare time was bought, basically). The platforms are linked from the Debian Project Leader Elections 2012 page above and the key discussions were:
- Questions to all candidates
- Questions to some candidates
- Questions to one candidate
Thanks to everyone who asked these great questions. So, what do you think?
by mjr at April 05, 2012 10:21 AM
April 02, 2012
Today, I encounted two reminders of why I don't submit bug reports to free software projects. We'll ignore the conversation I had last weekend with a LibreOffice developer at Collabora's office why I don't bother.
Firstly, I got a mail from Launchpad. Somebody had asked "It's been five years. Why is this bug still here?" on something I filed, well, 5 years ago. (bzr, it explodes in a sticky mess of stack backtrace if you try to merge to an empty branch. It still does.) It reminded me of a PostgreSQL packaging bug I filed even longer ago, that languishes unfixed.
Secondly, I discovered Banshee can no longer audioscrobble to last.fm. I Google around, and find that this has been a problem for a while. I join their IRC channel, and ask "Is this still a problem?" "Upgrade to the latest version!" I am told. I do so. It's still a problem. "File a bug, here!" I am told. I am confronted with a Bugzilla login page. Because it's easier than dancing around their pointless processes and I have better things to do, I uninstall Banshee and install Rhythmbox. I get some insults thrown in for my efforts.
Things in open source projects don't get fixed unless the reporter includes a patch, or the problem irritates one of the developers. If you've not got the expertise to make a patch, or you're unfortunate enough that your problem doesn't make the developers annoyed, you're out of luck. Don't bother filing; it's a waste of everybody's time. Go use something else. You'll find that people bitch at you about the spirit of free software. Reply pointing out that it's free, and that this macabre and fruitless dance they demand constitutes a fee that the competiting product doesn't levy. Perhaps one day a developer will find your bug itchy enough to fix. Or perhaps not.
April 02, 2012 07:44 PM
March 31, 2012
March 24, 2012
March 22, 2012
I use awesome as my window manager, without a gnome session around it - as gnome-power-manager now depends on having a gnome-session running, I had a choice to make - I don't need or want to run a gnome-session, so I went on the hunt for a different battery monitor for my laptop. I've ended up using fdpowermon as it does just what I need and nothing more - then I edited the default acpi scripts to do what I had gnome-power-manager doing before hand, i.e. if I've unplugged the AC and I close the lid, the laptop does a s2both. Slightly more configuration, but it now does what I expect all the time (yay!).
I wanted some extra keybinding from the default config of awesome in Debian, so I also created a very small rc.lua file as follows:
dofile("/etc/xdg/awesome/rc.lua")
mylayouts = {
layouts[2],
layouts[10],
layouts[2],
layouts[2],
layouts[2],
layouts[2],
layouts[1],
layouts[1],
layouts[1]
}
for s = 1, screen.count() do
for t = 1, 9 do
awful.tag.setproperty(tags[s][t], "layout", mylayouts[t])
end
end
globalkeys = awful.util.table.join(globalkeys,
awful.key({"Control", "Mod1" }, "l", function () awful.util.spawn("/home/brettp/bin/lock-screen.sh") end)
)
root.keys(globalkeys)
This basically overrides parts of the default config and makes it so that my "tags" are vsplit for tags 1 and 3-6, maximised for tag 2 (where my browser lives) and floating for 7-9 (where the IM client sits, and I do anything involving GIMP). It does mean that I'm at the whim of the default config mostly, but as that seems to be fairly sane most of the time, that's not a problem... it also means that I'm only maintaining a small change set rather than a full rc file, and so new "features" can come in without me having to touch anything (well, other than restarting awesome...).
I do need to either unmap the minimise key combo, or create an unminimise key combo that pops up a menu with the list of minimised windows in it at some point, though - because it's all too easy to press Meta4-n when you meant Meta4-m.
by Brett Parker (iDunno@sommitrealweird.co.uk) at March 22, 2012 11:54 AM
March 17, 2012
Gruber:
The iPad display is so good that it shows, like no device before it, just how crummy most images on the web are.
For those that didn’t know already, let this serve as fair warning: mobile network operators that transcode (downgrade) images “to enhance the user experience” are going to look even more ridiculous on the resolutionary display of the new iPad. If an average website image looks crummy, just imagine how outrageously poor an image that’s been actively downsampled is going to look.
I find it deeply objectionable that we can pay for a service only to have that service actively downgraded – with no option to opt-out – all in the name of “improving the experience”. Network operators: it’s time to stop this mess. Ship the bits and stop being dicks.
See also Vodafone UK is abusing its position.
by Andrew at March 17, 2012 12:04 AM
March 10, 2012
March 05, 2012

On installing cyanogenmod on the Samsung Galaxy S2 with a Mac.
The stock OEM+Telco Android experience is pretty awful, with loads of crapware. The best solution to running Android on a mobile device is to flash it with CyanogenMod.
If you have a Samsung Galaxy S2 and you’re on a Mac, the cyanogenmod wiki instructions are somewhat broken. Here’s what you have to do:
- Download CyanogenMod and Google Apps.
- Download ClockworkMod Recovery 4.0.1.4 – this is an alternate kernel image. Unarchive it.
- Download Heimdall suite 1.3.1 – this is a command-line flashing tool. Open the DMG as root to install it: sudo open heimdall-1.3.1-mac.dmg and once it’s installed but before rebooting, ensure the ownership is correct: sudo chown -R root:wheel /System/Library/Extensions/heimdall.kext
- Plug a USB cable into your laptop.
- Turn off the Samsung Galaxy S2, and then boot it into download mode by holding Volume Down, Home, Power (note the wiki only says “Home and Volume Down”. When prompted, press Volume Up to confirm you want to do this.
- Plug the USB cable into your phone.
- Start the kernel upload: sudo heimdall flash -kernel zImage (note the wiki misses out the sudo; if you’re not root, the install will fail with “ERROR: Failed to receive response!”.
- Mount the phone as a USB drive, then copy update-cm-7.1.0-GalaxyS2-signed.zip and gapps-gb-20110828-signed.zip to the root directory. Eject the drive, and disconnect the USB.
- Hold down the Volume Up, Home and Power buttons to boot into ClockworkMod recovery. Alternatively, if you have the Android developer tools installed (and downloaded platforms through Eclipse), you can cd android-sdk-macosx/platform-tools && ./adb reboot recovery.
- As per the wiki, select Wipe data/factory reset, then Wipe cache partition.
- Select Install zip from sdcard, then Choose zip from sdcard, and select update-cm-7.1.0-GalaxyS2-signed.zip. Repeat for gapps-gb-20110828-signed.zip.
- The instructions say to select Go Back, but depending on how you booted this option may not be available. Tapping the power button acts like a back button. Select Reboot system now.
- First time around, this didn’t work, so repeat from the point of booting into ClockworkMod recovery.
And that’s it … you should now be running the cyanogenmod version of Android. It’s closer to vanilla, but with quite a few refinements.
by Andrew at March 05, 2012 11:05 PM
March 03, 2012
February 27, 2012

Back in 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. During the event, Samsung provided Wave 3 devices to developers.
The Samsung Wave 3 is the latest flagship device for the Bada mobile operating system, the smartphone platform from Samsung. It’s an update of the predecessor Wave and Wave II.
I spent some time with the Wave II following the previous event; it was a competent low-end smartphone, notable for the relatively basic operating system packed into phenomenal Samsung hardware: an amazing screen, great industrial design, excellent camera and stupendous battery life.
The Wave S3 is a similar form factor, with the notable exception of the huge screen. It’s reasonably thin, with a brushed metal back, and in a change from the previous model the back panel slides to reveal the battery, rather than being a detachable panel.

During the Developer Day presentations we were told how Bada 2.0 is a significant step forward over Bada 1.0, and first impressions suggest it is a bit better. But it’s still lacking attention to detail, maturity and friendliness that marks other mobile platforms. Here’s a detailed breakdown.
~
On startup, the device asks you what type of SIM you have: O2 PostPay, O2 PrePay, Tesco. Does this make any sense to anyone, when we’re trained to think in terms of “pay monthly” or “pay as you go”?
You’re then asked to set the language – which is fortunate, since it’s defaulted to French. So I selected English. (There’s an option for “Automatic”, I’m curious to know what that does!) In fairness to Samsung, the devices we were given were not even on the market at the time, and were clearly intended for the French market (judging by the European power supply and the French text on the packaging).
I selected English, and then was prompted to set my timezone. I clicked in the Search box, and despite saying I wanted English, I was shown a French AZERTY keyboard layout. Furthermore, as I typed the first few characters of “London”, the predictive text showed me options such as “l’on”, so the phone was clearly still thinking in French.
Another bug that shows up in the predictive text: if you type “l”, some text, delete some text, and type “ondon”, it treats it as two separate words (despite the lack of spacing or punctuation), and you end up with “lbidon” on screen.
Date and time: the date internationalisation is a little weird: 04/Nov./2011: have you ever seen Nov punctuated anywhere else?
The final step of setup is the request to sign up for a Samsung account. It’s a nice idea, but it would be better if WiFi is set up first. There’s no guarantee your operator data configuration texts will have arrived before. Indeed, when you go through the process it prompts you “Use packet data must be enabled to access data service. Change settings?” Why not say “you must use a mobile data connection” – what does packet data mean to the consumer? If you say no, you get a network error – why does it even try to talk to the network, and not just say “do this later”?
If you do enter the Samsung account setup, there’s a notorious problem from the previous Wave devices: text areas being obscured by the keyboard.
Once setup is complete, it boots into the home screen, but a dialog pops up right away telling you how to “Edit idle pages”. The problem is that without having used the device, this dialog means nothing. What are idle pages? What are icons?
The same thing happens if you go into the “Menu” section: a popup “Add idle shortcut”, and it feels like the descriptive text is truncated: “Drag and drop icon to the bottom tray to add shortcut to idle” …. to idle what? To idle screen? Do they mean “launcher” instead of idle screen, or menu bar?
The screen timeout is really aggressive: probably because it’s so big.
Wifi setup was straightforward, though the device was still showing an AZERTY keyboard. Clicking “FR” changes it to “EN”. The keyboard is good, haptic feedback is nice.
Within 24 hours of starting to use the device, I successfully crashed the Wave, causing it to reboot. I was closing apps in the task manager at the time.
One interesting feature: you can carry on using the device whilst in USB mode. But only the microSD, not internal storage. Unfortunately that means moving all my screenshots from internal to microSD before I can get them off the phone. In fairness, the move process was painless, and worked.
The Wave 3 has three hardware buttons on the front (aside from the volume rocker and the power switch). I have yet to figure out precisely why it has these three. The middle one acts as a power on, the others seem to be back or menu but don’t act consistently.
~
To illustrate the Wave3 experience, let’s take a look at some screenshots.
There are precisely two fonts to choose from on the Wave3. That’s twice as many as on the iPhone, but when the choice is between the Samsung font and a Comic Sans imitation, that’s about twice as many choices as you really want or need.
There is the option to get more fonts. The name and the description of the fonts would best be described as SUB_opt-imal. But it’s reassuring to see we now speak “Whole Europe language”.


Get used to waiting. Even on a fast wifi connection, I saw “Waiting” very frequently. My guess is this is a combination of Samsung’s servers all being based out of Korea, poor capacity planning, and poor attention to network performance. Either way, it’s a frustrating user experience.
It’s not nice that the network was not available, especially as I am on a wifi connection that’s working (so actually the problem is the resource is not available, the network is fine). What’s worse is the 0xff01 error number. Users don’t want to see that.

Some aspects of the Wave are really nice, for example downloading apps have a “ripple” effect as though water was being poured into a glass. It’s a neat, human touch and I wish the whole platform was as polished as this one detail.
There are occasional reminders that this is a feature phone, not a smart phone. For example, you cannot queue up mails for sending. If one mail is in the process of being sent, you have to wait for it to complete before you can send another.

The browser in the Wave3 is not bad (mostly because it’s on a huge screen), but it struggles to keep up sometimes. When scrolling, you will often see display glitches like this “checkerboarding”. In fairness to Samsung, many mobile platforms suffer from similar issues.



Cool, Samsung are giving away apps! What happens if I click on the banner? I get a prompt that says exactly the same thing as the banner. What happens if I click on OK? I get a details page that never loads. ARGH! SO FRUSTRATING!



Maybe there’s an update for the Samsung App Store app that will make the experience better. Yes, there is. Whilst downloading it I’m treated to some curious pictograms, including the iPhone 4 “you’re holding it wrong”, and the “high five app update!”. I wait patiently for my Samsung Apps cup to fill up, and then eagerly click on it to see the new hotness. And I’m greeted by the double whammy of the app failing to launch, and the grammatically disastrous “Cannot launch . Invalid application” error.



At least the app store upgrade fixed all the minor snags, right? Right? Well, the “network not available” error has been upgraded to 0xff03. And the app store now displays an animated ticker instead of “Waiting”. The promo banners (this time “app of the year”) still has a pop-up dialog saying exactly the same thing. It now leads to an empty list of promotional products, rather than the never-loading page we had with the free apps.
There’s a built-in task manager that lets you kill open apps. You’ll need to use it as some apps will hang, and others don’t like launching multiple times (see the next entry). Frustratingly, not all Bada apps behave well, so you get warned that “Unsaved data may be lost” if you click “End all applications”. You won’t be told which apps aren’t going to exit cleanly.
Occasionally the camera gets confused, and refuses to launch. For bonus points, when this happens it often doesn’t show up in the Task Manager. Reboot time!
~
I used the Wave3 for three months, including travel and conferences, to get an idea of how it works. At the end of that time, I could not be happier to get rid of the phone, as the inconsistencies in the UI and the frequent failures were driving me crazy.
There were some positives to the device:
- The screen is amazing.
- The keyboard with haptic feedback is pretty good.
- The camera is not bad at all for a feature phone.
- The ability to tether other devices to this phone is really useful, and does not require contract changes. I wish this worked as well on the iPhone.
The negatives:
- Broken and unpolished UI.
- Lack of apps.
- the phone hangs and crashes for no reason.
For this device, the negatives definitely outweighed the positives.
Samsung are clearly making progress, and they are tying Bada into a whole ecosystem of services (music, movies, home hub with TV, app stores). But Bada is a woefully unpolished platform, and lacks attention to detail. It’s simply not acceptable to push out software like this in a world where there are very slick and refined alternatives.
by Andrew at February 27, 2012 11:50 AM
February 25, 2012
February 24, 2012
We, the undersigned, hereby state that we expressly and unequivocally oppose the advertising of proprietary software products on government websites.
Such advertising breaches impartiality and encourages citizens to employ technologies that unnecessarily restrict their freedom. The role of government is not to support certain market participants and not others, particularly when doing so works to maintain the monopolies of global software companies.
In explanations of how to use digital resources that they provide, government agencies should clarify that multiple methods are available, and favour technologies which do not restrict users’ digital rights; by linking to PDFreaders.org, for example.
Free Software guarantees the users right to use (for any purpose), study (without secrets), share (with anyone), and improve the software that they use. Public institutions should publish their documents in formats that can be read with Free Software. Indeed, many Free Software applications exist for reading such documents. Governments should lead citizens to freedom, and encourage them to make use of these applications.
Sincerely,
Our co-op and 56 other businesses, 69 organisations and over 2200 individuals so far.
How about adding your signature? Surely it’s time for our governments to stop giving free adverts to Adobe? It was particularly annoying in the Digital Britain report, I thought.
by mjr at February 24, 2012 12:43 AM
February 23, 2012
And I'm not talking numbers.
Optimus Prime
The original and best. While I don't think the new movies are too bad, when I think of Optimus Prime, I think of the original cartoon series :)
I was just thinking that the voice of Prime in the new movies was a very, very good approximation of the voice used in the cartoon series and a quick search tells me that they are actually the same guy! Well I never.
Optimist Prime
A few years back, while I was on tour with my old band, there was one morning around the middle of the tour where we'd hit a few snags and it seemed like things might fall apart. We were travelling with another band and between us, we seemed to have split in to two camps: those who were depressed, angry, and convinced that all was doomed to failure; and those who were aware that we were already having the best time of our lives and any snag was just that: a minor inconvenience.
I was in the latter camp and between those merry few of us, we decided that what we needed was an Optimist Prime to help us defeat the evil forces of Negatron and his Depressedicons.
Optometrist Prime
For some reason, this popped into my head this morning and I decided to compile a list of Primes. Mostly so I could share the wonder of the above Optimist Prime :)
I suppose Optometrist Prime would just look after the other Primes' optical sensors.
Optional Prime
Not required
Opportunist Prime
This Prime would've just taken Megatron down while he was incapacitated rather than agreeing to that stupid duel.
Apologist Prime
Ok, I think I'm beginning to run out of Primes.
Additional Primes welcome.
by steve@offend.me.uk (Steve Engledow) at February 23, 2012 09:03 PM
February 21, 2012
The Government launched their G-Cloud CloudStore for Cloud procurement of Cloud services on Sunday. The outlook is … cloudy. I applaud the increase in transparency that could be derived from listing vendors in a single searchable public online catalogue. But I have concerns about the implementation.
The CloudStore is apparently built upon Windows Azure, the cloud platform from Microsoft. It was built by Microsoft partner Solidsoft. The price tag? Free, according to Chris Chant, Program Director of Government G-Cloud, speaking on twitter earlier:

We should certainly welcome cost savings if an SME provides the government with a useful new web resource for free. But there’s no such thing as a free lunch. Consider:
- Is it entirely bespoke, or is it using existing components or an existing CMS?
- Is the government getting the source code for the application so that anyone can update and maintain it?
- Are they now locked in to license fees for the software, or is there a lengthy maintenance contract which will potentially cost the taxpayer far more than the initial website?
- What is the commercial value to Microsoft and Solidsoft that can be derived from prominent placement and links from a government website?
The last point is perhaps most apposite. How many other government websites carry commercial advertising? None that I could find, from a quick survey. And yet, there it is, bottom-right of every single page, animated logos proclaiming it is delivered by Solidsoft and powered by Azure:


~
For the conspiracy theorists, does the design of the catalogue feel vaguely familiar?

Isn’t it a little … I dunno … Windows 8?
~
I think it’s interesting that we’re seeing government service roll-outs measured in weeks rather than months (at least in delivery time – the government app store itself has been kicking around for a long time, and one report claimed it was trialled two years ago). I think greater transparency around suppliers is a positive move.
I think the government needs to take care not to ignore other equally important factors (such as avoiding lock-in and preventing free advertising) in their enthusiasm for delivery.
by Andrew at February 21, 2012 11:17 AM
February 18, 2012
February 15, 2012
Morning has b0rked
The last couple of weeks have seen a fairly insane number of hours of work out of me due to a combination of a project with tight deadlines (aren't they all?) and the advent of me driving my wife to work in the mornings. She's at the point now of not being particularly mobile (oh, by the way, we're spawning) so I'm getting up at 6:30 daily to get her to work for 7. This means that I'm generally either working from home by 7:15 or in the office just before 8. That should mean that I'm done before 5 but it doesn't quite seem to work that way when other people are involved ;)
Anyway, due to the ease of working with Node.js and Django, I've at least achieved a lot :)
I ended up building quite a neat (and yes, I actually mean this in the sense of tidy and organised - not just "cool") web server engine as part of the project. It's quite similar to the one I made for this site but with some pretty nifty refinements. If I can persuade the powers that be, I might see if I can split it out a little more and open-source it. We'll see :)
One snag I've hit along the way is that OAuth appears not to be applicable to multipart post requests. I'm hoping someone will correct me on that and just tell me that I've been doing it wrong but I don't think so. That single thing broke my entire afternoon today.
The problem comes from my need to upload a large file or two to an authenticated web service. When the files were small, a basic querystring formatted post body was sufficient but when I tried larger files, that clearly wasn't going to work so I stuck it all into a multipart request and then... BOOM oauth is unhappy. It seems to be the signature generation code that makes certain assumptions about what the request will look like when it's generating the sig.
Like I said, I hope I'm wrong and that there's a nice, simple way to do file uploads via OAuth!
The Eagle has exploded
I'm not sure if I mentioned it before and I really can't be bothered to look, but Eagle Mode is fantastic! Basically it's a zooming file manager but with some other things thrown in. I'd actually like to see the file manager part separated out from the rest of the project as it's so amazingly useful. It'll need to be a bit shinier before the Mac fanboys and Ubuntu users will go for it though ;)
The basic idea is that, whatever you're looking at, you can zoom in on it. If you're looking at a folder, you'll see it as a box with boxes for each of the files and sub-folders within it. You can zoom in on one of those (with the scroll-wheel for example) and, if it's a folder, see what's inside it and if it's a file (and this is the really awesome part), see its contents. Eagle Mode has handlers for most common types of files so you can, for example, very easily preview the contents of an entire folder of photos just by zooming in on the folder.
This quick and easy access to things and their contents makes it a very powerful file manager. It's stupidly easy to move files around and easily see the effect you're having on the way your file system is organised. I'd been putting off the task of reorganising my home folder on my desktop machine for years. It's a machine that's gone through several hardware changes, several operating systems, and a number of changes of heart about where I store things.
I reorganised all of it in about twenty minutes in Eagle Mode :)
I want it to have a web browser and for the internet to work like that. But it doesn't.
So I made this zooming version of my site :D It probably doesn't work in anything but chrom(e|ium) and I'm unlikely to work on it further. Essentially, you get an overview of this website. As you click on part of it, you zoom in. To zoom out, use the right mouse button.
by steve@offend.me.uk (Steve Engledow) at February 15, 2012 10:03 PM
Last week I went along to the food co-ops networking event at the Southville Centre in Bristol. It was a useful event and very inspiring and informative to meet people from so many other co-ops, as well as attend some useful workshops: the two I went to were Good meetings and communication and Starting and developing a food co-op, while there were also ones on funding and Simply Legal available.
There was some time for networking, as well as a relaxed end to the day which let me catch up with a few more people. I would have preferred a little more time for the workshops and a little less on case studies (every food co-op is different and I don’t think any of the featured ones were quite what I was looking for), but that’s a very minor thing and didn’t really reduce the usefulness of the whole day.
Our co-op is a tech worker co-op and not a food co-op, so I didn’t know that much about how to start one before the event. Now I’ve got a much better idea of what I need to do when I eventually move back out to what may be a co-op desert in King’s Lynn.
Are you a member of a food co-op or buying group? If so, what would you say about it? Were you involved in its start-up?
by mjr at February 15, 2012 01:01 AM
February 11, 2012
I've been spending a lot more time recently in meetings. Mostly things I
should actually be at. And in general if it's something I think is
reasonable I'll try to be there. In an effort to help with this I
actually keep my work calendar up to date. Given that I'm running Linux
on my laptop and the corporate standard is Exchange this requires a
little bit of effort on my part (the Thunderbird Provider for Microsoft
Exchange
and Android support for talking to Exchange are helpful with this).
Sometimes it seems like I shouldn't bother. I spent this week at a
conference, and marked my calendar to indicate I was out of the office.
I think I had at least 3 meeting requests, all for things that would
actually have been appropriate for me to go to. Last week I managed to
be booked for 7 hours of meetings from 7am until noon. That included a
30 minute window where I was triple booked.
The thing is, I'm really not that busy in terms of meetings - you can
usually find a spot when I'm free on any given day unless I'm actually
not in the office. If you bother to check my calendar, that is.
Another problem I have is the times people like to book meetings at.
Booking a technical meeting at 9am isn't going to get me at my best.
Equally doing so at 5pm is likely to have me clock watching to make sure
I don't miss my bus and/or train. Also I seem to work with far too many
people who don't eat lunch and book hour long meetings at midday or 1pm.
I understand sometimes that's the only time you can get everyone into a
room together, but at least bloody ask and explain the need rather than
just sending out a meeting invite.
Finally, book meetings of a realistic length. There are some people who
invite me to things and cause me to add another 30 minutes on the end,
because I know it always overruns.
It's not all bad. I have a VP who always runs a meeting to time, and
never seems to call one for spurious reasons. I've also worked with a
program manager who will organize the meeting so that if you're only
there for one point on the agenda that'll get dealt with near the
beginning so it doesn't take up more of your time that it needs to.
Funnily enough I'm much more likely to go to things both of these people
arrange.
Disclaimer: In the unlikely event anyone I work with who invites me to
meetings is reading this, I might be talking about you, but everything I
mention has been done by more than one person, so I'm not thinking about
anyone in particular for each point.
February 11, 2012 11:44 PM
February 10, 2012
Readers who look at our blog itself (rather than one of the lovely sites that reprint our articles) may have noticed that you can now comment in either the usual WordPress way (Name/Email/Link) or by logging in with a social media profile from one of a large range of providers, including WordPress, Livejournal, Yahoo, Google and many more.
This uses the broadly-cooperative openID system. If you run a website that accepts reader contributions, you should allow comments with openid because it helps people to use their existing social media membership without you having to surrender any control to facebook, twitter, or anyone else (unless you choose to). You also don’t have to ask your readers to weaken their security settings like with disqus (which requires javascript and third-party cookies).
The comment form on our site is powered by the openid plugin, together with our co-op’s version of the comments-with-openid plugin which can be downloaded from our site. Please download them if you’d find them useful for your WordPress site. (I’d love to adopt the official comments-with-openid at wordpress.org because the previous maintainer doesn’t answer – anyone know how to do that? I’m surprised it’s not in the FAQ.)
Do you use some other platform? What tools have let you add openid logins to it? For example, Drupal has some openID support in its core distribution: what else is out there?
by mjr at February 10, 2012 01:08 AM
February 09, 2012
Software in the Public Interest, the mass-membership association that supports some great Free and Open Source Software projects, will hold a public board of directors meeting today, Thursday 9th February 2012 at 21:00 UTC. The day and time of SPI meetings has changed recently, so maybe different people can get to them now.
They’re held online, on irc.spi-inc.org (the OFTC network). The agenda for the meeting is open and available at http://www.spi-inc.org/meetings/agendas/2012/2012-02-09/ and there’s been a bit of discussion of back office support on the SPI email list.
I’ll link to a meeting summary from the comments in this blog post after it happens.
by mjr at February 09, 2012 01:47 AM
February 08, 2012
Here’s my experience using the Ripple emulator for BlackBerry WebWorks.
There’s a bunch of awesome BlackBerry developers at the hackathon, but I’m determined to work this out without them walking me through it. After all, developers don’t normally have the opportunity to ask directly for help. And this way I get to discover all the dark corners of the BlackBerry developer experience.
Again, Ripple comes as a non-native installer. This time, the installation goes into /Applications/Research in Motion/ – I would prefer to have everything in /Developer/SDKs/Research In Motion/ so everything is in one consistent place. Or, since Ripple is an emulator for more than just WebWorks, just leave it in /Applications but drop the “Research in Motion” folder. And tidy up the app so the resources are all inside the app bundle. Basically, follow Mac best practice.
Launching the Ripple emulator application the first time results in a prompt in the middle of the screen, asking what platform you want to emulate:

Selecting “WebWorks” results in a a huge emulator window with the device running off the bottom of the screen – this on my Macbook Pro running at 1680×1050. Are mobile screens really so big?

In discussion with some folks at the hackathon, it turns out the Windows version of Ripple has the option to scale the UI, but not in the Mac version.
I’ve got my packaged app from the previous exploration of creating a WebWorks app, but there doesn’t seem to be an obvious way to load it into the emulator.
Reading “Packaging your app with the BlackBerry WebWorks SDK” tells me about the different formats of files I discovered when creating my own app:
- .cod file for wireless distribution or distribution from a web page
- .alx file for distribution using BlackBerry Desktop Manager
- .jad file for distribution from a web page
- .cso file for application signing
- .csl file for application signing
Apparently there’s also a .bar file for a BlackBerry tablet. I can’t help but feel I’d like a single fat package for all eventualities.
There’s instructions on running your application on a smartphone simulator, but the simulator is a VM and does not appear to be the Ripple emulator.
Reading Packaging your app in Ripple, you can package from within the emulator. You have to click the tiny wrench icon in the top-right corner of the emulator window. This should be much more prominent if this is a common task.
Unfortunately, clicking on the wrench prompts me for lots of configuration: SDK path, Project Root, archive name … all as text fields, and not file/folder pickers. There’s also no support for tab-completion of paths in the fields, so you’ll have to enter them long-hand:

Given RIM only recently acquired Ripple, I’ll cut them some slack. But I’d like to see for example a wrapper script that launches Ripple with all the correct configurations for SDK, project, etc.
The settings for smartphones are on the packaging page.
I’m guessing that my settings should be:
- SDK Path: /Developer/SDKs/Research In Motion/BlackBerry WebWorks SDK 2.3.0.9
- Project Root: /Users/savs/Downloads/blackberry-WebWorks-Samples-0a5693e/UIExamples
- Archive Name: UIExamples
- Output Folder: /tmp/Ripple
Trying with these settings, I got the familiar config.xml not found error:

Tweaking the settings,
- SDK Path: /Developer/SDKs/Research In Motion/BlackBerry WebWorks SDK 2.3.0.9
- Project Root: /Users/savs/Downloads/blackberry-WebWorks-Samples-0a5693e/ProjectRoot
- Archive Name: UIExamples
- Output Folder: /tmp/Ripple
That worked:

I ended up with UIExamples.zip inside /tmp/Ripple, and an “OTAInstall” folder and a “StandardInstall” folder.
The OTAInstall folder contains UIExamples .cod files, split into ten separate packages:

Apparently this is for backwards-compatibility reasons, with only packages of ~60k or less being allowed for an OTA install. This means that, when you deploy to a phone, you get to watch 10 different packages being installed before your app is ready for testing. Ouch.
Now I’ve build the packages, it’s not clear how to actually use the built application. The “Package and Launch” menu option is greyed-out.
Looking at the settings screen again, at the bottom beside Simulator it says “No simulators found
“.
During the hackathon, the network failed. This results in some fairly unhelpful problems with Ripple, where you’ll see a blank loading screen for a long time followed by an error message:


This all went away when the network came back.
Reading the docs suggests another way to view your app in Ripple is to stick it on a web server and point Ripple at that. If you’ve got a local server, the benefit is a much quicker development cycle, without having to go through the packaging process first. Indeed, this did work and allowed me to see my app:

The downside on a Mac is that you can’t easily symlink your content from the web root to your development location (at least, not without making a ton of parent directories more widely accessible). See Creating a symbolic link in Sites directory on StackOverflow for more details.
Anyway, success of sorts: I got my app packaged, and I got to view the development files via HTTP.
Next up: signing.
by Andrew at February 08, 2012 09:02 AM
February 07, 2012
Further to last week’s blog post that mentioned this Saturday’s (11 Feb) London Stop ACTA march, there’s a map of anti-ACTA marches on Google’s website (thanks to Martin Houston for the link).
There’s also been a new Anti-Counterfeiting Trade Agreement factsheet from European Digital RIghts (EDRI), as apparently there are a lot of misconceptions about ACTA. I don’t feel that has been helped by some spectacular misdirection from the European Commission in its latest “10 Myths” paper (linked from the EDRI factsheet) which is almost as interesting for what it doesn’t mention (like sneaking ACTA through the parliament fisheries committee), what it misunderstands (like the near-uselessness of a non-commercial exemption to Free and Open Source Software or Creative Commons users), and the way it fails to rebut the final point that ACTA was done this way to avoid the oversight of the World Trade Organisation! I mean, if they can’t even get it past the usually very pro-enforcement WTO, surely that should tell you something?
If you can, would you please go along and join your nearest march? Recent marchers seem to have been wearing stylised Guy Fawkes masks, but how would that be viewed in London?
by mjr at February 07, 2012 12:11 AM
February 06, 2012
Some notes on building my first WebWorks app.
I figured the quickest way to get an app up and running would be to take the examples from BlackBerry.
Working from https://github.com/blackberry/WebWorks-Samples/tree/master/UIExamples I first did a git clone, but then reading the documentation I downloaded a zip of the UI examples instead.
The documentation talks about downloading a zip, unarchiving it, shuffling things around, and rearchiving it. The first problem I came across (on a Mac) doing this was Apple’s resource forks screwing up the zip:
Invalid application archive: resource name is not valid(__MACOSX/UIExamples/._bbmBubbles.htm
Next up, another packaging problem: despite following the documentation (or so I thought), I could not get bbwp to build my package:
Invalid application archive – failed to find config.xml

It turns out I was doing it wrong – the config.xml needs to be at the same level as the containing folder (http://stackoverflow.com/questions/4433092/package-my-first-blackberry-widget-xml-file-not-found). A tweak to the layout and then:
zip -r UIExamples.zip UIExamples config.xml
That fixed the packaging problem (both with missing files and with Mac resource forks). The next error I got was “Spinner not found”:

There’s quite a few extra steps you need to go through to add the UI Spinner extension, which can be summed up as:
- download the SpinnerControl zip
- extract the zip
- create the /Developer/SDKs/Research In Motion/BlackBerry WebWorks SDK 2.3.0.9/ext/blackberry.ui.Spinner directory
- copy the library.xml file into that directory
- copy the blackberry-WebWorks-Community-APIs-4d7c20a/Smartphone/SpinnerControl/src/blackberry folder into the ext/blackberry.ui.Spinner directory.
Phew. The packaging will then work:
BlackBerry WebWorks application packaging complete
I think there’s some optimisation that could be done on this process. In general the WebWorks development seems to involve a lot of copying files here and there.
One thing that wasn’t clear was where the output package went. I was running
./bbwp /Users/savs/Downloads/blackberry-WebWorks-Samples-0a5693e/UIExamples.zip
… but although it declared success, I could find no output. So don’t do this. It turns out you need to add -o (picked up from Lukasz‘ excellent presentation on differences between Enyo and WebWorks):
./bbwp /Users/savs/Downloads/blackberry-WebWorks-Samples-0a5693e/UIExamples.zip -o /tmp/
This gives two folders, OTAInstall and StandardInstall, which contain a bunch of files with .cod, .jad, .cso, .csl, .alx extensions. No idea what these are – I guess I’ll find out as I continue to explore.
Now I’ve got a packaged app, what do I do now? Next up: time to try out the emulator.
~
Update: turns out I’m not quite right about the folder structure and location of config.xml – although it worked, when you deploy it on a phone it fails. Instead you have the config file at the same location as your resources, and do the zipping of the contents of the project, rather than the project folder:
zip -r UIExamples.zip *
And then package:
./bbwp /Users/savs/Downloads/blackberry-WebWorks-Samples-0a5693e/ProjectRoot/UIExamples/UIExamples.zip -o /tmp/bbwp/
… and it works on the phone as well.
by Andrew at February 06, 2012 10:06 AM
Based on today’s upcoming Hackathon I’m investigating WebWorks (not WebWorks (with annoying voice popup!) or WebWorks). These are rough, quick notes in the spirit of “publish early and often”.
So far I’ve downloaded Ripple (the emulator), the smartphone and tablet SDK. Initial reaction: it would be better if there was one download that comprised all three components. You don’t, for example, download a separate iPhone and iPad SDK, or Pre and Touchpad SDK. But bonus points for having Mac OS X installers at all – last time I looked at RIM/BlackBerry development, it was Windows-only. Unshackling from the Windows ecosystem is a good plan for any mobile platform.
On the corner of the WebWorks SDK download page you’ll note the ribbon “Fork me on GitHub”, which takes you to blackberry.github.com which includes for example BlackBerry WebWorks – I’m impressed. This looks like open development, with actual commits and merges taking place in public. So RIM should be recognised for doing this – it’s a step that so many mobile platforms have not yet made.
Another thought – since everything is branded BlackBerry, isn’t it time RIM renamed? Research In Motion is a cool name, RIM not so much, and everyone just says “BlackBerry” anyway.
Let’s dig in to the Smartphone SDK:
The installer is an app which is an installer. I always prefer Mac software to use the native Apple install app – the tooling to create these is extremely good, and a non-native InstallAnywhere installer just looks poor. It also helps prevent some of the unfortunate user experience errors that are present in RIM’s installer. Also, InstallAnywhere is just not pretty:

The first area for improvement I noticed was the Install location. The installer suggests it will be put in a root folder called ‘/Research in Motion‘ which would be just horrible. In reality, it sort-of does the right thing and installs to ‘/Developer/SDKs/Research In Motion/BlackBerry WebWorks SDK 2.3.0.9‘ if you accept the defaults. I don’t like version numbers in folder names – a workaround if they must have this would be to add a symlink ‘Current’ pointing to ’2.3.0.9′, which allows for less fragile scripting.

The SDK is 20mb, which is very light compared to others – but let’s not forget this is only for smartphones, and only for web apps.
During installation I got an overwrite error message, despite never having installed WebWorks before:

This is the kind of ugly hiccup you can mitigate by using a platform-native installer. I told it to overwrite, and the installation seemed to complete successfully:

There doesn’t seem to be any sort of GUI with this SDK – in fact I’d go so far as to say it’s less of an SDK and more of a packaging tool, allowing you to bundle your web apps into a format to drop on a phone.
Next up: my first-run experience of producing a sample app.
by Andrew at February 06, 2012 08:26 AM
February 04, 2012
February 02, 2012
Sometimes two campaigns that I care about a lot pick the same day to hold an awareness-raising drive. It happened again on Tuesday.
The one I took part in was advertising the Stop ACTA London Protest on Sat 11 Feb. The Anti-Counterfeiting Trade Agreement (#ACTA) is a plurilateral international agreement on enforcement of so-called “intellectual property rights” – copyrights, trademarks and so on. It’ll have major implications for freedom of expression, access to culture and privacy. It will also harm international trade and stifle cooperation. (More background at EDRI or a fairly large AJE page – thanks to Occupy Bristol for the AJE link.)
So the one I didn’t support at the time was the Move Your Money UK launch day. That’s a great idea too, suggesting that if we, the 99%, are actually unhappy with the big banks and their titled leaders, we should move as much as possible out of those banks and into financial institutions that we control. As you might expect for someone whose first memory of mutuals is a trust account at the local building society, I support that too. I still have building society accounts, as well as banking with the co-op bank and recently joining my local credit union. I’ve moved my money. Why don’t you?
I didn’t try to support both campaigns simultaneously on social networks because I thought it would reduce the number of people who saw my message. I backed the ACTA protest because a lot of my networks were already discussing Move Your Money and I thought Stop ACTA would benefit more. Was that the right decision? Who can tell? What would you have done?
by mjr at February 02, 2012 08:08 PM
Not even a month after my predictions for the year, and the first of them has failed. I said:
No IPO for Facebook: This could go either way. My bet is it will be very late 2012 or early 2013
They said:
Facebook unveils $5bn stock market flotation plans
Hrmph. Thanks Zuckerberg, you impatient hasty prediction-killer!
by Andrew at February 02, 2012 10:54 AM
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