Here is the solution to Emacs mastery (from someone who watches other people’s YouTube videos…):


More Learning

Yet More Learning

Practice, More Practice…

Time to repeat.


Yet… More challenges:

Lots to learn

Huge number of options

Infinitely configurable

Which way is best

Vast software selection

Lots of online sources, spread around


Keys to overcoming challenges

Master self-confidence

Pick one problem at a time, and work hard on it

Take time to enjoy the new power gained. Feel rewarded.

Choose the next option.

(if this helps) Document what you did.

Ravensbourne campus entrance
The campus venue where the magic happens.


Let’s be clear from the outset: there’s no word that adequately defines MozFest.  The Mozilla Festival is, simply, crazy. Perhaps it’s more kindly described as chaotic? Possibly. A loosely-coupled set of talks, discussion groups, workshops and hackathons, roughly organised into allocated floors, feed the strangely-complimenting hemispheres of work and relaxation.

Internal cross-section of Ravensbourne's floors
Nothing can prepare you for the 9 floors of intensity.

How MozFest works

Starting from the seeming calm of Ravensbourne’s smart entrance, you stroll in, unaware of the soon-experienced confusion. A bewildering and befuddling set of expectations and realisations come and go in rapid succession. From the very first thought – “ok, I’m signed in – what now?”, to the second – “perhaps I need to go upstairs?”, third – “or do I? there’s no obvious signage, just a load of small notices”…. and so on, descending quickly but briefly into self-doubt before emerging victorious from the uneasy, childlike dependency you have on others’ goodwill.

Volunteers in #MozHelp t-shirts, I’m looking at you. Thanks.

The opening evening started this year with the Science Fair, which featured – in my experience – a set of exciting hardware and software projects which were all in some way web-enabled, or web-connected, or web-controlled. Think Internet of Things, but built by enthusiasts, tinkerers and hackers – the way it should be.

“Open Hardware” projects, interactive story-telling, video games and robots being controlled by the orientation of the smartphone (by virtue of its gyroscopic capability).. the demonstration of genius and creativity is not even limited by the hardware available. If it didn’t already exist, it got designed and built.

An Open Web, for Free Society

Seminar on fixing corruption in public services
A multitude of social and policy-driven themes permeated MozFest

As made clear from the opening keynotes on Saturday morning, MozFest is not a place for debate. Don’t think this as a bad thing. The intention is simply to help communicate ideas, as opposed to getting bogged down in the mire of detail. “Free” vs “Open”? Not here. The advice given was to use one’s ears much more than one’s mouth, and it’s sound advice – no pun intended. I have generally been considered a good listener, so I felt at home not having to “prove” anything by making a point. There was no point. 😉

Several themes were introduced in the keynote speeches which really resonated with the attendees – sorry, the participants of MozFest. That of online security and surveillance, more than two years after Edward Snowden’s revelations, was as prominent as ever. Participation was another key theme, and to me one of the most poignant ideas of the whole weekend. Participation was not encouraged or expected; it was simply threaded into the very fabric of one’s presence. You participated, to a lesser of greater degree. This was one of the most socially inclusive experiences I have ever known.

Stories by the Fireside

I cannot overstate how social inclusion at all levels permeated MozFest. From the smallest of teams – 2 individuals, to the largest groups I saw, people were constantly engaged in conversation, development – personal, social and technical, and – perhaps surprisingly – quiet reflection, too.

Image of cupcakes with unusual toppings
Creativity and individuality – there’s a lot of it

Quiet zones were available for those needing a little downtime. The cerebral intensity of the weekend is clearly felt.

The concept of the fire-side story appeared several times, reminding us that the web isn’t just a resource in and of itself, but rather a medium to convey information.  Storytelling, one of the oldest methods of such conveyance, was a prescient theme. Represented through journalism, community and leadership, the scale of recognition (and a reminder) that the web is, primarily, a means to convey stories, took me somewhat aback. It’s inescpable logic, almost lost amidst the omnipresent noise of today’s social media.

Looking to the Future

Not only was MozFest a means to appreciate, understand and build upon the means to share information, it was also firmly invested in its future. Science and education were extremely well represented by group talks, workshops and forums.

Code visualising MozFest pathways on GitHub
Pathways were a means for guiding participants through the plethora of activities.

In fact, the sheer number of topics on offer, and guaranteed clashing of events sure to interest you, simply went to prove one thing: the web is not just big, it’s bigger than you can imagine. How the event planners and coordinators of MozFest actually found a way to combine the multitude of themes and interests into “Spaces” and “Pathways” is a huge credit to the thought-leadership behind this event. By encouraging leadership, the Mozilla Foundaiton has shown itself to be a more-than-capable leader in as diverse a field as there can be.

What I learned at MozFest

On arrival, I didn’t know what to expect. First-timers don’t.  I had a vague incling that I would face a learning curve, adapting to the culture and activities of the event. Like a wandering spirit, I probably stared starry-eyed at the overwhelming number of quickly-scribbled “adverts”, pinned, taped and hung up everywhere, telling me about “this event” or “that workshop”.  Even now, in reflection, I feel that the above post barely scratches the surface of the experience.

It’s sensory-overload, pure and simple. 🙂

MozFest is a journey. Physically, many people made long journeys to attend and participate. To those people, I am grateful – you have made my life richer by your efforts. But psychologically, emotionally and intellectually MozFest is so much more than the sum of its multitudinous parts: It’s an idea, a belief that together we can build something better for much time to come; build something to last that has intrinsic “goodness”. And we are not actually talking about the web. The conversation has evolved. The web might be the medium, but the story is now about us.

The question is, how do we nurture our most sublime nature, and be all we can?

This wasn’t the droid I was looking for

Motorola Razr HD smartphone rear cover
Good finish… bad start!

I was so happy recently to unpack my brand new Motorola RAZR HD.  It’s a lovely device. Wonderfully built, with a 4.7 inch 720p screen, replete with Gorilla Glass, and backed by a rubberized kevlar weave.  The aluminium strip separating the two, running around the edge of the phone, provides a premium feel.

Or, at least, this is what I was led to believe from various reviews.

In reality, what you have is a beautiful brick – with good battery life. Android 4.1.2, the operating system shipped with the phone and modified by Google/Motorola Mobility, to ensure the phone is quite unusable, provides an amazing experience – if you connect up your Google account.

The Empire Strikes Back

What happens if you don’t have a Google account, or if you’re unprepared to create one?

What happens is that the software on the phone may refuse to play nicely with other software you choose to install. Here are some examples of this obnoxiusness:

  • Phone set-up
    • Before even seeing the home-screen, you are prompted to log into your Google account – or create a new one. You decline.
    • You are reassured that it’s a really good idea to create a Google account, otherwise you’ll “miss out”.
    • Resolutely, you continue. You get to the home screen. Then you want to install something from the Android Market (sorry, “Google Play”). You now cannot avoid creating or using a Google account.
  • Contacts
    • The phone is still behaving as though you are not fully connected to Google. Therefore, your data storage is predominatly on the phone only.
    • However, you might want to check this in ‘Accounts and Sync’ (which we’ll get on to in a sec)
    • You have the option of synchronising your data off elsewhere, away from Google’s servers. The CardDAV Sync software on Google Play provides the vehicle for doing this*. You download and install it, set up the sync with your CardDAV server, and sync away.
    • You might find that some of the software from Google updates on your phone during this time, now that it has access to the market.
    • All good… but, you soon come to realise that you cannot add new contacts to your chosen sync location. Take the scenario where you receive an SMS from an unknown number. You try to add the contact from the SMS, and can only do so to local storage.
    • Worse still, your only option to alleviate this – the only sync location you can add contacts to is – that’s right, a/your Google account.
    • If you delete your Google account on the phone, you then find that you cannot sync your contacts anywhere, because you cannot specify a default Contacts Store in the Contacts app.
  • Calendar
    • The same is broadly true of the Calendar. If you are not sync’ed with a Google account, the only calendar you can use on the phone is the built-in phone calendar. You cannot use another, third-party calendar as the default store or synchronisation copy.
    • If you create calendar events on your phone without a Google account, even though you have other accounts which provide full calendar syncing capability, you will still be creating an event on the local calendar that has no synchronisation counterpart
    • During the course of writing this article, strangely the option appeared in my calendar to utilise alternative calendars when creating an event. We shall see if this persists..
  • Accounts & Sync
    • This section has become a total mess in Jelly Bean – especially in Motorola’s implementation.
    • You start at the home screen: swipe down (or across from left-to-right) to get to Settings (the cog symbol)
    • In Settings, you scroll down the list to the Accounts section. Hit CalDAV or CardDAV.
    • You are then taken to the respective app’s account information with a link to Edit account settings. Let’s hit that.
    • The screen scrolls again to another black screen showing the same account, the settings of which you want to change. Yet another tap on this…
    • .. and hey presto, you’re finally in! Here you make changes and then hit the back key.
    • … and then hit the back key…
    • … and then hit the back key…
    • and then you’re at Settings again, so..
    • … you then hit the back key…
    • …and you’re out!  (seriously, was this actually DESIGNED?!)
  • Going the other way into the apps settings (sorry if this is too painful for you) you first hit the Apps shortcut:
  • Hit the CalDAV or CardDAV icon
  • You then have the option: “Add account”, or “Go to accounts & sync”. Let’s say I want to edit an account, I’d choose “go to accounts and sync”..right? I tap it.
  • Oh, then there’s a pop-up style interface with ALL of your sync accounts. So I have to find my CalDAV app in the sync accounts list and tap on it…
  • Then I can see the calendar account I want to sync.  But how do I edit it? When i tap on it, it synchronises! Ahh, wait, there’s a menu/settings button (the one with three squares). I tap on that…
  • … and get the options “Sync now” or “Remove account”.
  • So, let’s get this right: to EDIT my app’s data, I go to Settings > Accounts & Sync (not to the app). And when I want to SYNC the account or DELETE it, I go to the app! That’s logical!

In summary…

Android is an open source ecosystem that encourages vendors to produce lock-in experiences which are frustrating, dysfunctional and unintuitive.

And to think I was pro-android this time last week.  I suppose I still have the t-shirt.  The retailer will soon have the phone back, though.


*CalDAV sync and CardDAV sync are both great pieces of software that fully get my support (and have done, in the financial sense).  I use them here as examples of good apps which are potentially made almost impossible to use by the restrictions imposed by Android OEMs.

It takes a long time to ditch those applications with which you’re intimately familiar.

It starts, quite often, with your Office Suite.  No, I’m not talking about desk and chair, but rather Microsoft Office.  Excel is an excellent spreadsheet tool, there’s no doubt of that.  But quite often, people like to work differently to the prescribed “norm”, and Libre Office allows just that.  It’s not the only open source office suite, of course: there’s also KOffice, the Abiword/Gnumeric combiniation and so on.

Recently I’ve ditched other proprietary applications which I have worked with for years.  Why?  Well, for one I believe that switching applications is good, because it challenges you to think differently.  You have to learn new ways of doing old things, and this can help you think of new, better things to do.

Secondly, you get no love with proprietary applications.  Time and again, you pay your money and end up getting no support.  So, really, what is the point?  I’m not just talking about Microsoft, either; many proprietary software vendors are only able to make a profit by re-packaging open source software and selling access to it from within a proprietary system. Parallels, I’m thinking of you here.

The only way to beat companies is to not buy their products. It’s this simple.  Here are the ways I have ditched proprietary software:

  • Operating System: was Microsoft Windows XP, is now Fedora (16, currently)
  • Email:  was Microsoft Outlook, is now Mozilla Thunderbird
  • Office: was Microsoft Office, is now Libre Office
  • Web Browser: was always Firefox 😉
  • ..the list goes on…

I’ve decided to go “old school” with some of my free time this year.  For some time, I’ve had (in storage) an Amiga A4000T computer – the top spec with Cyberstorm PPC card, CyberVision graphics card, some SCSI disks, 128MB (remember when you could run an O/S in that??) and so on.

Although the Amiga was always designed to work with analogue video standards (NTSC / PAL), the prevalence of VGA monitors in the 1990s meant that the old “miggy” had to adapt.  One of the great features of the CyberVision card was that it could redirect video from the integral AGA graphics chipset and display Workbench (or anything, it would seem) through the video card instead.  This was no small feat of engineering and, in my opinion, is partly what made computing in the 1990s so interesting; ingenuity, innovation, invention.

Above, AmigaForever© screenshot showcasing OS 3.1.

Left: The Amiga’s Kickstart, prompting for a boot disk.  

My 4000T has seen better days, granted.  Certainly as far as the operating system install and configuration is concerned – the video above shows that I can look forward to the pleasure of installing OS 3.9.  Or perhaps I might investigate OS4 which will harness my PowerPC chip, thanks to the hard work at Hyperion Entertainment.
Whichever, I am still surprised that for a 15 year old machine everything seems so, well, reliable!  The fact that the phase5/DCE CyberStorm/Vision hardware is operational, and the system starts up acceptably, is really testimony of the longevity of ancient hardware.
I’m really looking forward to exploring this machine again, and seeing what has recently been uploaded to Aminet.
Old habits die hard.  Happy New Year 🙂

/lib/ missing? can’t be found?

I recently [at the original time of writing] installed Fedora 11 [x86_64] on a test machine, to see how the development desktop build of my favourite Linux distribution is doing – and it’s very nice indeed.

I tried to install Zend Studio 5.5 and soon came across problems, which I found out related to not having 32-bit versions of Xorg and glibc installed. To remedy this, ensure you follow these steps:

su -c 'yum groupinstall Java'
su -c 'yum install glibc.i686 libXext.i586'

Once installed, I was able to fire up the Zend Development Environment:


.. and it was running on the native (OpenJDK) 64-bit JAVA runtime! How’s that for progress!

I recently ‘dented’ (tweeted on a question to a group of software developers: what music do they listen to that is conducive to coding?I received a variety of answers, with just as wide-ranging tastes as you could expect, really. Clearly, I hadn’t conducted a very economic experiment. Perhaps I was asking the wrong question.

The question I should have asked is this: which music do you listen to that evokes a calm, creative and logical state of mind? In other words, I needed to key-word the question to (a) elicit greater impact on the reader and (b) give the question more scope, more context.

The premise of the question is the science behind brainwaves. Apparently, alpha waves in the brain (those which occur at between 8-13Hz [cycles per second]) are the most conducive to creative AND logical thinking. It is commonly associated with a meditative state of mind, deeply relaxed, daydreaming, fantasizing and creatively visualising various scenarios.

This dispels some notion that left brain/right brain dominance exists. I can’t remember which is which, but it is said that the right hemisphere is more creative and the left, more logical/analytical. Or vice versa.

But this alpha wave state could, in fact, also support such dominance, if it allowed for the idea of submission of the dominant region during periods of relaxation. In other words, we will have one personality profile when active, busy, even stressed, and another profile when relaxed, calm, clear.

It follows, then, the people seeking to produce creative works – whether it be software code, writing, visual art or music, should always seek the best environment to create alpha brain waves. Music is just one component; meditation, light scents, lighting, physical comfort and staying hydrated also contribute, as does the avoidance of caffiene and alcohol.

But for me, most of all, it’s music.  And quite often, that’s trance. 😉

The problem: you cannot boot a paravirtualised machine from a CD-ROM for the purposes of installing a virtual machine. You may also be on a wireless link set up by NetworkManager and WLAN0 isn’t a bridged interface.

Here’s the solution:

  1. Download the ISO of your favourite distro and burn to DVD, then mount on your machine (this will probably happen just by inserting the disc on your drive).  If a window opens in your desktop, highlight the path in the address bar and copy it to the system clipboard (CTRL-C).
  2. Install Apache and start the apache/httpd service
  3. In /var/www/html (/var/www on debian, I believe) simply create a symbolic link to the directory where the DVD is mounted.  In this example, I am using CentOS:
     #  ln -s /media/CentOS_5.4_Final/ centos
  4. Now create the virtual machine, by starting up virt-manager, ensuring that it can connect to Dom0 and select New…
  5. In the Installation Source section of the virtual machine creation dialog,  specify the following parameter: Installation media URL: http://localhost/centos (the path to the installer repository)
  6. In the “type of network” selection, select Virtual Interface.
  7. Click through the rest of the set up – but BEFORE YOU COMPLETE IT, GET READY TO PAUSE THE VM. The virtual machine will start up automatically when you finish the set-up steps.
  8. As soon as you start the VM, the initial bootstrapping files should load and the distribution’s kernel should start up.   Only when the console window opens should you pause it!
  9. If you are using CentOS, you now need to modify the configuration file that’s been created, following these steps:
  1. Download the Xen kernel and initial ramdisk from here: (change the path if you’re using an i386 host)
  2. Save them somewhere sensible: I made /var/lib/xen/boot and put them in there.
  3. Un-pause and Shutdown the virtual machine.
  4. Modify the config file, to include the paths to the xen-aware kernel and initrd (put these entries at the top, adjusting for your path as necessary):
    kernel = "/var/lib/xen/boot/vmlinuz"
    ramdisk = "/var/lib/xen/boot/initrd.img"


  5. IMPORTANT – also comment out the line for pygrub, so:#bootloader = “/usr/bin/pygrub”
  6. Save the config and run the virtual machine. Nearly there!  Now open up the console to the virtual machine…
  • If you are prompted for a network address or DHCP, try DHCP.
  • If you are prompted for an installation path, stick to http. In a network interface dialog that may appear, choose a manual address that doesn’t conflict with other hosts on your real network (but make sure it’s valid for your network!!)
  • Because the VM now has a virtual network interface, http://localhost/centos is a meaningless path.  If the installer identifies this and prompts for an alternative path to the stage2.img file [true in CentOS, at least], then do the following on your host (real) machine:
    # ifconfig wlan0(substistute eth0 for wlan0 if you’re using a wired ethernet connection)
  • Paste/type the IP address from the output of ifconfig into the path dialog of the halted installer, but keep the /centos/ directory.
  • The installer should then run through the rest of the motions and voila – a paravirtualized virtual machine installed from local CD/DVD-ROM.

    When the installer has finished running, uncomment the pygrub line in the config file.

    If you spot any errors with this process, please let me know so I can correct the procedure.

    Happy Christmas!   *<(:-##

    I recently came across this slightly bizarre issue.  I was trying to mount a NFS share from one server to another server, using very loose permissions (I was basically sharing a DVD to a machine which had no DVD-ROM drive).

    So, what was happening?  Well, basically nothing.  On the NFS server (the machine with the DVD exported) I ran tcp dump to see what traffic was being received (the server was IP

      #tcpdump -nn | grep

    No output was displayed when I was trying to mount the share on the client. None at all.  Well, almost none.  The one bit of output that got me wondering was a broadcast packet which was received from the client.

       10:14:45.651572 IP > arp who has tell

    The IP address was a typo made by me the day before.  I’d meant to type in .200 in my mount string.  My incorrect mount command thus read:
      # mount -t nfs /mnt/dvd

    It seemed strange that an incorrect mount command that I’d typed in yesterday (and then hit CTRL-C to)might still be working in the background.

    Back to the client, I realised that perhaps the mount command worked in a queue/serial-like way.  Therefore, each mount command would have to complete – either successfully or not, so long as it finally returned – before the next one was attempted.  Checking out this theory, I investigated local processes:

      # ps ax | grep mount

    Sure enough, there were lots of mount entries pointing to the wrong IP address.  These were all my attempts to mount a non-existing server’s share to a local directory.  Dumb mistake, eh.  Still, CTRL-C didn’t cancel the mount request, which continued to run in the background.

    The easiest solution was to reboot the server, but in situations where that’s not practical, killing the rogue processes should suffice.