Planet ALUG

January 28, 2012

Andrew Savory

Backlight

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:

Laptop with backlight

And here’s my monitor with the backlight:

Backlit monitor

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

LEDs on back of 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

Andrew Savory

Juice

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

Apple and Carrot Detox Speeder

Super-charged Spring Cleaner

Super-charged Spring Cleaner

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

MJ Ray

Phones, Privacy and Co-ops

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

Andrew Savory

Tethered to o2

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:

Set Up Personal Hotspot

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:

Visit o2 Website

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

o2 personal hotspot website

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?”:

The o2 modem website in a desktop browser

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?”:

o2 online support chat

“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:

o2 Bolt Ons

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

Andrew Savory

Out for delivery?

It feels like my Amazon order has been in transit for ages. It was dispatched over 40 years ago and I’m still waiting …

amazon order

by Andrew at January 23, 2012 12:06 PM

January 22, 2012

Jonathan McDowell

I want you to see my storage automagically

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

Totally divorced

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

Andrew Savory

Media and storage of the future

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

Andrew Savory

Statistics

Blog stats

Borrowing from Alex King’s Simple SQL Queries for Blog Stats, here’s some stats on this blog.

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

MJ Ray

The New UK Co-op Bill: In Praise Of Diversity

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

Brett Parker (iDunno)

StarTech IP KVM - SV1107IPEXT

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

MJ Ray

SOPA: Lash Out is better than Black Out

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

Brett Parker (iDunno)

Mira Grant - Newsflesh Trilogy

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

Andrew Savory

FOSDEM 2011: Sunday

In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2011 day two: Sunday.

Barebox

FOSDEM booting linux fast and fancy

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:

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:

Configuration done just by assigning variables e.g. eth0=172.0.0.3.

Booting linux fast:

Example: 336ms from bootloader to init on freescale mx35, 532mhz. On beagleboard this is usually 800ms.

Booting linux fancy:

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.

Linaro

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:

How is Linaro fixing this? engineering, engineering, engineering!

FOSDEM linaro developers

In the above graph:

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:

10.11 technical highlights

lessons learned

2011 plans: build of linaro-enhanced key distributions on member SoCs

Building a test and validation framework for member SoC hardware.

Qt tales from embedded trenches

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;

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

Andrew Savory

FOSDEM 2011: Saturday

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:

Some thoughts from the event overall:

Some of the talks attended:

Lightning Talk: Is the UK Government backing free software?

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).

How to be a good downstream

FOSDEM how to be a good downstream

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

Empathy

Packaging (initially and ongoing)

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

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.

Swimming upstream

FOSDEM swimming upstream

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.

Downstream Packaging collaboration

FOSDEM downstream packaging

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.

FOSDEM patch sharing

The second part of the talk focussed on patch sharing:

Advantages: differences are more obvious, one patch can be used for multiple versions.

Whenever someone creates a new patch:

cf. openembedded:

patch conventions – easily parseable metadata:

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.

E17

FOSDEM enlightenment

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:

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.

Open Sourcing Java

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

Real relationships help and heal

training reptiles takes time (corporations are reptiles)

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

Pragmatic compromise to achieve larger goal can be acceptable

Licenses are constitutions for communities

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

Getting started with Tizen

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:

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
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
wget https://developer.tizen.org/download/tizen_sdk.bin
chmod +x tizen_sdk.bin
./tizen_sdk.bin

(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:

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

Andrew Savory

FOSDEM 2010

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:

Embedded software development best practices (Adrien Ampelas)

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?

Build Process

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.

One D-Bus interface can expose multiple objects.

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:

It’s based on X.Org Xserver 1.7.4, E17 Illume (Enlightenment).

An FSO-SHR Conference was planned for 2010.

hackable:1 (David Wagner)

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.

hackable:1

Tracker and SPARQL (Rob Taylor, CodeThink)

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

Wayne Stallwood (DrJeep)

Minimal Arduino Circuit

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

Andrew Savory

Predictive Text

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:

  1. No Apple television set and no iPad 3.
  2. Google TV will be another failure. And Google+ will continue to be a failure.
  3. No new WebOS hardware.
  4. No Euro collapse (sneaking in a non-tech one).
  5. This year will be ‘boring’ (at least in tech) in comparison to last year’s apocalyptic nature (Elop, Leo, Jobs, etc), even counting Nokia off-loading the smartphone division to Microsoft and little Nokia resurrecting mobile linux.

And you? Where do you place your bets?

by Andrew at January 07, 2012 09:22 AM

January 05, 2012

Andrew Savory

Humax PVRs

I have a rather lovely Humax PVR9300T, a digital video recorder that I bought a year or so back. Or, it was lovely, I should say. Just before Christmas, the box started to freeze. Rebooting it didn’t make a difference; it would play television for a minute or two before freezing again.

I figured this was all part of the failing IT saga (Macbook, Kindle, now PVR). But no.

It turns out that I’ve been using the Humax PVR all wrong. The firmware on the device hadn’t been updated since January 13 2010, and the old firmware is buggy. I had auto-update turned on, but apparently the automatic over-the-air firmware updates only run when the PVR is in standby mode, and I’ve never bothered to put it in standby.

So, if you have a Humax PVR, you need to:

And then, happy TV watching and recording!

~

I hadn’t realised that these devices can do over-the-air updates, but I guess it’s a logical extension to the switch to digital. It’s quite cool to see the device pulling down an update without having to plug in a serial or network cable. At the same time, I’m a little disappointed that I don’t get to hook my laptop up to the PVR to flash the firmware and play geek. Maybe next time.

~

Of course, if I were to buy a new PVR today, I’d be getting the Humax HDR-FOX T2 HD 1080p 500GB Recorder with Freeview HD which is all shiny and has HD in the name and so is clearly better. Guess I’ll have to ‘accidentally’ put a few thousand extra volts through my newly-fixed 9300 ;-)

by Andrew at January 05, 2012 11:02 AM

December 25, 2011

Andrew Savory

Google ♥ Mozilla

Gruber considers the relationship between Mozilla and Google really weirdMG Siegler suggests that it’s in part due to a bidding war, and in part because of anti-trust concerns based on a tweet from David Ulevitch. I’m sure both those hypotheses are true, but let me suggest another idea: Google needsFirefox – for at least two reasons, and probably a whole lot more.

~

Firefox legitimises Chrome. Firefox Sync has been around in one form or another since 2007, and before there was a Google feature called Google Browser Sync. The idea is that some central server stores synchronisation data so that all your browser instances have the same bookmarks, preferences, passwords, and so on. The Mozilla implementation stores the data on Mozilla’s servers, and comes with strong promises of data protection, using encryption to stop even Mozilla from accessing the information. A similar set of features have been creeping into Chrome: bookmark syncing in January 2010, followed quickly by preferences in May, form data in September, and passwords the following year. All this data is synced with your existing Google account. There’s a subtle difference between storing your data on the servers of a non-profit foundation that talks about the safety of that data, and storing your data on the servers of a for-profit corporation that has the stated goalof indexing all the world’s information. Everybody loves Mozilla, everybody loves Firefox. They are the great white knights of the internet. They slayed the evil Internet Explorer; they stand for freedom and open standards and other good stuff. If storing your data in Firefox is okay, it’s a natural assumption and logical step to store your data in Chrome. Legitimacy by association. Firefox leads with the feature, and Chrome follows through. Google wins by getting hold of previously “dark data”: bookmarks, form fields, passwords and preferences that were previously locked away on users’ computers.

~

Firefox inspires Chrome. Someone said the other day in a meeting that “Google has all the money in the world, and all the PhDs in the world”. Whilst that’s not entirely true, it’s a good enough approximation. But even with all the money and all the brains, you can’t guarantee you’ll have all the ideas. If necessity is the mother of invention, then competition is the mother of innovation. The leapfrogging that goes on in browser development between Chrome and Firefox is proof of that. It’s arguably fantastic value for Google to pay Mozilla to act as an outsourced browser think tank. And of course Mozilla do so much more than just build a browser. Take a look at the list of Mozilla projects, the Mozilla community map,  driving forward web standards, protecting an open internet. Many of Mozilla’s activities directly support Google. It’s a symbiotic relationship. Sure, Google could probably hire the Mozilla teams to do the same for Google, but why bother if Mozilla are already doing it cheaper and/or better than it could be done at Google?

~

So maybe rather than thinking “that’s really weird” or “they’re overpaying” or “it’s a dodge to avoid Government intervention”, we should be thinking “great job, Mozilla” and “hey, that’s great news for the open web and browser innovation”.

Update 16:31GMT: A similar story has hit Slashdot. Peter Kasting’s argument is that Google use Chrome (and Firefox) for the betterment of the web, which I buy in addition to the ideas above. Mozilla is a partner in this. A better web equals more people for Google to sell to advertisers, and more search revenue for Mozilla to use to advance the web even further.

by Andrew at December 25, 2011 01:51 PM

December 24, 2011

Andrew Savory

Books 5

In the last four months there should have been plenty of opportunity to read books, right? Well, not so much. Herein my most recent literary conquests.

Previously: booksbooks 2books 3, books 4.

by Andrew at December 24, 2011 08:26 AM

December 21, 2011

Wayne Stallwood (DrJeep)

Obsessive Compulsive Hoarder

Can I just say that after watching Obsessive Compulsive Hoarder on Ch4 I am disgusted with the Councillor who didn't visit, the “Mental Health Expert” who walked away and reported Richard Wallace for fire safety, the Vicar who sat on the fence and the neighbours who first extended the long arm of the law rather than the hand of community. However I am touched by the humanity of one Landscape Gardener who looked at the ill and damaged man rather than eyesore in the garden and hence made more progress than anyone else in over 30 years of one man's suffering. Bravo to that man and everyone he managed to turn around to provide positive help at the end.

December 21, 2011 11:18 PM

Andrew Savory

Macbook Pro SSD saga, part three

So previously my Macbook Pro stopped booting and got stuck at the grey boot screen. Then after a week at Apple for repair, they called me to tell me the SSD was stopping the Macbook Pro from booting.

Yesterday I ordered a new Crucial M4 256GB SSD, which Crucial claim to be compatible with my laptop. I also collected my laptop from Apple. This afternoon the new drive arrived (thank you Amazon Prime), so I set about removing the old dubious SSD and replacing it with the new one.

It didn’t go well.

Firstly, the old SSD. It was an OWC 115GB SSD with mount kit. It replaces the optical drive, which means I can have all the benefits of fast boot from SSD, coupled with copious storage from the factory-installed 500gb hard drive. The downside of this approach is Apple don’t provide the service themselves, so it has to be a DIY upgrade.

Unfortunately, it looks like the SSD has failed completely. Plugging it into an SATA docking station had no result. It didn’t show up in the device list, so it’s effectively a chunk of dead plastic. Luckily, this chunk of dead plastic decided to dodo within the warranty: it was only bought last April.

On to the new SSD. Unfortunately, this SSD arrived with a rattle. You can’t make this stuff up. This solid state drive has bits that make noises when you shake it. The PCB that’s mounted inside the plastic case was a loose fit, so with the slightest nudge you can hear it moving around. Holding the SSD by the SATA connector as well as the case stopped the rattle. The drive itself was fine (I used it to confirm the SATA docking station was working and the other SSD was dead), but given my luck I decided it was safest to return it.

Back to the Mac. With no usable SSD, I put the Superdrive back in it for the time being, and powered it on.

Except it wouldn’t turn on.

The battery showed it had a nearly full charge, but just to be sure I plugged the power in. The laptop immediately came to life, showed the boot screen, and then started booting from my old hard drive. So far so good. Unfortunately, when it got to the login screen, it quickly became clear that the keyboard was not working. No input was detected, and the caps lock light failed to light up. So I selected shut down, let the laptop power off, and then tried powering it on again.

Except it wouldn’t turn on.

Plugged in, unplugged, nothing works. It appears to be dead. Not resting. Not stunned. Not pining for the fjords.

I guess I’ll take the laptop back to Apple after Christmas, and see what they can do. Given the keyboard was the first sign of trouble and Apple say they tested with a new logic board, my suspicion is something went awry when they put the old board back in (especially as the Superdrive/SSD shenanigans I performed were nowhere near the keyboard controller). I can’t see anything obvious like a loose connector, so perhaps the logic board blew in all the excitement.

Meanwhile, at least my old laptop continues to work, for now.

Sigh.

by Andrew at December 21, 2011 10:11 PM

UX fail

At the Sainsburys filling station yesterday, I opted to pay at the pump. I inserted my debit card at the prompt, and heard an audible clunk as it was read. I typed in my PIN, and after a few seconds heard another audible clunk which I assumed meant it was done, so I removed the card. Oops. “Card removed too early, transaction cancelled”. What was the clunk, and what should it mean to the user?

The John Lewis website has the option for premium delivery of goods, which when selected presents a drop-down list of available dates. These dates currently start from after the Christmas break, on Wednesday 28th December. If I’m ordering something yesterday (Tuesday), and I see a drop-down with Wednesday already selected, and I’m in a section titled “Premium Delivery” and subtitled “Next, named or Saturday UK delivery”, I might assume that the Wednesday in question was the next day, rather than one week’s time. Could this have been improved by stating the number of days until delivery, or highlighting the unusual case due to the holidays?

The new Westfield Stratford City shopping centre uses little green parking tokens. You pick them up on entry, and on exit you take them to a pay machine, insert the token, and are then told how much money you have to pay. After paying, the token is returned. If you you’re visiting for late night shopping, you might not have to pay. When you insert the token, it falls straight out the bottom of the machine. Nothing changes on the display. You might end up putting the token back in a few times, wondering what is happening. Couldn’t the machine show a “parking is free” message, or “nothing to pay”?

The door to the corridor below my flat has a large u-shaped handle, so I invariably pull it even though the door needs to be pushed to open. Wouldn’t it be better to have a flat panel, since the door cannot be pulled?

There are so many small but broken interactions we have on a day-to-day basis. Fixing the small annoying details may seem like a needless expense, or something that can be dealt with later. But in a world where we are surrounded by a constant background of such low level frustrations, paying attention to detail and sweating the small stuff becomes nothing short of miraculous.

by Andrew at December 21, 2011 09:02 PM

December 20, 2011

Andrew Savory

Macbook Pro SSD saga, part two

The tale of my broken Macbook Pro just took a bizarre turn.

Apple called me (not even five minutes after I called them to poke them for an update) to provide an update on the repair. Apparently my laptop works just fine with both the new logic board and the old logic board – just as long as the SSD is not plugged in.

The happy news is I’ve just been saved from a £420 repair bill.

The bad news (apart from having lost a week) is that my Mac won’t boot with the SSD. I have to go back to the old internal hard drive while I decide what to do with the SSD. I’m a little annoyed, as I asked Apple to confirm it wasn’t the SSD, and was told that SSD failures should result in the “select boot device” screen or some other error, not a grey screen. It’s also not clear at this stage if the SSD is outright broken, or if the Mac simply doesn’t like it – I’ll find out when I get it home and plug it into something else.

I’ve seen other reports of SSD weirdness, including Jeroen’s detailed account. This whole situation with Apple hardware and what should be a fairly standard add-on is intensely frustrating. It’s exacerbated by Apple’s boot firmware failing to do anything sensible.

It’s also extremely odd that the whole setup was working just fine for several months before it failed. I bought the SSD in April, and have been reliably booting from it since Lion was released in July. If the SSD has failed, that means it only lasted 5 months of sustained use!

So, lazyweb: what SSD drives are actually confirmed to be 100% compatible with a Macbook Pro? What is the likely lifetime of an SSD? And why are the hardware gods being so unkind to me this month?!

by Andrew at December 20, 2011 12:12 PM

December 17, 2011

Andrew Savory

Did a book kill my Kindle?

I have what is now called the Kindle Keyboard, a 3rd generation Kindle that I bought on 18 October last year. Like my laptop, it’s now dead. Incredible, right?

Aside from observations on how all the gadgets I bought last October are now breaking – less than 2 months outside of warranty – I am left wondering whether in this instance a book has killed my Kindle.

For a few days before the Kindle died, it had been freezing whilst reading The Dervish House, by Ian McDonald (it’s a great book by the way, don’t let me put you off). Around 80% through, every couple of pages it would hang, requiring a forced restart. I also noticed that this book includes graphics which show up on my TouchPad but not on the Kindle 3, and that on both devices it has horrific paragraph spacing.

Whilst reading up on different ways to restart the Kindle, I came across reference to potential indexing problems. Apparently the Kindle can sometimes get stuck indexing a book. The symptoms sound similar: extremely flaky device, and constantly having to recharge it. (Having left mine to recharge all night, I’ve just plugged it in again and it wants recharging, even though all I’ve done in the last 20 minutes is try to restart it.)

So here I am with a Kindle that won’t restart, once again stuck with the cost of ecosystem lock-in and the apparent need to include the cost of warranty extensions in my purchasing decisions.

Update 22:05: So I just went through the fault with Amazon’s (really quite good) Kindle support telephone line. It’s great to be able to click “Call me” and have them phone you right away and talk you through the issue.

Their suggestion was to plug the Kindle into a laptop for half an hour: apparently, the laptop charging is ‘different’ to charging via the Kindle charger. And indeed, after 30 minutes the Kindle booted into USB mode. When I unmounted it from the laptop it booted back into the home screen, and I was able to move the cursor down one menu item, but as soon as my books reappeared the device hung again.

I spoke again with Amazon support, and they suggested charging it for longer. Otherwise, as the device is out of warranty, they couldn’t replace it but they did offer me a discount on a replacement device as a one-time exception. The discount was reasonable, but still put the replacement in the realms of “quite a bit more than buying real books and bookcases”, especially in the context of a device lifespan of just 14 months.

I also don’t have much confidence in this approach as the problem feels like a software issue rather than a hardware issue – given the Kindle boots, allows some input (not enough to perform a factory reset), and then hangs. I’m definitely not about to pay for a hardware replacement if the fault is a software bug.

So I guess I’ll finish reading my remaining Kindle books on the Touchpad, and then look around for alternative ereader devices. The ready availability of electronic books is a model that definitely works well for me: I’ve read 81 books on the Kindle in the year since I first got it. It works out at more than one a week – that’s probably the most prolific reading I’ve done since I was at school.

But I’m not going to pay a hardware tax on ebooks every year.

by Andrew at December 17, 2011 08:49 AM

December 14, 2011

Adam Bower

I should write more.

...but I'm too lazy, busy and tired to actually find time to write stuff here.

This entry was originally posted at http://quinophex.dreamwidth.org/1127.html. Please comment there using OpenID.

December 14, 2011 06:18 PM

December 09, 2011

Andrew Savory

WebOS Open Source

There’s lots of noise out there about WebOS being open source. Everything from “WebOS is dead” to “WebOS is saved!” – but what is really going on? Why did Meg make this move now?

Thinking about it, this move makes a lot of sense for HP. Léo Apotheker‘s disastrous handling of the original WebOS announcement effectively destroyed any opportunity for HP to sell the platform. Léo destroyed confidence, and no OEM would want to pick up something that HP could not afford to build. Léo himself stated that building the WebOS business would be a multi-year, multi-$billion proposition. Few OEMs have pockets as deep as HP, and certainly none would have the stomach to invest so heavily – especially after seeing HP back away from the investment.

It would be difficult for Meg Whitman to perform a complete about-turn and start pushing WebOS again with a tablet and smartphone strategy, presumably against the express wishes of the HP board. If there’s no-one to buy the platform, and no politic way to resurrect the platform internally, what are the alternatives? Meg could write off the investment, or disrupt the market. The latter option at least carries the potential to see a long-term return of sorts, and keeps HP’s smart printer dreams alive and leaves the door open for future tablet hardware sales, too.

Whilst the fire sale proved there’s consumer demand for a bargain (as always), I suspect it did little to build OEM confidence in the platform. Everyone is being hammered by Apple: non-iPad tablets aren’t selling well, despite significant investment and endless product announcements. Buying the number two tablet platform isn’t an exciting proposition when it’s only number two by dint of selling at below cost, and when even then it has only a small fraction of the market versus the incumbent.

Meanwhile, Google are tightening their grip on Android. Everything about Android smells from an OEM perspective: the Motorola purchase; the preferential treatment of Motorola and Verizon; the refusal to open source Honeycomb, significant license costs payable to Microsoft; and perhaps worst of all, ‘non-fragmentation’ clauses that seek to end differentiation, in a crowded and contested market where manufacturers desperately need to stand out as they fight over the scraps that iPad leaves behind.

At the same time as Android becomes less appetising, opportunities to adopt other open source platforms at low cost have dramatically evaporated over the last year. In fact, as I tried to illustrate in the death of ‘open’ mobile platforms, we’ve lost Maemo, Symbian, LiMo, and MeeGo in addition to Android. If you’re looking to productise on an open mobile platform right now, your choices are starkly limited. In fact the only platform that’s not been pronounced utterly dead is Tizen – a platform that’s not even alive.

And yet there are plenty of device manufacturers who are desperate to start delivering smartphone hits: LG’s rights issue springs to mind as demonstrable of a manufacturer that’s struggling; even the über-shiny HTC is seeing profits dip; and Samsung will need to switch to an all-smartphone lineup sooner rather than later, if they are to achieve their ambition of not losing all their profit to Apple.

But for all these companies, and any others, there is no sense in buying WebOS from HP. If they buy the platform, they will have to go it alone: running the infrastructure, doing the platform development, handling the developer outreach, building the consumer brand, working with big name brands to get apps on the platform … it’s an enormous resource sink, and a massive diversion from core business. This is the key to the Android success: all those aspects are covered, and the only critical task the manufacturers have is shipping product. And boy, do they understand how to ship product (ship, not necessarily sell).

So the landscape that WebOS fits into as an open source platform is one where Android manufacturers are fighting over scraps in an increasingly locked-down ecosystem; where no other open source platform is currently available; where the manufacturers are desperate for differentiation; and where the most elegant user experience continues to take the lion’s share of the market.

In that context, why wouldn’t the manufacturers consider using an open mobile platform, that has an arguably elegant user experience, and less encumbrance than the only other pseudo open-source alternative?

HP now needs to find a way to establish an equitable level playing field for manufacturers; an open development ecosystem where each can take the platform and commercialise it, free of IP encumbrance and business model conflicts.

As I said about Tizen, there are some obvious metrics to gauge the future success of open source WebOS:

What’s most interesting is that WebOS already scores pretty highly on some of these indicators: a unified platform around WebOS 3; good web and native APIs; mature SDK; route to market; features, functionality, stability and performance. Let’s hope they can provide effective answers to all the other metrics in a timely fashion, and bring on board the OEMs who can really benefit from this platform.

by Andrew at December 09, 2011 11:26 PM

Ungodly Macbook Pro

A funny thing happened today on the way to the codeface.

This morning, as I was packing up to leave London, I did the usual: hit the Macbook Pro power button, hit S, wait for it to sleep, close it, pack it in the Crumpler laptop case, put it in the padded backpack, and head off to the car.

When I got to Norwich, I unpacked the laptop, plugged it in, opened it up and watched as it popped back to life. It seemed to be struggling to talk to the network, so I toggled WiFi off and back on again. No luck: all the London hotspots were still showing up, and none of the local ones were. Then WiFi did the pizza wheel thing, so I switched to iTerm, planning on finding out what was going on, but then that pizza wheeled too. Opera – pizza wheel. Finder – pizza wheel. Uh-oh.

I gave the Mac a few minutes to sort itself out. Sometimes I struggle to wake properly, so why shouldn’t the laptop? No dice. And without a network connection, I couldn’t ssh in to force a reboot. So I took the only option left, and forcefully powered down the laptop by holding down the power button. And then restarted it.

Except the laptop didn’t restart. It got to the first grey screen, but then stayed there. It didn’t even display a list of drives, or an unhappy mac sign.

I didn’t panic, not right away. This has happened on other laptops from time to time. I did the dance: rebooting and holding ‘Alt’ (Option) to select a different boot drive. Resetting the SMC. Resetting the PRAM and NVRAM. Starting in Safe Mode. Giving the Mac some alone time on the naughty step to think about what it had done, and to decide whether it was going to behave again or not. Nothing worked. Every time the Mac restarted, it would get to the grey screen and then do nothing more.

I fired up the Touchpad,  and booked myself a slot at the Genius Bar of the nearest Apple Store. Thank goodness Norwich is now a civilised city, replete with its own shiny geek Mecca. I packed up the disobedient Mac and headed into town, stopping only to make some snarky remarks on twitter, including how autocorrect spellchecking converts the Macbook Pro’s Unibody to ungodly. Rather apposite.

At the Apple Store, it was not good news. The kindly genius I spoke to did all she could: booting from network (no joy), ambidextrous yogic keyboard sequences (no joy), reseating the RAM (no joy), taking the laptop into the magical back room to perform secret rituals known only to the Apple inner circle (no joy). My shiny unibody Macbook Pro, bought just last October, was declared dead and in need of a new logic board, which could be mine for just £350 plus VAT. Ouch. I went home to think about that one (and to pour myself a very large whisky).

Fortunately, my original Macbook Pro 1,1 was travelling with me as well (itself  the recipient of a new logic board back in April 2010). The plan was to set it up with Windows for my sister this weekend, and then hand it over to her. She’ll not be happy either.

So here I am, back on my old laptop. Ordinarily, I would be unfazed by the switch. Since the advent of MobileMe and Dropbox, migrating between Macs stopped being a problem. For years now it’s merely a matter of a thrashed network for a few hours as the latest updates sync, followed by productive work.

Unfortunately, life after Lion has somewhat shattered that ideal state:

Other than that, I’m somewhat perversely glad to be back on Snow Leopard. No more bluetooth audio problems. No more (far fewer) kernel panics. No painfully sharp unibody case to chafe my wrists. But boy do I miss the SSD. And the extra memory. And the higher screen resolution. And all those extra processors.

In my rush to be productive again, I’ve thus far (in approximate order) slung on: Scroll Reverser (muscle memory will not be denied), iStat Menus (feel blind without knowing what’s happening on my box), Dropbox, Opera, XCode, Google Notifier (so I can click on mailto: links and be taken to GMail, not Mail.app), Colloquy (IRC ahead of the WebOS all-hands tonight), Growl (used with continuous integration tools for test status updates), Cinch, NetNewsWire (keep up with the news whilst this sloooooow laptop compiles), BreakTime (more tea?), MarsEdit, Alfred, Twitter, Homebrew (and thence git, wget, mysql and the rest of my life slowly compiling), TextMate, and Yojimbo (my life in license keys).

A productive day lost. An expensive shiny brick to fix or replace. But thanks to Dropbox and git, I don’t think any critical data has been lost.

by Andrew at December 09, 2011 06:25 PM

December 04, 2011

Steve Engledow (stilvoid)

Web terminal lense book

Web servers

After uploading a large file to the gallery application I'd mentioned in a previous post, I discovered that there's a bug in lighttpd that eats up all the memory when shoving a large file through the proxy module.

The gallery application I'm writing is written using node and includes its own (tiny) web server. I was using lighttpd to handle the SSL part of the connection and simply proxy the requests to and from the application. That large file I'd uploaded triggered the bug when I tried to download it later. It's interesting that the upload went perfectly smoothly.

After having been unable to find any convincing fixes for the problem in lighttpd and being unwilling to try to rethink how my application works, I decided it was time to try another web server.

I toyed with the idea of - and in fact partially implemented, just for fun - a web server written with node but really, that's far more effort than I really want to go to and I suspect it wouldn't have the performance characteristics I'd want. That and I'm far too lazy to want to reinvent the wheel.

Taking my queue from work, I though I'd have a look at nginx. At Proxama, we're using nginx on our Amazon EC2 instances to proxy requests to the django application that is our application server. From my limited experience of setting it up (well, I've only needed to do it once), it seemed pretty simple to configure and yes, after half an hour or so I'd managed to set up web server with all the virtual hosts, SSL certificates, and proxy settings I had before. And with a much cleaner-looking config file ;)

For future reference, here are the tricky bits and caveats I came across:

So far, nginx seems to be doing the job very well, solves the issues I was having and (that I've noticed) hasn't created any new ones.

White terminal

The other day, I decided that I was bored of having white text on a black background in my xterms and resolved to spend a day working in black on white.

It didn't work; I'll stick with white on black, thanks.

Chilli lenses

No matter what method one uses (with the probable exception of using rubber gloves), however much one washes one's hands after chopping chillies, some residue remains. This became particularly manifest when taking out my contact lenses last night; yowch.

Having a liking for scotch bonnets does not help ;)

Facebook

After a month's experimental non-usage, I finally deleted my Facebook account several weeks ago. I really haven't missed it. What I have noticed is that I'm quite relieved to not feel compelled to spend several minutes of every day reading through my friend feed :)

Twitter works fine for me and, because it's so full of content and I'm not personally acquainted with most of the people I follow, it doesn't compel me to catch up with every single post. The same applies to Diaspora.

I highly recommend ditching Facebook. There are an increasing number of reasons to do so which I don't think I even need go into ;)

by steve@offend.me.uk (Steve Engledow) at December 04, 2011 12:22 PM

November 26, 2011

Jonathan McDowell

All I need is a large enough white wall

I think I'm currently supposed to be out buying a TV at the moment. Or something else expensive. Instead I'm lying on the sofa listening to Whale and drinking tea. That's much better in my opinion, but it reminded me that I hadn't mentioned that I bought a projector.

I had the loan of a projector for a while when I was in Belfast. It was a huge thing that made a lot of noise, but was pretty cool for watching films with. When I moved to the US I decided not to bother with a TV to start with - using my laptop did just fine for most things. Except films. They really benefit from a bigger screen. Especially if you want to watch them with someone else. So I started looking at pico projectors, because I wanted something small and cute that I could throw in a bag with my tiny laptop. At the time the best the pico projectors could do was 840x480, which I felt wasn't really that great. However back in January TI announced their DLP Pico HD chipset, offering a resolution 1280x800.

I kept a look out for projectors using this to appear, and eventually, in July, Amazon claimed to have availability of the Vivtek Qumi. So I bought one. And I'm very happy with it. I'm not a heavy user, and there are some niggles, but it's small and does exactly what I want. In low light conditions it'll happily throw an image all the way across the room, which is more than it's rated at. There's a mini-HDMI connector on the back, so it's a doddle to plug it into my laptop using the supplied HDMI to mini-HDMI cable. The laptop auto-detects the device and extends the desktop appropriate, as you'd expect.

It'll also do media playback itself - there's a USB host port and a micro SD slot on the back. This works ok, and the included remote means you can easily set the projector somewhere above your head and still be able to easily control it. Unfortunately the built in speakers are fairly useless. There's a 3.5mm socket for external speakers, but having to plug something else in detracts from the convenience factor of the built-in media player. Also my unit had the power switch installed upside down (the little red line indicating the power is on actually shows up when it's off), but that's the only complaint I've got about the build quality. There's a little neoprene case to store the thing in as well.

So, er, yeah. I think I can continue to make do without a normal TV for a while longer and avoid the nightmare that I suspect are the shops on Black Friday.

November 26, 2011 12:28 AM

November 23, 2011

Steve Engledow (stilvoid)

Strange lunch break

With a burning need to fill our fridge, I set out for the land of Sainsbury's during my lunch break today. On the way, a number of strange things happened - or rather, a number of strange things seemed to happen. I suspect they're more a reflection of my state of mind today. I've probably been watching too much Dexter.

Strange thing number 1: The tail

After coming home from rehearsal on Monday night, I'd been forced to park my car on the next street as all of the spaces were taken on mine (something that I'll probably rant about in the future). Having walked to my car, got in, and started down the road, I realised that I'd left my shopping list at home. I began the twisty-turny drive around the block back to my house and noticed that a blue car had been following me all the way along my illogical route.

I parked outside my house (there was space!), went in and grabbed the shopping list. After starting my car up and performing a quick three-point-turn, I continued my pilgrimage to Sainsbury's. Near the end of my road, the same blue car went past me and I'm sure the driver looked at me guiltily.

Strange things number 2 and 3: The cyclist and the woman in the car

After I'd completed my shopping, I returned to my car, filled it with my shopping and got in. I then realised I'd forgotten to buy a lettuce. While crossing the car park, I noted that a woman in a black car who had started her engine around about the time I'd emptied my trolley had now stopped her engine and was watching me walk past her back to the store. Just before I got to the store, I was nearly hit by a cyclist who was cycling across the car park much too fast.

I bought my lettuce.

On the way back to my car, I had to stop for a car that was crossing the car park very quickly; the driver looked the same as the cyclist!

Once I'd got in my car and pulled out of my parking space, I noticed that the woman in the black car had started her engine and was also pulling out!

Strange thing number 4: The geography teacher

On the journey home, I drove past my old high school geography teacher who I'd mentioned only the other day to my old high school IT teacher who I'd bumped into in a queue at the fish'n'chip shop. I've not seen or thought of either of them for some years.

The End, or is it?

Nothing more happened except that I had a strange compulsion to blog about these events ;)

by steve@offend.me.uk (Steve Engledow) at November 23, 2011 03:43 PM

Brett Parker (iDunno)

Holy Crap - another set of books to re-read when the last comes out.

ARGH! Have just finished "The Wise Man's Fear" - fantastic book, but still the middle of a trilogy, without the last book in sight... If you've not read "The Name of the Wind" and "The Wise Man's Fear" by Patrick Rothfuss, I seriously suggest going and picking them up (at least if you read some fantasy, even if you don't they're worth a read I reckon).

by Brett Parker (iDunno@sommitrealweird.co.uk) at November 23, 2011 12:45 AM

November 22, 2011

Steve Engledow (stilvoid)

Markdown

I've just finished converting this site and blog over to using markdown for its content. I'd been using ReST for work and nearly went with that but decided I slightly prefer the syntax used by markdown.

I really hope this kind of thing catches on; HTML is so ugly and not particularly suitable for writing content. Writing a blog in markdown just feels a lot more natural - like I can just get on with the writing and not have to think about how it will look on a web page.

If only code could be like that! I've had a number of moments of fancy when I've thought it would be great to have a programming language that looks like english. I've tried out a few ideas but never really come up with anything that would keep me totally happy. The best example I've seen of this kind of "literate" programming language so far is Inform 7, which I've dabled with a little.

I still have some ideas and might consider breaking a few of them out again.

I think I'm unecessarily obsessed with dreaming up toy languages. (See obfuna)

by steve@offend.me.uk (Steve Engledow) at November 22, 2011 01:28 AM

November 14, 2011

MJ Ray

Growing Your Co-operative, Bristol

Photo of Eli Sarre

Eli Sarre from Essential Trading speaking at C-SW Annual Conference

Last Friday (11 November 2011), I was at the Cooperatives-SW annual conference at the Cube Cinema in Bristol, titled “Growing Your Co-operative” and sponsored by the Co-operative Membership South and West. It was another sold-out event, featuring headline talks from Co-op Party member and Labour MP Kerry McCarthy, Eli Sarre of Essential Trading worker co-op (pictured), Carole Theyer of Sparks Inc and Jim Pettipher from Co-operative Futures.

There were also some great workshops – I went to a finance workshop led by Ian Rothwell from Co-operative and Community Finance and a regulations one with Paul Martin of Kabin (details may appear on their event page) – and a brilliant lunch from Runcible Spoon (and those of you who know me will know I have been livid with some co-op event lunches!) with some time to chat and network, although I also went to a fringe meeting about the RISE problems.

The event concluded with the formal AGM of Co-operatives SW (electing a new chairperson and approving transfer to a new co-op corporation) as well as a bit more chat afterwards. I felt it was a great event and well worth my time being there. I’m glad that some people from outside the co-op movement, from community businesses like the Strawberry Line Cafe and a few people considering joining or forming co-ops, were there and I hope it was good for them too.

by mjr at November 14, 2011 03:44 PM

November 13, 2011

Andrew Savory

Samsung Bada 2.0 Developer Day

At the start of November, Samsung held a Bada Developer Day to herald the launch of Bada 2.0. This followed on from the 2010 Samsung Bada developer day they held (I took some pictures during the 2010 event).

~

Bada was launched in December 2009. It’s part of Samsung’s plan to dominate the mobile industry and to beat Apple’s iOS and iPhone juggernaut. It’s also clever sleight of hand: Samsung’s target is to gain a significant percentage of the smartphone market in 2010, so by releasing Bada as a ‘smartphone’ OS on featurephone devices, they can at a stroke redefine a market segment and meet their internal targets. Or, as Samsung put it:

The vision of bada is “Smartphone for Everyone”. bada’s main goal is not to compete with other existing smartphone platforms. Instead, bada will turn Samsung’s conventional customers into smartphone users by providing cost-effective smartphones.

As The Register said in early 2010 when the first Samsung Wave device was announced:

If Bada had come from anyone except Samsung then it probably wouldn’t be worth pursuing, but Samsung shifts an awful lot of handsets and if the company decides to back Bada properly then it’s going to be an important platform.

Now in late 2011 we can see the steady advances that Samsung has made with their multi-year Bada platform investment, and it does indeed appear that the company is backing Bada properly. Some of the highlights (see the timeline embedded below for the full details): in June 2010 the Wave handset went on sale in the UK; in July Samsung published a developer book; in August the 1.0 Bada SDK was released; in October 2010 the Wave II handset was announced; in August 2011 Bada 2.0 was announced; and later that month the Wave 3 handset was announced along with the Wave Y and Wave M lower-spec devices.

It’s a fairly consistent attempt to carve out a niche for Samsung with their own phone operating system. At first glance at least, Samsung are focussing on many of the things that are critical to platform success: a steady flow of devices, an SDK, comprehensive documentation, a potentially compelling proposition for the consumer, monetisation routes for developers, continued outreach, and an evolving platform.

~

Compared to last year’s event it seemed like there were far fewer attendees this year: maybe less than half (150 or so as opposed to 400 or so). The day was also half as long, with maybe a quarter as much technical content.

Last year’s London developer day agenda began with the usual marketing and positioning presentations, and then moved on to more than four hours of technical content. At times it was really heavy going, but there’s no doubt that leaving the event most people will have had a solid understanding of what Bada was about.

This year’s event had much shorter marketing presentations, followed by an overview of the changes in Bada 2.0, a rather long coffee break for networking (which only works if there’s enough people to network with), some partner presentations, and a final closing talk by David Rowan. David’s the editor of Wired UK, and his talk on the future of technology was amusing, entertaining and insightful. It was interesting of Samsung to add this to the agenda, and is a subtle bit of positioning of Bada.

I did leave this year’s event feeling like there was more I needed to know about Bada 2.0, and many unanswered questions. What about upgrades of older devices to the latest Bada release? Is it possible to publish apps that support Bada 1 and Bada 2? What is the benefit of writing apps for Bada rather than Samsung’s other mobile platforms, Windows Phone 7 and Android?

The last question is particularly important given Samsung’s own analysis, from their marketing presentation, that suggests Bada and Windows Phone will have 17% of the market each in 2012, with Android at 66%:

samsung uk market projection

If those numbers are correct, wouldn’t it be better to develop for Android’s larger market share?

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

samsung hub: smart services

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

samsung hub: entertainment

You’ll note in the pie chart that there is absolutely no mention of iOS. There’s a marketing tactic which involves never mentioning the competition by name, but if you take it too far you end up with graphs like this that are blatantly wrong. Horace Dediu at asymco has assiduously been keeping track of smartphone shipments including Bada (for example hereherehere,here), and fortunately he’s done the hard work of putting together an accurate smartphone platform share chart for Q2 2011, which might help us imagine the situation in 2012. According to Dediu, Android is currently closer to 48%, Bada at 4%, with iOS at 19%.

If Samsung want Bada to succeed, they need to be a bit more honest about the market reality, and have suitable explanations for why developing for Bada makes sense. Perhaps the statistics are the best answer, as they show a real revenue opportunity for app developers:

bada in numbers

In summary, Samsung continue to make progress with Bada and to promote it strongly. But whether it is a long-term success or not will depend as much on the devices and the developer experience as on the strength of Samsung’s engagement with the platform.

This is part one of a three part series of blog posts on Samsung Bada. Coming up: a review of the Wave 3, and a review of the SDK and developer experience.

by Andrew at November 13, 2011 04:08 PM

November 09, 2011

Steve Engledow (stilvoid)

Violining a contemptible fellow

I was going to write about a very strange and excellent dream I had the other day. I'd even written some notes down so that I'd remember it but I managed to delete those notes during some git fiddling.

So I'll write about that instead :)

The back story

I've been working on a photo gallery application to use for my photos as I'd become dissatisfied with everything else out there. Here's an example of where I've got with it so far.

The basic features I wanted were:

I've implemented all of those features but the UI needs work. For example, there's currently no good method of adding/editing meta data and I need to work out how to do multiple file uploads, I think HTML5 has features I want.

The git fiddling

During the development of the gallery, I've obviously tested it out with quite a number of different images and, at some point, decided to check some of those in to the repository. A while later (this was obvious in hindsight - as most stupid decisions are) I realised that was a bad idea and subsequently removed them from my working tree.

As any git user will know though, the history of those files stays around which means that your .git folder stays very big. After having checked out my repository on another machine and realising why it was taking so long to download, I decided I'd better do something about it.

Enter git filter-branch!

This is a feature of git that I wish I'd known about ages ago. Ok, it's not something that anyone should be using every day (not even every month) but if you find yourself in a situation like mine - the sole user of a repository, misguided check in of a large file in the past - it's a very handy tool to know about.

Here's the man page.

The basic idea is that you ask git to rebuild the current branch by working through every commit from the first to the most recent, run any commands you like and then re-commit that commit. Eventually, you end up with a branch that's made up of entirely new commits that are based on the original commits you made.

For my need, the git command I needed was:

git filter-branch --prune-empty --index-filter "git rm -rf --cached --ignore-unmatch gallery" HEAD

Translated, this means: Rebuild the current branch from the ground up, one commit at a time. Before re-commiting each commit, run "git rm -rf --cached --ignore-unmatch gallery". This means I'm asking git to remove the gallery folder at each commit. --prune-empty means that if, after removing the gallery folder, the resulting commit would consist of nothing else, skip that commit.

After that was done (it took a while), I was left with a nice clean history that contained no mention of the gallery folder.

Now, because git isn't reckless, the gallery files were still kicking around and, if sufficiently motivated, I could bring them back. Even the old commits still hang around in the .git folder just in case. To properly clean up, I git cloned the repository folder. Success! The new folder was smaller by around 90% :) I deleted the original folder and did a forced push to my remote. It's necessary to force push when you change history - something every time-travelling Jedi will know well.

Then I realised that any untracked files were lost forever! That's why I'm not writing about the dream I had that I am still convinced was extremely interesting and revealing.

Unlike this rather rambling article about git. I'm rather tired. Just pretend you read something great and feel a lovely warm glow inside. ALL GLORY TO THE HYPNOTOAD!

by steve@offend.me.uk (Steve Engledow) at November 09, 2011 09:51 PM

November 08, 2011

Jonathan McDowell

The cost of progress

You should probably ignore this post. I'm just venting. I'll be better after a nice cup of tea.

Things that are causing me to fume about the fact Gnome Shell just hit Debian/Testing:

I update my testing boxes (work + home laptops) almost every day. It rarely breaks, and certainly when it does I accept that's what I get for doing rolling upgrades. I can't remember the last time I did an upgrade that actually made me angry.

Also I suspect this thing is going to have a complete fit on my binary nVidia/hacked up DisplayLink configuration at work (the DisplayLink side refuses to do 3D for starters). Perhaps better not to upgrade there until I have a sufficient block of free time.

Maybe it's time to go back to evilwm. I only stopped because I wanted a dock for wifi/bluetooth etc applets on my laptop that didn't get hidden when I fullscreened things. Implementing _NET_WM_STRUT might make that doable...

(I'm sure some of this is just dealing with the change but it's a bit bloody difficult to deal with a complete change in user interface that hasn't even managed to carry across settings from the old one.)

November 08, 2011 05:53 AM

November 07, 2011

Andrew Savory

Installing Windows on a Macbook Pro without a Superdrive

So you want to install Windows on your Macbook Pro? It’s easy, as long as you haven’t replaced your internal SuperDrive with an SSD upgrade.

The Apple Boot Camp Assistant doesn’t let you create a bootable USB if you’re on certain hardware. This seems to be because quite a lot of Apple hardware doesn’t support booting from USB (for example, my mid-2010 unibody Macbook Pro).

Almost all the documentation you’ll find on installing Windows on a Mac is aimed at those who can burn and boot from a DVD, which obviously doesn’t work if you have no DVD. There’s also lots of documentation about workarounds using rEFIt and USB keys or virtual machine software, but few clear descriptions.

After a weekend of fighting, I’ve found a way that works for me. My setup: I have an internal SSD running Lion, and an internal HD running Snow Leopard. I have a copy of Windows 7 as an ISO (disk image). Here’s what I did.

In Lion, I fired up Boot Camp Assistant and used it to shrink my Snow Leopard partition and add a Boot Camp partition. I also let the Boot Camp Assistant download the latest Windows support software from Apple.

When you start Boot Camp Assistant, it will warn you about not having an optical drive. You can ignore this warning:

1 boot_camp_warning

After clicking Continue, you’ll be able to select tasks for installing Windows. If your Mac doesn’t support booting from USB and does not have an optical drive, the option to create a Windows 7 install disk is greyed out. Select the other two options and click Continue:2 boot_camp_grey

BootCamp will download the drivers (almost 700mb, it’ll take a while), and then move on to the drive partitioning. I selected my Macintosh HD as the one to partition, primarily because it’s way bigger than the SSD but also because I don’t know how well rEFIt and Windows will work with Lion’s whole disk encryption. Because I want Snow Leopard around, I chose to create a new second partition for Windows (shrinking the Snow Leopard one in the process) rather than taking over the whole disk:3 boot_camp_installSelect the amount of space you want to give to Windows, and then click Continue:4 boot_camp_partitioning

The process of repartitioning can take some time, as Mac OS X has to shuffle around the contents of your Mac OS partition in order to make space for Windows. This was particularly bad in my case as I deleted several GB of data prior to starting the whole procedure.

5 boot_camp_partitioning_do

When you get to the end, you may get an error about not being able to install – just ignore that.

I rebooted into Snow Leopard and installed rEFIt and VMWare Fusion trial edition. The plan is to use VMWare to boot the Windows ISO and install the initial Windows setup files on to the Boot Camp partition, and then to reboot into that disk and let Windows carry on without VMWare.

To do this, you first need to configure VMWare to use the Boot Camp partition ‘raw’, as a real disk rather than a virtual disk. To do this, open up a terminal and type:

mkdir Virtual\ Machines
/Applications/VMware\ Fusion.app/Contents/Library/vmware-rawdiskCreator print /dev/disk0

The output will be something like:

Nr      Start       Size Type Id Sytem
-- ---------- ---------- ---- -- ------------------------
 1          1     409639 BIOS EE Unknown
 2     409640  583984384 BIOS AF HFS+
 3  584656896  392116224 BIOS  B Win95 FAT32

Identify the correct drive number on the left – as a guideline, it’s probably listed as FAT32 or NTFS formatted under ‘Sytem’ (sic).

Next, create the raw disk description:

/Applications/VMware\ Fusion.app/Contents/Library/vmware-rawdiskCreator create /dev/disk0 3 windows7 ide

This will give you two raw disk description files:

vmware_files

Next, start VMWare Fusion and select “New…” from the File menu. Select “Continue without disc”:

vmware_1On the installation media page, drag and drop the windows7.vmdk file previously created onto the “Use an existing virtual disk” drop-down (where it says “None”). You can’t just select the disk by clicking the radio button and then the drop-down, because the disk files are in a different format and will show up greyed-out.vmware_2You will be prompted to convert the virtual disk to a newer format. Select “Don’t Convert”. If you select “Convert”, you will get an error about insufficient permissions. It works just fine without converting.vmware_2.5If all went well, you should see your vmdk listed and be able to click Continue:vmware_3Accept the defaults for the operating system and version, and click Continue:vmware_4On the last page, click “Customize Settings”:vmware_5Accept the default save filename and click “Save”:vmware_6You’ll then be taken to the Customize Settings screen, where you want to configure the ISO to boot from. Click on the CD/DVD (IDE) option:vmware_7And then select the location of your Windows 7 ISO:vmware_8

Go through preliminary install up to the point that Windows does the first reboot. At this point, power down the VM, and reboot the computer.

You should see the rEFIt boot prompt:

20111107_161322

Select the windows partition, and your computer should boot into Windows and setup should continue. When setup is done, copy over the Windows support software that BootCamp Assistant downloaded, and install it.

At  this point, you should have a working Windows install. Congratulations!

by Andrew at November 07, 2011 06:40 PM

CentOS 5.7 Guest with VirtualBox

If you’re trying to install the VirtualBox guest additions on a fresh CentOS install, you may find that the kernel drivers compilation fails. To work around it, try this as root:

yum install gcc kernel kernel-devel -y

That worked for me.

by Andrew at November 07, 2011 03:55 PM

November 03, 2011

Andrew Savory

Save UEA Music

UEA home button

As an alumnus of the University of East Anglia (in Computing), I was shocked to hear that UEA are closing the School of Music.

As an Honorary Research Fellow of the School of Music, who saw first-hand some of the brilliant teaching and research that takes place there, I am furious.

MUS has long been a source of inspiration, passion, innovation and excellence, and I am amazed that UEA does not recognise this. UEA putting a dubiously-evaluated financial bottom line ahead of excellence in teaching is extremely disturbing.

The UEA press release about the School of Music is amusing and fact-free. In one particularly entertaining bit:

the University will draw on best practice from other universities’ experience of handling departmental closures of this kind

I would have thought they could also draw upon their experiences of closing the School of Physics, which they did some years back. How many departments will be left at UEA in a few years’ time? How many other UEA departments have been kept on life support for decades, and are still around today?

The report of the Music Review Panel is available.

Perhaps some of the money UEA pays on ridiculous rebranding and management consultancy could be funnelled into a proper recruitment effort, to bring the School of Music up to the minimum staffing recommended in the external review report from 2002.

There’s a Save UEA Music website. Please consider signing the petition. There’s also a twitter account and Facebook page.

by Andrew at November 03, 2011 12:14 PM

October 27, 2011

Andrew Savory

PostgreSQL on Lion with Homebrew

200px Postgresql elephantThere are several ways you can get PostgreSQL up and running on Mac OS X Lion (see for example OS X Lion #2: PostgreSQL as default database, PostgreSQL 8.4 on Mac OS X 10.7 (Lion), How to install PostgreSQL on OS X Lion). However, if you’re already a Homebrew user, perhaps the easiest and best-integrated route is to install the postgresql recipe for homebrew:

brew install postgresql

Unfortunately, this doesn’t give you world peace, a cure for cancer or a working postgresql install: there’s also some post-install configuration required. For more information tailored to your install, type:

brew info postgresql

The extra steps boil down to running initdb and then pg_ctl start.

(Sound familiar? It should do – I did the same with MySQL yesterday.)

by Andrew at October 27, 2011 04:20 PM

MJ Ray

RISE Faces Demutualisation Threat at EGM

Photo of UWE Bristol

UWE Frenchay, Bristol: Venue of the RISE EGM

The RISE co-op is the sole shareholder in the Social Enterprise Mark CIC and its members have been called to an Extraordinary General Meeting during the lunch break of next Tuesday’s “Knowing and Growing” conference at UWE Bristol. The RISE board has proposed Four Special Resolutions that would dissolve the co-op and transfer all assets as windfalls to the SEM CIC and a trust, ignoring RISE Ltd’s Memorandum of Association. software.coop is calling on other RISE members to attend the EGM and oppose this demutualisation attempt. Update: dissolved but not demutualised (see below). Update 2: new vote called (see below).

RISE is constituted as a common ownership co-op and its Memorandum of Association contains a clause that directs the assets to be transferred to another common ownership social enterprise organisation if the co-operative is dissolved. However, unlike the CIC asset lock, there is no independent regulator enforcing it and, unlike in many co-ops, there has been no requirement for new members to pledge to obey the RISE common ownership clause at an individual level and there has been no member education about common ownership in the last three years.

This demutualisation is the wrong solution for RISE because:

software.coop will vote against the demutualisation, in favour of social enterprise, and calls on other RISE members to show solidarity with the co-operative and common ownership social enterprise movements.

Update 2 November: rise has announced its dissolution but they’ve got to “give further consideration” to where the assets go because the demutualisation resolutions were defeated. I fear that they’ll still try some way to bail out the Social Enterprise Mark despite the rejection, but I hope they’ll do the right thing and give the assets to good common ownership social enterprise like the RISE Memorandum of Association requires.

Update 10 November: We got another “Dear Member” letter today, dated 7 Nov, saying “there are two key issues to be resolved” (which is rubbish because the Memorandum offers a default – I think the board just hates that clause) and that there will be a new postal vote that will run from 18 November to 5 December.

by mjr at October 27, 2011 11:58 AM

Steve Engledow (stilvoid)

Break In!

A while ago, I decided to learn how to use the canvas and that for my first project I was going to write a breakout clone. Pretty standard fare for a first-time project :)

After writing some routines to draw blocks on the screen some weeks ago, I finally got around to doing some real work on it this evening. Two or three hours later, I'd ended up with a mostly working, radial version of Breakout.

Screenshot

Click here to play it

There are still some obvious bugs (the collision detection is a bit shoddy) and it doesn't keep score or do anything special when you win but it's reasonably fun and I'm quite pleased with what I've achieved in just a couple of hours.

The code is released under the If-You-Steal-This-Without-Asking-Me-I'll-Bite-Your-Legs-Off licence ;)

by steve@offend.me.uk (Steve Engledow) at October 27, 2011 12:06 AM

October 26, 2011

Andrew Savory

MySQL on Lion with Homebrew

200px MySQL

This was non-obvious to me, so I’m documenting it here.

There are several ways you can get MySQL up and running on Mac OS X Lion (see for example Rob Allen’s Setting up PHP & MySQL on OS X 10.7 Lion, StackOverflow’s Getting MySQL work on OSX 10.7 Lion, or Installation of MySQL server on Mac OS X Lion). However, if you’re already a Homebrew user, perhaps the easiest and best-integrated route is to install the mysql recipe for homebrew:

brew install mysql

Unfortunately, this doesn’t give you instant fame, fortune or a working mysql install: there’s also some post-install configuration required, which I missed. For more information tailored to your install, type:

brew info mysql

The extra steps boil down to running mysql_install_db and then mysql.server start.

~

One thing that puzzles me about a lot of the mysql documentation (and in fairness other similar software) is the insistence of providing post-install configuration instructions like mysqladmin -u root password 'new-password'. This is such a bad idea, as it means your new password is stored in your console history. For fun, try grep password ~/.bash_history and boggle at the number of times your password is listed in plain text.

These command-line utilities are all perfectly able to prompt you for the password text; entering mysqladmin -u root password or mysqladmin -u root -p password will result in a password prompt, which prevents the password showing up in your history. It makes sense because you never know who will be looking over your shoulder as you scroll back through your command history.

~

One last thing: you might like to read Removing MySQL from OSX Lion if you’d previously installed it some other way. Some day Apple will provide an uninstaller, but until then…

by Andrew at October 26, 2011 01:31 PM

October 25, 2011

Elisabeth Fosbrooke-Brown

Autumn begins on the Gironde estuary

Last week I set off for rehearsal a little early because the sunset was beautiful and I wanted to drive through the rose and mauve air (it really does that on the estuary!). This week there was rain. it hasn't rained for ages, and the frogs have been waiting a long time to get out: there were hundreds of them, ecstatically leaping all over the little roads. Fortunately there wasn't much other traffic, so I could drive very slowly and swerve.


Last night we had thunderstorms, or one thunderstorm passing here three times. After the rain, the air is clear, the grass and small herbiage are green again, and wildflowers have blossomed. The sky is almost clear to the east; in the west lush multi-grey clouds are heaped like silk cushions against which the red, orange, and gold autumn trees glow so brightly they sound like a symphonic tone poem.

by sunflowerinrain (noreply@blogger.com) at October 25, 2011 11:02 AM

October 24, 2011

MJ Ray

Stand up for your freedom to install free software

It’s been busy at our co-op but I’m never too busy to support calls for the freedom to install debian (or any other Free and Open Source Software Operating System) so I’ve signed the FSF-led public statement on so-called “Secure Boot”.

“This could be a feature deserving of the name, as long as the user is able to authorize the programs she wants to use, so she can run free software written and modified by herself or people she trusts. However, we are concerned that Microsoft and hardware manufacturers will implement these boot restrictions in a way that will prevent users from booting anything other than Windows.”

So please, read the full thing and consider signing it yourself. If you want to watch for further news on this topic, Matthew Garrett’s Journal seems to be the bomb.

Right, well, it’s another busy week this week, so it might be the weekend before I find time to blog again, but posts will be a bit more frequent next week: watch this space!

by mjr at October 24, 2011 06:11 PM

October 22, 2011

Steve Engledow (stilvoid)

xmodmap Hints and Tips

Originally posted on Rolling Release. I'm reposting this here as I recently broke my finger and so made a few changes to my xmodmap settings to accomodate the ensuing one-handed typing. Once again, I had to search for how to use xmodmap and came upon my own post. I'm keeping it here for easier reference and in the hope the details will burn deeper into my mind. It was written for a tutorial column so excuse the tone.

About xmodmap

Xmodmap is used to control the mappings between the keys you press on the keyboard and the results you will experience on screen. Some common usage examples of xmodmap are:

To achieve things like the above, you’ll be mapping KeyCodes to KeySyms and KeySyms to Modifiers so it’s obviously important to understand exactly what xmodmap means by these terms (I certainly didn’t when I started out).

KeyCode

A KeyCode is a number generated by your keyboard when you press a certain key. For example, the space bar usually produces the KeyCode 128.

KeySym

A KeySym is simply a word used to name a type of key. This concept is very important because it means that applications don’t need to interpret the information output by your keyboard directly; they can refer to keys by name.

As mentioned above, most keyboards produce the code 128 when you press the spacebar but it would be possible to have a very non-standard keyboard that outputs the KeyCode 64 when the spacebar is pressed. You’d certainly want to ensure that code 64 is interpreted as a spacebar press without having to rewrite all the applications you use. To do this, we’d map the KeyCode 64 to the KeySym "space".

Modifier

A Modifier is a special kind of key that can be held at the same time as another key and modify its output. For example, when you press the A key on your keyboard, you see the letter ‘a’ appear on screen. If you hold shift and press A, you’ll see the letter ‘A’ – shift is a Modifier.

Let’s start with looking at modifiers to get the hang of Modifiers and KeySyms…

Modifiers

There are 8 modifiers:

Xmodmap provides three different operations for changing the way KeySyms are mapped to Modifiers: clear, add, and remove.

My favourite example – turning off caps lock:

$ xmodmap -e "clear Lock"

This command clears the Lock modifier meaning that no keys now produce a caps lock effect. Bliss!

To reassign the caps lock key to do something more useful:

$ xmodmap -e "add Shift = Caps_Lock"

This adds the KeySym "Caps_Lock" to the list of keys that produce the Shift modifier. In other words, we’ve turned caps lock into another shift key.

If you change your mind and want to stop the caps lock key behaving as a shift key:

$ xmodmap -e "remove Shift = Caps_Lock"

This is basically the opposite of the previous example.

Mapping KeyCodes to KeySyms

Now we’ve got the hang of changing the Modifiers, we’ll round off by looking at mapping the physical keys on your keyboard to produce the results you want.

First things first, you’ll need to know the keycode of the key you want to change. To do this, you can use xev.

$ xev

After running xev, press the key in question and you’ll see some output like this in your terminal:

    KeyPress event, serial 21, synthetic YES, window 0x800001,
    root 0x40, subw 0x0, time 1539131, (69,8), root:(683,402),
    state 0x0, keycode 63 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

The third line is the one we’re interested in. You’ll see the word keycode followed by the number you’re going to need next, in the example above it’s 63.

Now we’re going to map that key to give us some foreign characters.

$ xmodmap -e "keycode 63 = e E eacute Eacute"

The "keycode" command maps a KeyCode to a number of KeySyms. The order of the KeySyms is important as it represents how the KeySyms are derived.

  1. The key pressed alone
  2. With the Shift modifier
  3. The key pressed along with the Mode_switch key
  4. With Mode_switch AND Shift

Mode_switch is just another keysym and you can map it to a chosen key on your keyboard like this:

$ xmodmap -e "keycode 64 = Mode_switch"

My personal choice is to map Mode_switch to my AltGr key. To do this, you can use a special version of the keycode command. $ xmodmap -e "keycode Alt_R = Mode_switch" This asks xmodmap to lookup what keycode(s) are currently assigned to the KeySym Alt_R (right alt) and assign them to Mode_switch as well.

So with the above mappings, here’s what happens when I press the keys on my keyboard:

The key on it’s ownA lowercase ‘e’
With shiftAn uppercase ‘E’
With AltGrA lowercase e-acute (as used in French for example)
With AltGr and shiftAn uppercase E-acute

Saving Your Mappings

Once you’ve decided how you’d like everything set up, you obviously don’t want to have to type all those xmodmap lines in every time you start X. To save you from this, you can just put all your mapping into a file (I save mine at ~/.xmodmap) and then just tell xmodmap to load from it.

$ xmodmap ~/.xmodmap

Ideally, you’d add that line to your .xinitrc so it runs automatically when you start X.

The End

That just about wraps up this howto. I hope somebody finds it useful as I certainly found xmodmap confusing in my early days. Now I have my keyboard customised to do just what I want and I couldn’t live without it.

Useful Links

A few useful links about xmodmap.

by steve@offend.me.uk (Steve Engledow) at October 22, 2011 09:02 PM

October 21, 2011

Andrew Savory

Migrating to WordPress

Welcome to my new look blog. Oooh, shiny.

I’ve been trying to upgrade the software behind this blog on and off for quite a few years now. It was back in 2008 that I installed MovableType 4.12, and although MovableType has served me well I’ve been struggling to keep it maintained – for example, my custom templates were a bit broken, and the spam handling wasn’t nearly as effective as I wanted.

It’s taken a few days of beating up the server, but WordPress is finally installed. I’m still working out a few kinks, but for the most part everything is now in place. In case anyone else is looking to migrate, here’s the gory details on the incredibly painful process I had to go through.

The first thing I did was made sure my server was running the latest version of Ubuntu, 11.10. This turned out to be a slight mistake – and I lost some time to fixing a logging regression. Latest and greatest is not always best, especially when you’re on a virtual server.

I made sure my MovableType data was as good as it could be. I cleared out any draft articles that were hanging around, and I dealt with in excess of 1200 spam comments. The final tidied- up data includes almost 1400 blog posts and over 800 comments – accumulated over more than eight years of writing.

I opted to install WordPress from the Ubuntu wordpress package, as one of the reasons my MovableType install got so old was because it was a manual install from source packages.

A couple of tips:

The final process was then something like:

There were a few teething troubles – when I first put the new blog live, WordPress decided to screw up the URL scheme, for example. Some of the plugins are still distinctly unhappy. There’s still a few broken images on the earlier posts, as I was inconsistent in whether I used flickr, uploaded images to the blog, or just copied them onto the server. Some of the posts have technorati tags in the body rather than in the metadata. Some of the mobile blog posts are badly-formatted and show up CSS in previews. I’m slowly working through all those problem posts and fixing them.

Hopefully readers will find the new look easier on the eye, with better access to the content. Happily, all the old links should still work, too. I’m looking forward to blogging without the nagging sense that I’m dumping content into an old legacy system. And to playing around with more plugins. Shiny!

by Andrew at October 21, 2011 06:00 PM

rsyslogd on Oneiric Ubuntu 11.10

If you happen to have upgraded to Ubuntu 11.10 but are running an old kernel (for example, you’re working on a hosted virtual server), you may see the rsyslogd process running away with your CPU.

This seems to be a nasty regression in Ubuntu, and is documented in rsyslogd stuck at eating 100% (or more) CPU after upgrading to Ubuntu Natty Narwhal, and is also in Launchpad bug 523610 (including a comment just 8 hours prior to mine).

A workaround that seems to provide a fix (but is by no means guaranteed sane or healthy) is to downgrade the package:

The rsyslog should be restarted automatically during the downgrade, and you should then see your CPU return to normal.

by Andrew at October 21, 2011 03:30 PM

October 18, 2011

Andrew Savory

Open letter to ExCel London

Following my frustration at the DroidCon venue having no cycle facilities (tweet tweet), I was pleased to see that ExCel London (host of Nokia World 2011) do in theory have secure bike parking. It took a while to find this information, though. It seems to me that if enough conference attendees start bugging venues about the availability of cycling facilities, the situation will soon improve.

Note that the Nokia World event website specifically does not mention cycling as an option – something to take into account when you read the greenwashing on the Environment section of Nokia’s website.

Here’s a slightly-amended version of an email I just sent to ExCel London on the subject:

Dear ExCel London,

I am delighted to see that under the ‘Green Credentials‘ section of your website you have a Transport page with information on cycling:

Cycling to ExCeL London?

We welcome those who choose to cycle to ExCeL and provide secure, CCTV monitored cycle parking racks both in our west entrance taxi drop off area and outside the main east entrance (subject to the area reopening in May 2010).

To plan an approved cycling route to the venue from your start point, please use this link for the Transport for London Cycle Journey Planner.

However, it would be even better if you added a ‘By Bike’ category to your general travel page, as this information is currently not immediately obvious to those wishing to travel to ExCel by bike.

You might also want to update the information on your website, as it currently refers to works happening to the main east entrance in May 2010.

Thanks,

Andrew.

by Andrew at October 18, 2011 01:46 PM

October 17, 2011

Andrew Savory

TV Licensing

The TV Licensing staff are on strike due to a pay dispute. This seems as good a time as any to talk about the TV license and the notorious enforcement company, TV Licensing.

I am a big fan of the BBC. Although it feels like they have struggled to find the right balance in programming over the last few years, I still think the BBC is incredibly good value for money, and that a taxpayer-funded media service is hugely valuable to society.

Some of you may recall BBC promos like or “bbc news on your mobile“, “we believe in listening“, “new music“, and more overt TV license adverts like ”bbc for small people“, ”because of the unique way we are funded“, “what has the bbc ever given us“, “you make it what it is“, “vic and bob“, or “the complaints department“. I’d be surprised if you can watch all of those without at least one giving you goosebumps, without one of them making you smile. The BBC truly delivers world-class productions across a range of media. I think it’s terrific value for money and so I gladly pay the £145.50 annual fee.

So it’s bitterly disappointing that the BBC’s glorious reputation and legacy is tainted here in the UK by the thuggish and threatening behaviour of the TV license collection agency, “TV Licensing“. Here’s one example, my own experience with them.

~

TV Licensing know which properties contain TVs based on two sets of data: firstly, every retailer that sells TVs has to capture the address it will be used at; and secondly, an assumption that every address in the UK has a TV unless proven otherwise. They also claim to have “detector vans” that can tell when you’re watching live broadcast television.

~

I don’t watch live TV when I’m in Norwich (I plug in the laptop to watch films or to catch up on stuff via iPlayer), but I do occasionally watch live TV when I’m in London. So I switched my TV licence from the Norwich address to my London address, and I notified TV Licensing online that I don’t need a TV licence at the Norwich address, specifying that the TV there was used for watching non-live programmes.

This notification they subsequently acknowledged. Their acknowledgement, addressed to me and sent in March, stated:

Our records have been updated and you won’t receive any more letters from us for almost two years.

TV Licensing threat

Unfortunately, within just three months, a threatening letter arrived on my doorstep, addressed to “The Present Occupier”, using language such as “it is illegal“, “you may later be prosecuted“, “taken to court“, “found guilty“, “maximum fine of £1000“. Remember – this is for an address where I have declared I don’t need a licence, and received an acknowledgement and a promise of two years of peace and quiet just a few months previously.

This was followed by a subsequent funereal letter telling me my details are being passed to enforcement officers. The message is deliberately threatening: the very name “enforcement officer” is designed to intimidate and lend legitimacy; again, language like “you are breaking the law“, “taken to court“, “fined up to £1000“, “visiting your area soon“, “may call at your home any time during the day or evening or at the weekend“, “enforcement visit“. And this is for an address that has been correctly and properly identified as not needing a licence via TV Licensing’s own website.

TV Licensing threat

A month after that – the third month in a row I received a threatening letter, and barely 6 months after declaring the address does not need a licence, I get an official warning. The “Enforcement Officers are authorised to visit your address“, the letter tells me. Watching TV is “against the law“, “they may interview you under caution, in line with the Police and Criminal Evidence Act“, “the first step in a legal process“. Remember, it is not illegal to own a television, it is not illegal to use a television to watch content other than broadcast television, and there is no legal requirement to buy a TV licence in these circumstances.

And finally, within a few weeks of the Official Warning, I received yet another letter, this time addressed to “Legal Occupier” rather than “The Present Occupier”, and with a comparatively friendlier tone (“we want to help you get licensed so you can enjoy TV legally”).

Despite doing everything by the book by ensuring the property where I watch live TV is covered by a licence, and providing TV Licensing with notification that a licence is not needed for the other property, I have so far received four warning letters – three of which were incredibly threatening.

Sadly, this is not an isolated case. There’s a TV Licensing blog, a TV Licensing website, another TV Licensing website, forum postings, newspaper articles, blog posts, reports of heavy-handed behaviour, and hundreds of thousands of search results on the issue.

I never thought I’d say it, but Noel Edmonds is completely right.

As media consumption habits go through a period of dramatic change, it’s more important than ever that the BBC explains the value of the TV licence and keeps the licence-payers on side. But the behaviour of TV Licensing is so appalling that I fear future generations will learn to hate the BBC and the intimidation that comes from owning a television.

by Andrew at October 17, 2011 01:09 PM

October 15, 2011

Wayne Stallwood (DrJeep)

Lenovo Thinkpad Colour Profiles

Installing a Color Profile for a Lenovo Thinkpad W510 in Ubuntu Linux Download the monitor drivers exe file from Lenovo's Support Site Ok won't unpack as an exe archive or cabextract...bah ok install wine and unpack it in that. wine 79oi26ww.exe Open the self extracting installer in wine and capture the files it writes out to Drivers/Win/Monitors within the .wine directory. Bah first problem........get-edid is thowing a fit so I don't know what panel I have Let's see what options are there for my resolution grep -i 1920x1080 TPLCD.INF Ok only 2 options LEN40B2 and LEN40B3 now I know I have the 95% Gamut display and one is listed in the ini as %TPWFHD% = TPLCDWFHDG95.Install, Monitor\LEN40B2 ; 15.6 Wide FHD 16:9 LED B/L 1920x1080 Gamut95 Right so that's me then :) Sooo lets look around in the same ini file and see what colour profile that really maps to shall we ? grep -A 2 \\[TPLCDWFHDG95.Install] TPLCD.INF [TPLCDWFHDG95.Install] ; Wide FHD 16:9 1920x1080 Gamut95 DelReg=DEL_CURRENT_REG AddReg=HD1920, DPMS, ICMG95 Almost there, so it maps to the ICMG95 profile which in turn grep -A 1 \\[ICMG95] TPLCD.INF [ICMG95] HKR,,ICMProfile,0, TPLCD95.icm So there we go...that's the file I need to load into gnome-color-manager, Who said Linux wasn't easy huh ?(update, this is now broken in Ubuntu 11.10 as you cannot load a Colour profile for an unknown display so now I really do need to fix edid)

October 15, 2011 08:04 PM

David Reynolds

Git Workflow

I’ve been using this for a while and had it recorded on a private on a private wiki. I was just tidying up my hosting account and thought I’d get rid of the wiki and store any useful info from it on my blog

Clone full subversion history into git repository (warning, may take a long time depending on how many commits you have in your Subversion repository).

1
$ git-svn clone -s http://example.com/my_subversion_repo local_dir

-s signifies trunk/ branches/ tags/ exist in the svn repo (standard repository setup)

Create branch for local changes and check it out

1
$ git checkout -b XXXX-description # where XXXX is a ticket number

Make my changes in the branch… Make my commits in the branch…

Change back to master branch

1
$ git checkout master

Merge branch as one commit to master

1
$ git merge --squash XXXX-description

Commit changes to master branch:

1
$ git commit -a

Push changes back to svn:

1
$ git svn dcommit

Resync local_changes to master:

1
2
$ git checkout XXXX-description
$ git rebase master

October 15, 2011 02:12 PM

October 09, 2011

Andrew Savory

At what price to community?

Dave has written a detailed post on the types of community that Tizen hopes to target. It’s great, and I recommend you read it through. For more background, you should also read my blog post on what’s really going on with MeeGo and Tizen.

There are many details still to come out about Tizen over the coming weeks and months, but I think one of the most interesting and valuable lessons we can learn from Tizen will be the effect that “platform resets” can have on a developer community.

A platform reset is what happens when a significant force in a given community decides to make a fundamental shift in project direction. It’s especially prevalent in projects that have few large corporate sponsors, and projects that are being sustained around otherwise-closed ecosystems.

A platform reset is what happened for example when Maemo and Moblin became MeeGo: a lot of the underlying direct and indirect engineering effort around Maemo was ostensibly thrown out, to be replaced by Moblin’s package system and by a lot of new integration infrastructure and tools that were developed or repurposed specifically for MeeGo. To a lesser degree, it’s also what happened when Ubuntu switched to the Unity desktop.

~

There are a number of effects that platform resets can have on a project. Sometimes, the clean slate enables developers to get involved, take more ownership, and leads to a huge leap forward in community. Sometimes it spurs innovation, and gives people a chance to re-imagine how things should work. Sometimes it is perceived as a negative, with developers wondering about the future of a project and their contributions to it. This often results in fragmented or duplicated communities – like Maemo and MeeGo.

A platform is necessarily a complex beast, and none more so than an open source mobile platform, and there are many points where people will want to try and get involved (as Dave illustrates). It’s critical to the long-term survival of the platform that these complex communities of developers are integrated and nurtured. They need to be empowered to contribute, they need to share the platform vision. They need to see the results of their efforts. The many well-documented community best practices such as open governance and meritocracy help to ensure this.

What, then, was the effect of the Tizen announcement on the various existing mobile platform communities? How well is the Tizen community forming? What was the effect on the MeeGo and Maemo communities?

~

There are many ways that a community can be assessed. The MeeGo Metrics wiki page provides links to many reports on MeeGo community. Unfortunately, not all of the source data is publicly available for all projects, so a simpler approach is needed.

One of the simplest ways is to monitor the traffic on public mailing lists. An excellent example of this are the Apache Software Foundation Mailing List statistics, which gives an at-a-glance idea of the activity across a multitude of projects. Fortunately, MeeGo, Maemo, and Tizen all have public mailing list archives, which we can use to compare activity.

There are lots of obvious caveats that need applying, for example some projects manage themselves through alternate channels such as IRC, some projects use web-based forums and wikis in preference to mailing lists. But in general, mailing list activity can be considered one reasonable indication of community health, and is often one of the few sources of raw data that is made public.

~

Here, then, are the rough and ready results of some preliminary analysis on the Tizen, MeeGo, and Maemo mailing lists. For each umbrella project, I analysed traffic across all available public list archives. Click through for a full-sized image of each, and see Mobile Linux Stats for the breakdown between individual lists and aggregates per project.

Traffic on the Tizen lists:Mail traffic on the Tizen mailing listsTraffic on the MeeGo lists:Mail traffic on the MeeGo mailing listsTraffic on the Maemo lists:Mail traffic on the Maemo mailing lists

It’s too early to tell what the Tizen announcement has done to these communities long-term, so I will be updating these charts on a regular basis over the coming months. Some interesting observations though:

I’d welcome suggestions for improvements or for other platforms and projects to monitor as part of this ongoing activity, or other analysis that could be performed on the data.

~

It’s particularly important to understand the effects of the Tizen ‘reset’ as we are about to enter into another era of platform fragmentation. After the extensive consolidation we saw in mobile initiatives in 2006-2008, we’ve now seen the death of ‘mobile linux’, and the fragmentation of Android with a proliferation of Android mobile platforms.

It’s possible for any one of the six vendor-driven Android-based mobile platforms predicted for 2012 to declare itself a “fork” of Google’s Android. Any of these platforms can implement the type of open governance and meritocracy that Google Android is missing. Several of these vendors have the skills, the understanding and the manpower to make it happen. And if it does, we will start to see significant pressure on the Android community – in fact, exactly the pressure that’s being exerted by Intel and Samsung’s fork of MeeGo through the creation of Tizen. Maemo, MeeGo and Tizen give us some perfect case studies for understanding the pressures and likely outcomes of Android divergence in the future.

by Andrew at October 09, 2011 08:33 PM

October 08, 2011

David Reynolds

Awesome Bohemian Rhapsody Cover

Below is a video of the amazing Mike Mills from Toehider doing an acoustic cover of Bohemian Rhapsody:

October 08, 2011 03:48 PM

October 06, 2011

Andrew Savory

iPhone 5

Aww hell, I don’t really like writing about Apple these days since it’s often a cheap route to page views, but here’s a few things.

Firstly, Horace Dediu is obviously right in his article “Why is there no iPhone 5?“. Demand, requirements. Secondly, Apple apologist Gruber is sort-of right in his post “By Any Other Name“, that we should be happy with the iPhone 4s. It’s a fine phone.

But none of this talks about the elephant in the room.

Apple are a very market-savvy company. With the jump from iPhone to iPhone 3G they showed they understood the importance of perceived version numbers, even if the ’3G’ referred to the network connection rather than the release number. Then the jump from the 3GS to iPhone 4, a clean version number increment. What does 4S even mean? It’s odd, and feels hasty.

The pacing of the keynote was off. The polish of the keynote was off. It felt like a rushed hack, as Apple pulled back late in the day from an iPhone 5 launch in favour of a less dramatic 4s launch. Too much filler. Some of it might be first night nerves for Tim, but that doesn’t account for the weird expressions on the rest of the team’s faces. What’s going on?

There’s a whole “well, duh!” expectation about new form factors, given Apple’s well-publicised tooling up a bunch of component manufacturers to build curvy glass and other such phantasmagoric stuff. Where is the outcome of this spend?

Maybe lawsuits with Samsung screwed up their marketing plans (unlikely). Maybe earthquakes and tsunamis messed with supply lines. Maybe as a result Apple hadn’t been able to pull together the final package in time.

Most likely: Apple are deliberately keeping stuff in reserve. Not because they feel they have an unassailable position, but because pretty soon they know they will need some way cool stuff to distract from a huge loss elsewhere, and to make a clean break with the past. And for that reason alone, I think Tim did the right thing. As the necessary calm before the storm, the pause, the intake of breath, this step makes a lot of sense.

On the other hand, less dramatically, it could just be entirely business as usual with phone and OS continuing at a metronomic pace. Just another small step. In which case, the only wrinkle in the pattern is why there wasn’t an “iPhone 2″ that featured minor enhancements to the original iPhone.

iPhone and iOS versions(Data from wikipedia’s entries on iPhone and iOS version history.)

Either way, it does feel like there’s a real opportunity for manufacturers to take advantage of what little “anti-apple” sentiment there is, to differentiate themselves. The 4S is a fantastic device, with a powerful ecosystem, but there’s a great marketing opportunity for alternatives right now.

Final thought: shouldn’t Apple drop the version numbers entirely? I’ve had so many MacBook Pros, all with the same name, all with different specs. Differentiating between iterations is most unseemly, most un-Apple.

by Andrew at October 06, 2011 12:35 AM

October 05, 2011

Andrew Savory

Droidcon London 2011

I’m off to #droidconuk tomorrow and Friday, for a couple of days of Android immersion. Should be a useful benchmark for the adoption rate of Android by developers … looking forward to some interesting discussions. If you’re there, come say hi!

Here’s an official logo, that I fully expect to break within a week or so, given the URL of the image (http://skillsmatter.com/custom/images/120×120.gif).

Dear SkillsMatter: you rock, but you should consider using a sensible image naming convention, e.g. http://skillsmatter.com/conferences/droidconuk/images/120×120.gif.

by Andrew at October 05, 2011 11:20 PM

Over the Air 2010, 2011

It seems I didn’t blog about Over the Air back in 2010, beyond referencing the phone I won for my hack. That’s pretty poor. I don’t appear to have blogged much about any of the previous events either, apart from Hack Day 2007. Decidedly lax of me. So let’s do a ‘quick’ catch-up.

For those that aren’t aware, these events are typically 24-36 hours long, including an overnight portion, and the aim of them is to learn new stuff, see cool things, and during the event to create something wonderful – typically a proof-of-concept hack of some kind. There are often prizes for different categories of hack, as well as the motivation that comes from working amongst your peers.

These events are not dissimilar to the hackathons found in many open source communities (for example the Cocoon GetTogether hackathons in 2004, 2005), but the hack days tend to be more far-ranging and technology-agnostic.

The 2007 event was an eye-opener for me, though as I wrote at the time I bailed out before the second day. Aside from the network troubles, I seem to recall one of the major frustrations for me was getting a ‘quick’ development environment up and running on my laptop in order to do a timely hack.

After 2007′s hackday the event morphed into “Over The Air“, and the 2008 event I sadly missed. It was back for 2009, and in 2010 I was determined to enter a hack of my own.

As a result of some conversations (I seem to recall a chat with Thibaut resulted in the Plaxo bit), I created a hashblue/Plaxo mashup, which took the o2 #blue APIs and plaxo APIs to automagically match text messages to people in your address book. I used PHP and Postgres for this, and was later able to pretty much design-out the RDBMS bit since most of the data was in Plaxo. I was then only using the DB to store details of avatars, to make the page look fancier. It worked pretty well, until the #blue API was changed earlier this year (such is the fate of apps using beta APIs). Even better, I won an Android phone as a result, which was awesome. What’s left of the hack is still online at OTA 2010 #blue hack, and I may resurrect it if I ever find a use for it.

~

This year’s idea was to be a mashup of competition categories as well as APIs. I wanted to update my knowledge of the BlueVia APIs after my #blue experiences, and the Pearson APIs seemed to have some compelling content. Given last year’s prize was a Sony Ericsson phone, I also wanted to use the Ericsson Labs APIs to say ‘thank you’. Finally, the Met Theft Challenge tickled me, and although I didn’t attend the stolen phones session, I thought it would be a fun problem to tackle.

The idea I came up with was this: if your phone is stolen and was not locked with a PIN, there’s a good chance the thief is going to look at your apps and your data. Bear in mind here that not all phones have a ‘find me’ feature yet. It seemed plausible to use social engineering to trick the thief into telling you where he is. So, I would prominently place a banking app on the phone’s home screen, which when launched would fire up a realistic (and customisable) dummy copy of an online banking website. The website that would actually be loaded would use the BlueVia APIs to send a message to the phone’s owner, containing the device location. Of course, “your phone is at latitude 51.507071, longitude -0.036241″ does not mean much to most people, so I would use the Pearson APIs to search the Eyewitness Travel Guides for places near that location. “Your phone is near St James’s Palace” being theoretically more human (or tourist) friendly. Finally, with the magic of the Ericsson Mobile Maps API, I would deliver a friendly web page to alternate phones (for example nearby friends), plotting the stolen phone and all those nearby tourist locations.

This year I cheated a bit, in that I spent time ensuring I was pre-registered with most of the Over The Air API providers in advance, to ensure optimum hacking time (rather than waiting for API keys etc). I’d also picked the development environment I wanted to use, and got everything up and running. Sadly, the best-laid schemes o’ mice an’ men

For this hack, I decided I would use HTML5/JS/CSS and node.js on the back-end. This was before all the controversy kicked off around the use of Node (node.js is a cancer), but frankly I would still have used it as it’s a simple solution to prototyping hacks.

What I did get working:

What didn’t work so well:

So the final hack is rather more rough and unfinished than even I expected. You can see a static copy of the output at OTA 2011 BlueVia Pearson Google Hack; if I get time I’ll set up a proper proxy of the node.js version so you can try out the locator bit yourself (assuming you’re signed up to BlueVia).

Lessons learned from this year? Don’t trust the network. Don’t be ambitious with your hacks if the sun is shining. If the forecast is good, take a tent. And always, always go to Over The Air: it’s both a learning experience and an inspiration. If you’re in IT, and do (or have done) development, make sure you’re there next year.

by Andrew at October 05, 2011 06:13 PM