My first surgery since childhood: left rotator cuff tendon repair

Over the past year or so, I’ve been getting shoulder problems, and it got to the stage where I got referred to a specialist, who, having taken an MRI scan, recommended arthroscopic (keyhole) rotator cuff repair surgery. Having had the options explained, I agreed, with some trepidation.

How I caused the injury was related to a major improvement in my health; having lost 26kg by Intermittent Fasting, I bought a weight vest, and loaded it to take me up to my old weight (for doing squats and pull-ups); it was practising hefting it up to get it over my shoulders that probably caused the tear, and learning gun disarms in Krav Maga brought it to the level where I asked for referral to a specialist (the gross movement of a gun disarm is like a punch, although at an unfamiliar angle, and with nothing to absorb the energy at the end of the travel). However, the consultant said it’s general ageing-related wear and tear, and if it hadn’t gone then, it would have gone soon anyway. Apparently 50% of people of age 50 (e.g. me) have at least one shoulder tendon tear, 60% of people aged 60, and so on.

The previous time I had anything done under general anaesthetic was when I had a blocked lung lobe when I was about 9, and it wasn’t pleasant, as back then bronchoscopes were rigid tubes that they manoeuvred down your throat and into the appropriate branch of the bronchi; I had a very rough throat after that. (Modern bronchoscopes are flexible, although rigid ones are still used for retrieving obstructions.) It did get me written into a research paper, as one of the first five children they’d found to have a lung blocked with something other than a peanut; mine was blocked with phlegm following bronchitis.

So, I didn’t feel keen on the idea, but it clearly made sense, from the logical point of view, and so I signed the consent form, and they induced the anaesthesia while still asking whether I wanted the nerve block to be administered before or after the anaesthetic. (They clearly reckoned “after” was the sensible choice, and perhaps the insensible one too, as that’s how I was by then.)

I don’t really remember the recovery room (I guess the amnesia-inducing parts of the medication were working) and my shoulder was pretty sore as the nerve block wore off, but I had just enough painkillers. The procedure took a bit longer than planned, but when he did his ward round afterwards, the surgeon told me I should only need the sling for four weeks (it could have been up to six weeks). I was kept in overnight, and given vancomycin intravenously (which seems to be largely a precaution against MRSA) — I looked it up, and it seems it’s quite caustic, hence injecting it slowly; a doctor friend described it as “intravenous [bleach brand name]”!

Now, a bit over a week later, I’m pretty much off the painkillers, and doing the physiotherapy exercises that are an inherent part of the treatment. I should expect to be able to return to work around four weeks after the surgery; I suspect that car gearchanges may take longer, but I should probably be able to ride the recumbent (trike) pretty much one-handedly; fortunately, the main gearchange and two of the three brakes of the trike are on my un-operated side. I suspect locking the trike one-handedly may be harder than riding it that way.

WNBR 2015

Last year, I took part in the World Naked Bike Ride in London for the third time, and this year I did the London ride again, and the (new) Cambridge one. With five rides, I guess I’m a regular now.

In London, as before, I started at the Hyde Park start, which is convenient for me to get to from somewhere where I can park the Land Rover with its trike carrier. The sad ghoulish photographers were out in ever greater quantities. People joke about my Land Rover looking like it’s ready for the zombie apocalypse; the Hyde Park start is getting ever more like such an event, with ugly people looking dead inside trying to get a shot of the life force from the participants. I feel I should be kinder to them (I even thought maybe I should have blanked out their faces in the photos I put on flickr, because it would be so embarrassing to be one of them) as I wouldn’t be surprised if quite a few of them have no close friends and no warmth in their lives, but they do get annoying, and it’s difficult to be sympathetic when they’re so pushy and so desperate.

The format of the London ride had changed a bit this year, with timed rolling merges rather than stops for groups to join together. I felt that aspect wasn’t as good as previous years; the stops were a good chance for participants to chat without the start-line voyeurs. (The photographers along the ride aren’t as creepy as the ones at the start.) I know that that’s not the point of the ride, but in practice it is a nudist occasion as well as a protest ride.  Still, it was an enjoyable occasion, and I’m glad I took part and I’m sure I’ll be there again next year.

The Cambridge ride was a new one, with one start point, on Parkers’s Piece. Unfortunately, it rained for almost all the ride, but that didn’t seem to put people off, and there was a good atmosphere to it, and I think it was a good start to a new venue. Next year’s Cambridge ride should apparently be longer, which would be good (especially if it’s sunny).

I would have liked to do one of the other rides this year, but other events, including my shoulder surgery, got in the way.

I’ve put my photos from the London ride and from the Cambridge ride on flickr.

Building a recumbent carrier

Sometimes I go on trips where I want to use my recumbent trike, that are further from home than I can reasonably cycle to. The trike can fit inside my Land Rover’s loadspace, but getting it in and out is cumbersome (particularly now that I have started to develop rotator cuff problems), and for some time I’ve been thinking about how to carry it more conveniently.

The first idea I came up with was a rear platform, cantilevered out from the rear cross-member (back bumper), and perhaps tiltable downward, and so I bought a used “Hi-Cap” rear tub to adapt. Once it arrived, I realized it would be too heavy, and I also looked up the regulations on rear overhangs of vehicles, and found it would be too long. I’ve still got it; I’m planning to turn it into a trailer.

The main structure, tacked

The main structure, tacked

So I re-thought it, and decided to carry the trike on a framework hinged onto the back of the vehicle, that I could load it on the ground and then swing it up into place behind the back door. I went with steel for cheapness and ease of welding, rather than aluminium for lightness, and used my rather basic welding skills to tack the main parts of it together. It’s in two parts, one fixed relative to the vehicle, and the other attached to that by a hinge. The fixed part is held on by the pin that normally holds the adjustable towing bracket onto the drop plate, and stabilized by tubes going into the jacking points in the rear cross-member.

The support

The support

The hinge is two diameters of round tube, that nest reasonably well together, with the outer tube cut into sections and alternate sections welded to the stationary and moving parts. The part that is fixed onto the vehicle could potentially be used for attaching other things to the back of the vehicle (for example, a tray to hold things that wouldn’t fit through the door), by making a matching piece of tubular hinge. I had to shorten the vertical part of it, as in the form shown it caught on the slope of my driveway. I had originally made it that deep in the expectation of using it to cantilever a platform onto the back.

Built, and in place

Built, and in place

Having completed working out the design, I took it to a local metalwork company who completed it.

Painted, for visibility

Painted, for visibility

I thought drivers behind me might get a bit confused by the extra metalwork and collide with it, so I painted wasp stripes onto it. It probably still confuses people, but I think they’ll be less likely to bump into it.

I mounted a small winch on the front of the roofrack, which lets me pull the carrier and trike up into position with less risk of injury and damage. It’ll also be useful for opening the tent cover (which is quite heavy, being made from a Land Rover roof), and the bonnet (with heavy spare tyre on it), as I have a shoulder injury and don’t want to risk making it worse. I’ve already started to rewire the winch, so that instead of its hand-held control pendant on short thickish wires, it will be controlled by a couple of relays arranged in an H-bridge, with lighter control wires from buttons in various places.

Learning street layouts: London

I don’t often go to London (capital cities are generally too large for such a lover of peace and quiet) but when I have been there, I haven’t really known my way around. I’ve decided to do something about that: systematic learning of the major streets. I feel a bit silly constructing silly mnemonics publically, but since that’ll be part of how I do it, I might as well share them to save others the effort.

There are a few other cities I go to from time to time, that I’ll also learn, and will probably put notes on those here too.

Since my most regular London activity is an annual bike ride, one of my aims will be to have a feel for where I am during the ride. The ride starts from Hyde Park, so that’s one of my base points for learning routes; and other landmarks I’ll mark in bold will mostly be places I remember from the ride from past years. I bring the bike by Land Rover, and have found an area is suitable for parking in and cycling from, so I’ll include that. And the Shoreditch area, where I go for tattoos.

North of the Thames

East-West roads

Working from north to south. London is nothing like a grid, so some of these aren’t that close to east-west.

  • A bit north of Hyde Park, Marylebone Road comes down from its flyover, then passes south of Regent’s Park, then becomes:
    • Euston Road, which passes Euston Station, St Pancras Station, and Kings Cross Station
    • Pentonville Road
    • City Road, which curves south and crosses Old Street
  • From the north-east corner of Hyde Park, which is called Marble Arch, we have Oxford Street going east, leading onto these, for which I have the mnemonic of an “Old, Oxford-educated clerk called Theobald Bloomsbury“:
    • Bloomsbury Way
    • Theobalds Road
    • Clerkenwell Road
    • Old Street
  • Another string of streets, of which Holborn is the main one, splits off Oxford Street to the south:
    • Earnshaw Street
    • St Giles High Street
    • High Holborn
    • Holborn
    • Holborn Viaduct
    • Newgate Street
    • passes St Paul’s Cathedral
    • Cheapside
    • Poultry
    • Cornhill
  • From the south-east corner of Hyde Park, which is called Wellington Arch, we have Piccadilly going east (and a bit north), to Piccadilly Circus. It then continues as:
    • Coventry Street, Swiss Court, Leicester Square
    • Cranbourn Street, Long Acre
    • Great Queen Street
    • Crosses Kingsway
    • Remnant Street
    • Joins Lincolns Inn Fields
  • Also from Wellington Arch, Constitution Hill goes directly east, to Buckingham Palace and The Mall, then to Trafalgar Square

North-south roads

  • Edgeware Road comes in from the north, and passes Kilburn, and changes names several times, and back again
    • At Marble Arch, it becomes Park Lane
    • At Wellington Arch, it becomes Grosvenor Place
    • At Victoria, where there is a coach station I’ve used in the past
    • Not quite as a direct continuation, Vauxhall Bridge Road leads on from Victoria
  • From Regent’s Park, Portland Place goes south, and becomes Regent Street, which leads to Piccadilly Circus
  • Camden High Street comes in from the north, and:
    • becomes Hampstead Road at Mornington Crescent
    • crosses Euston Road a bit west of Euston Station
    • becomes Tottenham Court Road
    • crosses Oxford Street
    • becomes Charing Cross Road
    • passes Trafalgar Square
    • becomes Whitehall, and Parliament Street
    • runs to Parliament Square and Westminster Abbey, where Westminster Bridge almost joins it
    • continues as Old Palace Yard, Abingdon Street, and Millbank
    • Lambeth Bridge joins it
    • then Vauxhall Bridge
    • then it heads west, as Grosvenor Road
  • Gower Street parallels Tottenham Court Road
  • Eversholt Street splits from Hampstead Road at Mornington Crescent
    • at Euston Road, it becomes Upper Woburn Place, then Tavistock Square, Woburn Place, Russell Square, Southampton Row
    • at Holborn, it becomes Kingsway, which passes near Lincoln’s Inn Fields and runs to Aldwych
  • Gray’s Inn Road starts from King’s Cross, and runs to Holborn

South of the Thames

I can’t make this into anything like a grid.

Radially from Elephant and Castle

  • St George’s Road goes west-north-west, and merges with Westminster Bridge Road, to Westminster Place, which is near Forum Magnum Square and near Waterloo Station, and from where Westminster Bridge heads west
  • London Road goes north-west, to St George’s Circus, where it splits:
    • Waterloo Road goes to Waterloo Bridge
    • Blackfriars Road goes to Blackfriars Bridge
  • Newington Causeway goes north and slightly east
    • It becomes Borough High Street, and goes over London Bridge
    • Southward Bridge Road leads off it, and goes over Southwark Bridge

A quick update on Land-Rover work

I haven’t been doing much work on my Land Rover recently, because of the cold weather and lack of available dry daylight hours. I’ve been doing some wiring (still in progress), but as you can see, there’s some tidying-up to do on that before I regard it as “done” for a while.

The ceiling switch panel, swung down for maintenance

The ceiling switch panel, swung down for maintenance

At least the ceiling switchpanel is reasonably modular; the backbone of it is what most needs tidying. All the wiring is documented in an org-mode file, with some purpose-written Emacs-Lisp for navigating it, so there isn’t a circuit diagram as such, but a list of connection groups, with the same name occurring at both ends of the same wire.

The back of the wiring hub

The back of the wiring hub

The wiring at the back of the central hub of the star-topology main wiring is on its second iteration, this time done with colour-coded wires (the original was all-white). The thinner wires on the left lead to some pieces of stripboard with edge-connectors on them (insulated by the thick bluish-looking tape); those will eventually connect to a board of LEDs to give me the status of almost all the wires, and also to voltage dividers feeding the GPIO pins of an Android Accessory Development Kit, a specialized version of the Arduino microcontroller that interfaces to an Android device, which I will connect to phablet that I will build into the ceiling panel.

In a classic piece of programmer’s yak-shaving, while designing the bezel to hold the phablet in place, I decided Inkscape wasn’t really my way of doing things, and started to write my own Emacs-Lisp CAD system, in which shapes can be described by easily-edited textual expressions (inspired by the pic drawing language, but improved by structuring as s-expressions). This is taking a while, but I’m sure it’ll be worth it.

Inside the dashboard

Inside the dashboard

I tidied up the gap in the dashboard, to make it easier to put the wiring hub in and out. At first, I dreaded this task, but it’s a lot easier now. Disconnecting and reconnecting it is easy; the cables that go in the top of the hub are all labelled with their positions in the 8×3 grid of sockets, and there are only four at the back (one earths, and three to the fusebox).

The new exhaust

The new exhaust

The old exhaust system, that I’d put together from two long-wheelbase Land Rover exhausts, with the help of my mechanic friend, fell apart on my way to EMF, and at last I got round to getting a custom one made, by Demand Engineering near Stowmarket. It’s very satisfactory, and the vehicle is quieter than it was, and the engine compartment doesn’t get so warm, so the old one probably had been leaking a little near the front as well as part-way back where the old end had fallen off.

By the way, the strips with holes in them, on the underside of the chassis longitudinal beams, are for bolting battery boxes to when I eventually get round to going hybrid by putting an electric motor on the third axle. The transverse tubes at the front and back of those strips are with a view to being able to slot removable crawler tracks in under the long section, so that rather than getting grounded on ridges or sliding over them, I can roll over them. Powered tracks would be even nicer, and screw drive would be really cool, but I basic tracks would be a good start.

Getting started with Android (and the Pebble)

My lovely N900 phone is showing signs of wear, and I’ve decided to move onto Android, and have bought myself an HTC One M8, on the grounds that I might as well do it properly. My main requirement before switching fully is to get Emacs running on it, with Org-mode, and to do that, I’ve installed the Android Debian Kit. I haven’t got as far as a cleanly-running Emacs, so I’m still carrying both phones with me. I’m thinking of going in at the deep end, and starting a native full port, compiling Emacs to use Android’s UI toolkit instead of X, but haven’t started on that yet (I’ve got quite a few projects to tidy up first). I also want to run a spreadsheet on it, as I record my financial transactions pretty much as they happen, and also my weight daily and some of my exercise routine.

As well as the phone, I’ve bought myself a Pebble Steel smartwatch; it’s not the most powerful smartwatch around, but it does look reasonably like a watch. I’d really like to run org-mode on that, but since running Emacs on it isn’t going to be possible, I’ve started to create zorg-mode, a somewhat compressed clone of parts of org-mode, that should be enough for managing my todo-list (synchronizing it with the phone).

I’m very impressed with the HTC One M8, and, despite its limitations, I’m beyond very impressed with the Pebble Steel. I’m less impressed with the effort it’s taking to get its development environment running on my Debian system, though, and, although I don’t like such things, I’ve started to use their cloud-hosted development system instead.

A longer fast

I’ve been doing intermittent fasting for some time now, a day at a time, and have found it very effective for losing weight, and probably for many other health improvements, not all which I’ve measured. I started off with 600 calories on the fasting days, and once I got used to it, found I could go under 100 calories (a tin of tomatos), and then tried some complete fasts (black coffee, green tea, etc, but nothing calorific) and they were easier than I expected. A bit over a year ago I tried some longer full fasts, 60 hours (two and half days) and 98 hours (just over four days, with the aim of reaching ketosis to find whether it felt any different for me), and they were much easier than I expected. I’d like to try a whole week sometime, and as I started writing this, I was embarking on the halfway mark between four days and a week: I’m aiming for five and a half days. This fitted in conveniently with my weekend routine being disrupted by the Cambridge half-marathon; instead of the early Eucharist, followed by a cafe breakfast, a walk, and a Quaker meeting, I’m going to stay at home, mostly tinkering with things. My next planned social eating after the fast was Wednesday lunchtime, when I go for a pub lunch with friends from a previous job, and so that’s the first eating occasion which people will notice if I miss. (I’m doing this fast a bit furtively, because when I did my four-day fast, friends I told in advance seemed to think I’d been in terrible danger, despite (or rather, because of) knowing nothing about fasting.)

A lot of precious, aren’t-I-special, must-be-careful stuff is written about fasting (and about eating, for that matter), and I simply don’t believe most of it; the bits I do believe are backed by scientific evidence or direct experience. But I do take some care; for example, I know that eating a full-size meal after a fast of more than a day is likely to cause indigestion (I tried it). And there’s a reasonably clearly established connection between eating red meat and an increased risk of cancer (and between eating vegetables and a reduced risk), so I didn’t want red meat to be sitting round in my digestive tract as the last thing I ate before the fast. So I forewent what I would have liked to eat just before the fast (a doner kebab), and instead stuffed myself with green salad with chicken and fish, so I’d be up-to-date on greens and on protein and fats beforehand. And to avoid a sugar rush after the fast, I got some bags of nuts to break it with, that I’ll probably follow with some yoghurt.

I was hungry intermittently for the first couple of days, but on the third day that had largely gone, as I had switched from running on sugars to running on fat reserves. I felt slightly different from how I normally do, but it wasn’t a problem; it did feel very strange not to feel hungry at all. I took my urinary ketone readings twice a day, and saw that I entered ketosis after two and a half days.

Towards the end of the fifth day, I went to a dancers’ club ball, and danced fairly energetically. Driving back, I did feel a bit odd, and very thirsty, so took a ketone reading when I got home, and it was twice what it had been before, so I decided to break the fast then, by eating nuts and a tin of creamed mushrooms (an odd late-night choice).

The next day, after having some yoghurt to start with, I ate normally from lunchtime onwards, which was probably a bad idea; I did feel more than full, and should have allowed more time to make the transition from fasting to normal eating.

The fast did get me down to what I had long thought would be my target weight, which I’d been persistently unable to reach. I realized I’ll have a little more to lose after that to get down to my actual lean weight (think six-pack) but it definitely brought me into range.

So, would I do it again? Will I ever go for a whole week? Yes, with some modifications. If I have a whole week clear of social eating occasions, and without any energetic events like dances, I’ll try it again, perhaps as an annual reset to my digestion, but given seven days available for it, I’d probably fast fully for the first four of them, then have three days of salad with fish and nuts, before returning to normal eating.


At the end of January, I went to my second FOSDEM; I went a few years ago, then for the intervening years, various things intervened, although I would have liked to have gone; this year, everything was clear for me to go.

The event was very well-attended, and covered a wide range of topics, with software itself at the centre but spreading to cover both intellectual property law and open-source hardware.

Notes taken during the event

My remarks added in italics.

No legacy (IPv4) connectivity, should work for everything except Android phones.
except for FOSDEM-legacy

Livestreaming available as rooms may be full, and everything is recorded and mostly livestreamed.


Keynote: Are we who we say we are? (Karen Sandler)

Was an engineer before she was a lawyer; pro bono counsel for various open software organizations.

Thinking about representing someone (as a lawyer). Legal ethics for free software, very different from what lawyers from other backgrounds expect, e.g. openness instead of confidentiality.

We say “we” a lot, meaning a lot of different things (even in the same sentence), so who is the lawyer’s client? Employees of companies in open source can have multiple affiliations. Charities and trade associations are different. Some open source conferences are run by trade associations; FOSDEM limits what sponsors can do. Companies co-opt “making the world better by…” “Open source” on IRS application scrutiny watchlist! Our own perception of what is a FLOSS community is varied. Why do people contribute to ubuntu (thus sublicensing to Canonical)? “This is where my friends are”. People can move jobs while on the same project, and it can be unclear when they’re in a professional context. Conservancy publishes everything e.g. travel policies.

Trademarks are identity, and messaging from a particular source. Example: public support for getting Groupon to stop using the name Gnome for a product. That may have needed the gnome foundation to coordinate it.

c-mera: lisp syntax for c

Pretty obvious; just about time someone got round to it. Lisp-style macros would be nice in all languages.

Introduction to freeRTOS

Small useful programs in emacs-lisp

A good way of getting people programming?

Some example programs (talk wasn’t very good, and someone disrupted it a bit)

Upstreaming and downstreaming

Running Linux on Android devices(extremely well-attended)

By David Greaves.

mer, sailfish (focussing on its open parts), jolla, inherited from maemo.

Sailfish for android-focused devices.

The technology: mer is the core of sailfish, opening up the code of the core distribution (about 400 packages, no applications) Trying to make it easy for manufacturers to build devices, not aimed at end-user hacking. Qt: not java! QML is good: declarative design. Qt has become quite big, but is modular.

Mersk is a chroot running Mer under any distro, plus some tools.

Android has binary blobs, and we have to route around the breakage, while hoping for better open hardware. Pressure on manufacturers does work eventually. Shim between glibc and bionic libc: libhybris enables use of glibc on top of Android BSP.

Andriod linker code: dlopen, dlsym, dfclose: renamed to android_dlopen etc, and can then run Linux and Android in the same address space. Some patches to bionic, e..g. threaded local storage.

Working alongside cyanogen mod where available. HADK. Minimal Ubuntu provided.

Install habuild and repo inside the chroot, download a repo to build.

There’s a manifest defining what to build. Then need to build hybris and the drivers. Then make a filesystem image that you can put onto the device, using adb.

You can write error messages into the device serial number, for retrieving adb debugging.

Runs emacs :-)

About 25 active developers. Devices include N900. port-devices-status

Multirom (multiboot).

Core and some MW is there.

Put on watches too?

Code is not enough.

Jolla discount code FOSDEM2015 will work to 8th feb

CHDK: Canon Hack Development Kit

By Steven Goodwin.

Can use cheap second-hand cameras, which may be more capable than the manufacturers’ software makes available.

Aimed at the cheap point and shoot cameras on most DIGIC chipsets. It’s a temporary upgrade: augments existing firmware (does not touch ROM firmware) and respects hardware limits, adds functionality such as scripting, increases control of existing parameters (can effectively upgrade to a more expensive model in the range) e.g. exposure, flash power, adds controllable elements such as grids, add export as raw.

Compatibility test with /mount/sdcardroot/ver.req put in the camera and put in playback mode; or various tools. The chipset doesn’t change as often as the other parts of a camera range.

Stick tool looks at a jpeg from the camera to decide what it is. Cross-compilation: ARM compiler.

Copy onto SD card and boot the camera. Firmware update; tells it to run things from card memory. SD card lock switch tells the camera to do an update, and then ignores the switch as it’s advisory.

Everything is in ALT mode gives an extra OSD with different menu. Exposes all parameters.

Scripting: load the script, set the parameters, shoot. Meta-code at start of script says which parameters to expose. Has BASIC and Lua interpreters. Motion detection. Scripts can simulate buttons.

Grids: overlay on the display drawn with drawing commands; can make custom ones such as for passport photo alignment. Can put a hard-to-remove “this camera is stolen” display on it!

Writing modules. People write games on them, too: base it on the snake game that comes with it. Mandelbrot generator!

Debug: can use LED (via memory location). Can crash it and use romlog (will need a map). ShowCameraLog, Printf, LogPrintf.

(Really bizarrely, the guy next to me seems to be copying what’s on my screen rather than making his own notes.)

Tool called Dagger for debugging, intercepts ???

Motion detection hacks: has parameters to say how much of scene has to change, how much dynamic range must change, etc.

Can make your own shutter release cable this way, using the USB connection.

You can make a bullet time rig, triggering many cameras in sync, e.g. simultaneous elements for a panorama.

Kite aerial photography. HAB (with a GPS phone too so you can find it again).

The emacs of distributions: Guix

See Stallman 1981: When large numbers of non-technical workers are using a programmable editor, they will be tempted constantly to begin programming in the course of their day-to-day lives. This should contribute greatly to computer literacy.

What are the barriers to distribution hacking?
– packaging, ability to extend
– package management tools
– esoteric configuration
– implementation language barriers

$ guix package -i guile
You don’t need to be root to do it
$ guix package -i guile-1.8.8 python
tells you about environment variables you may need to set
$ guix package –roll-back
$ guix package –list-installed
There is an emacs mode to do this for you; it gives access to the package profile from the package list, and to the source code from the package profile. You can make generations of a package, and ask for diffs between them. Uses geyser to talk to guile underneath to get docstrings etc.

Packages can inherit to add, remove, and replace parts.

Package recipes are in declarative scheme. # constructs in it are deferred until run time. guix can be set to build locally instead of pulling central builds. No single point of trust.

Reproducible builds: guix build will store the hash of all the dependencies. Binaries should be nearly identical bitwise. Builds are done in chroots with separate UIDs. The build daemon creates these, with guile inside them and the interface in emacs talks to the daemon.

There is also a web interface.

A similar approach to OS configuration, using declarative scheme to define things like which file systems are mounted by default, what services are to be run, etc. Produces a directory which is effectively a closure. Likewise for virtual machines, which you can start with the defined operating systems on them.

initrd has guile in it, as does PID 1 (dmd).

Installable available from 2014-07

Now ported to ARM v7

Recognized at FSF ? compliant.

Dogfood: 1200 packages, 4 platforms Guix System Distribution is standalone, binaries at


l10n into 8 languages.

Quite active: 2448 commits from 36 contributors.

Porting Emacs to Chromebooks and the web (Pete Williamson, from the Google Chrome team)

Why? Chromebooks are selling very well, and he did it as a 20% project.

NaCl (Native Client) is a project to compile chrome webapps to run in sandboxes.

The web emacs is a chrome web app wrapping Emacs. Chrome apps are downloaded absolutely, so can be used offline.

They download emacs from fsf, apply a patch, configure, build temacs.nexe then run that in a emulator on the parent linux environment to complete the build. Not yet building the elisp inside it, but including it as a compressed directory, which was already allowed for in emacs.

NaCl uses a partial glibc. Found some bugs in emacs and its makefiles (which are quite advanced). Choice between implementations. PiNaCl uses LLVM code and JITs after download.

You can use gdb with NaCl. Debugging Lisp without the display is harder.

Various small things needed fixing, including some temporary hacks such as saying all files are executable and writable.

Emacs has been ported to so many systems that the makefiles already have many workrounds for things.

Demo of various things (not all working yet). Still some things to do; pipes not provided by NaCl. Want to be able to mount cloud drives to chrome. Want to build as a web page too, so you can run real emacs on a web site. Want to upstream back to FSF.

Software patents

Cannot patent vague things.

Extending Python

By Francisco Fernandez Castano.

Writing native code to work with python. Why write in C? Binding libraries, for example; or for speed, or connecting up legacy code in other languages, or integrating python as a scripting language for another program.

C API to python: PyObject type. PyArg_ParseTuple to get arguments. Py_BuildValue to construct something e.g. to return. Define a module to put your functions in.

distutils module provides a setup function. dlopen in C to load shared libraries.

Manage memory manually, use reference counting macros. To throw an exception, register it and return NULL. Some differences between Python 2 and Python 3.

CTypes is an advanced FFI for Python; allowing Python to describe C structs and convert things to C to use.

CFFI is another advanced FFI. Gives API and ABI access. Recommended by PyPy. Give it fragments of C declarations as strings. Can also put the C functions in as strings, and CFFI will compile it for us.

Three ways, same principles, varying in portability and ease of use.

In Q&A: mentioned SWIG

PyPy and the future of the Python ecosystem

By Romain Guillebert.

How can we get better implementations, without throwing away language features and libraries?

CPython is most popular, but has poor performance, and cannot use multiple cores in a single process. PyPy has a smaller marketshare but better performance. Other implementations are almost unused. Comparing with other languages: Go is quite fast and great at concurrency; JavaScript is pretty fast, even PHP is quite fast these days. So we have no excuse. C extensions make it hard to switch implementations and so Python can’t evolve because of them: a lock-in. More competition between implementations would benefit everyone, particularly users. Libraries use more than the official API; official API makes assumptions on how the virtual machine is written; the C API is against performance and concurrency, e.g. reference counting.

C APIs in other languages: JNI/V8 and Lua/Julia. We could learn from them. Can we implement something similar? Yes! Designing it to make everyone happy is harder than implementing it.

PyPy is the most flexible implementation, and is written in RPython. 6.9 x faster than CPython. Competes against other fast languages. JIT: Pay the cost of what you use (e.g. introspection).

STM: working on removing the GIL without having to deal with threads and locks.

Short term extension support.

We can do better than we are. PyPy is working on it. Making an alternative, portability-friendly, extension ecosystem would be hard but worthwhile.

Python lightning talks

eGenix pyrun

python runtime environment in a single file, with easy installation by a shell script.

ZeroServices: micro-services f***ing easy

Starting a project: the API debate; the missing debate.
Example in 33 lines of python!

Skink (like a snake with legs)

Web developer wall between server and browser.
Some approaches: brython, nodewebkit, pythonium, websockets…
Aim for simplicity. Would like callbacks.
Generates JS on the fly.


for building and installing scientific software
e.g. “Please install QIIME” which has a mass of dependencies, and is picky about versions. Can now install that on an HPC cluster with a single command.


for seeing what software is actually being used.
It hijacks the linker and mpirun.


Supporting accessibility in your distribution

Don’t focus on one technology.

Why not just use text? Some applications assume graphics, e.g. real javascript support; non-technical people don’t like text applications and there are fewer people they can ask for help.

edbrowse, a blind-oriented editor/browser etc are generally a bad idea — too specialized and limited manpower, and compatibility problems. Better to make existing applications accessible.

Synchronized work between sighted and blind people, rather than separate views. Should be pervasive without having to ask for installation.

Status of FLOSS: text mode is quite accessible but not suited to beginners. Gnome is quite accessible, some stick to Gnome 2. Late compared with Windows, stone age compared with Apple which has integrated screen reading.

Generic methodology: connect abstract representation part of app to accessibility bus as well as to visual rendering. For example, for gedit, the representation is in GTK, which communicates with Orca. This shows the logical structure of the application. So technically speaking, a lot of applications are accessible: console, GTK, KDE/Qt4/5 soon, Acrobat reader. KDE Qt3 and xt and self-drawn are generally not accessible. evince may have improved recently.

Text applications usually work well for braille; always provide such equivalent of graphics, also useful for ssh to servers. Putting the cursor in the right place is useful. Keep it simple, making it easier for screen readers and everyone else. Use standard widgets.

This is all about Freedom #0, Stallman only mentioned a11y as just a “desirable feature” and assumed people could modify the program (not realistic). Vint Cerf asked “why is accessibility so hard?” Issues are social more than technical. Should be prioritized, like i18n has been for a while. Who is doing it? Concerns only a small fraction of the population; almost no-one in that community, or aware of it, also has the programming skills. So support has to be integrated into the main software.

Should not be specialized distributions; it should be orthogonal to everything else. Specialized distributions tend to be too specialized, too. Such distros can be interesting testbeds, but things should then be pushed to the mainstream.

Graal: accessibility everywhere, installed by default. Requires close integration, e.g. in debian installer.

Please keep text-based distributions. Please keep packaging text equivalents, such as ogg123. Accessibility packages: Brltty, at-spi, orca, speech synthesis, magnification etc. Test it. /dev/vcsa, TIOCSTI, uinput should be included. at-spi-bus-launcher, at-spi2-registryd must be running as the proper user “dm” then the actually user. check the bus with dbus-send –session –dest-org.a11y.Bus –print-reply /org/a11y….

It needs to be enabled: no standard shortcut for this. Also install various other bits such as gtk frontend for libreoffice, xbrlapi to simulate keypresses from the braille keyboard, java-atk-wrapper but doesn’t work with multi-threading yet. If you have 32-bit applications on a 64-bit system, you need 32-bit a11y libraries etc.

Bootstrapping e.g. entering a cybercafe: usb braille device; shortcuts to start synthesis should be standardized; accessibility panel must be accessible. It should be installed by default (e.g. library computers). GPII project aims at a device that will indicate to a connected/nearby computer that a11y is needed, e.g. a usb key with a file that indicates using speech synthesis with certain settings.

New computer, let’s install linux… all debian forks should inherit a11y in the installer. Installer todo details on The installed system should inherit the a11y characteristics used in the installer. Qemu has a virtual braille device, useful for testing. What about the bootloader? Not good so far.

About bugs: take users’ suggestions in, maybe as an option, e.g. bracketed links in text browsers. Be patient, blind users may describe the application in different terms e.g. “braille doesn’t follow” means the application hasn’t left the cursor in the right place; and may not mention visual symptoms of bugs. Discussions: separate mailing lists will mean that mainstream maintainers will not be aware.

Remember blind people want to re-install their system at 2 a.m. too!

OpenStack infrastructure tools you will want to borrow

Openstack is a collection of open components for building infrastructure for a cloud. The infrastructure team provides code review systems, continuous integration etc for the development of openstack. Two main characteristics: daily 1000 patchsets proposed, 7500 gerrit comments and votes, 16000 test jobs, 250 changes merged. All done with open tools. Everything displayed using puppet: fully automated. They also open-source their puppet configuration. This talk focuses on the tools they had to develop for it. This was largely for scalability.

Zuul: a scalable gate system. The github way (human) is not. Use automated tests to decide on merging changes. Handles cross-project dependencies. A traditional gate system is serial, testing changes on top of previous changes that have passed. Tests can take too long for this, so tests have to be done in parallel, which can’t handle regressions on previous tests. Zuul uses speculative gating. It’s still strict overall. Optimized for speed, not resources. At best, as fast as full parallel, at worst, as serial. Main problem is false negatives. Quite hard to visualize it. check, gate and post queues. It is written in python.

Backend is configurable, so can run in clusters other than OpenStack too.

Jenkins-job-builder (JJB)

Makes handling thousands of jobs easier: write YAML descriptions which are converted to XML for sending to Jenkins API. Macros and job descriptions, and job templates, in the yaml.

Jeepyb: a collection of tools for gerrit

yaml description of things
periodic tasks:
– manage-projects includes github mirroring
– close-pull-requests diverts github
– expire-old-reviews
just do a review on the control file
Commit hooks
– update-bug, update-blueprint integrates with launchpad
– notify-impact sends emails to security, docs etc
– trivial-rebase detects trivial rebase and reapplies votes

Sharpening development tools

git-review: a helper for git-gerrit remote setup
rebases on master by default
support hooks
done as “git review” i.e. just a git plugin
can compare patchsets


CLI (ncurses?) version of gerrit web frontend
email/newsgroup style workflow
can download material to review offline

Co-ordinating developers and tasks

need for cross-teams coordination
API server / webclient design
Complex priorities

The story of Rust

by Steve Klabnik from the Rust core team

Nearing the 1.0 release

Rust is a programming language, which has been in development for a long time.

Getting a bit meta first: why the story of it matters. Stories imply history, which is in epochs, defined by the predominant paradigm of the time. Totally not Marx: the history of 1.0 shipping struggles.

Four epochs:
– The personal years 2006-2010
– The Graydon years 2010-2012
– The typesystem years 2012-2014
– The release year

“It took a long time to figure out how Rust ought to work” — Niko
It’s completely different from eight years ago if you compare it by features, but exactly the same by goals.

Rust and Servo are both implemented in Rust. Have experimented with features, many of which were then thrown out. Rust has lost more features than many languages have in the first place.

Graydon’s original aim: a compiled, concurrent, safe, systems programming language. “Many older languages better than new ones. We keep forgetting already-learned lessons.” “Technology from the past come to save the future from itself.” So all the features are a little rusty.

Syntax between ML and C. Easy to parse, to tool for, and to grep. The semantics is the interesting part. Syntax is less important.
– memory safety, no wild pointers
– typestate system
– mutability control
– side-effect control
– you can break the rules if you specify where and how
– in a standard way, that’s integrated into the language
– multiparadigm
– not “everything is an object”
Four years ago, 90% of features working, 70% of runtime, 38kloc Ocaml compiler.

As the team grew, the typesystem grew, and more moved from the language to the libraries, and Graydon stepped down from the project. Now, no one person has control: eight people on the core team.

Non-typesystem things: cargo project packaging system; don’t need makefiles and autoconf. Common patterns can be built into the cargo workflow. .toml package description file, the least bad format for this. Finds and fetches headers etc.

Three camps of users:
— ex-C / C++
— ex scripting languages
— ex functional programmers
In some ways, Rust is a combination of these three things.

RFC process, inspired by Python’s PEP. Even the core team goes through this process, and everything now is logged.

Some code examples.


Gives /dev access to microcontrollers’ pins etc (I think this is for SBCs running Linux on them; might be user-space linux?), abstracts out some low-level detail; in userspace, so less fiddly.

Supports various boards.

Various APIs e.g. I2C, some via SWIG.

Concepts of pin ownership, to avoid clashes. Has contexts for keeping track of this. But can still get conflicts between processes over pins.

Showed an example.

Probably shouldn’t be trying to do bit-banging from Linux userspace!

Raw mode using GPIO numbers directly, instead of via our usual sensible translation map.

Why not use the Arduino API? Keep track of pins; support more languages; more systematic names. More like mBed API.

Extra APIs provided on top (UPM = Useful Packages from Mraa) in various languages, e.g. LCD driver. Works on top of any mraa system.
Uses C++ API to make it easier to use SWIG on top. MIT licence.

Packages provided for various distros.

High-level open and free FPGA design tools from OHR (OPEN HARDWARE REPOSITORY)

(Some lead-in talking about comparing verilog and others e.g. run time of simulation)


A place on the web for experimental physics facilities to colaborate on designs, started and maintained by CERN; not only for that community.

HDLMake a command line python program for agile management and reuse of HDL cores, defining hierarchy using python manifests
Supports synthesis of xilinx, altera, microsemi, lattice; proprietary and free/open simulation.

Some examples. Generates makefile. gtkwave used.

libre-FDATool helps anaysis of hdl filters from high level specs. Non-recurring engineering (NRE). Needs a scientific python package (original FDATool needs matlab). Integrates with simulation engines.

The simple PCIx FMC carrier, which is fully open hardware. Need several building blocks to get a whole SPEC product running: hardware, gateware, software (user libraries and device drivers).

yocto / OE projects. Python-based. Is HDL just a kind of software? We can handle it just like a linux package!

Stable, for production. Python is the glue.

Mobile map technology

MMT: The multi-platform mobile advanced visualization framework.

An open-source library. An API to build native applications for 3D visualization to run on any device.

Problems: fragmentation (particularly OS), performance (large data), usability (maps largely targeted for web use), ease of coding (easy starting to use it).

Target iOS, Android, GWT, whatever, from C++; translated to Java for Android and GWT.

Globe view, scenario, “flat”. Any kind of data. Can develop offline/online applications; real-time; cache. Camera and models animations. Utilities: tasks, HUD, tools data transformation.

Symbology: non-overlapping markers.

Vector — tiles, e.g. on open layers 3.

Point clouds: point-cloud.glob3mobile, serving only the points you need to show for your zoom level etc.

Various examples (showing good performance from Android, its lowest-performance platform).

Showing synthesized views of / below an aircraft.

Linino technology

Virtualizing MCU peripherals.

Having an MPU (big processor(s) with full OS e.g. Linux) talk to one or more MCUs (rich peripherals)). Integrate the MCU peripherals as though they were standard Linux peripherals (including interrupts). Written using OpenWRT linux distro and THOS. Arduino Yun. Can optionally drive it using javascript. Arduino shields. Interrupts.

Basic idea: poor man’s PCI: let the MPU see MCU peripherals like “local” devices. bus/device/function/offset addressing, through memory-mapped registers. Makes it look like a memory-mapped peripheral, but over any transport. Can have multiple busses and multiple devices on each bus. There is a standard memory map independent of MCU, making standardized virtual peripherals. Poor man’s PCI Function Descriptor, for plug and play. Frame size is fixed (16 bytes = size of a standard UART’s buffer). Smaller than PCI’s equivalent: 8 bytes at start give the description. Also convenient if DMA is available.

Linux implementation: the mcuio bus. (bus is a software layer, the foundation of linux device management). Allows matching drivers to devices according to some criteria. A line discpline based HC, talking over a serial port to the MCU, but it could also be a socket to some other form of communication.

Next steps: MCU support, typically uses I2C which is not plug-and-play. Shield drivers. BLE/ipv6 support, 802.15.4 support. Possibly loading programs from the MPU to the MCU for realtime work; would need more complex resource management.

Plenty still to be done, please volunteer! Code is on github.

Keynote: introducing SILE: a new typesetting system.

Written accidentally. Needed covers for books of various sizes; printing company sends a template; we’d rather do that from a simple text spec file. Blurb on the back, needs to be nicely justified. PDF2 library adjusts letter proportions to justify! TeX’s justification algorithm is 30 pages of dense 1970s Pascal. This has been translated to javascript, so he translated that into Perl; found that someone else has put TeX’s hyphenation algorithm into CPAN too. These made much better blurbs! Just need to add some more stuff from TeX e.g. the page-breaking algorithm. Note: Sile is not TeX!

Intermission about TeX. It’s older than him! When it was designed, many things we now know had not been invented, e.g. vector fonts, PostScript, PDF. Brilliant design decisions way ahead of their time. Then PS fonts and PS then PDF came along, so some changes were made in TeX. Then XeTeX to use system font library. Then luaTeX for macros. So, gradually, design decisions have been removed, although the core Pascal is still there.

Should throw each project away at least once, especially in perl. Now writing it in javascript, as some has already been written in that. Use cairo and pango, and XML (at that stage) as parsers were already available. Assumed few people write documents in text editors. Then Martin at SIL came along, on the mailing list for some software called Graphite that chooses fonts for multilingual documents. Looked for a standard format for multilingual dictionaries in XML. Then “signwriting” via unicode, by the same person. He’s in SIL typesetting team, gets the hard typesetting problems no-one else will take. Is pushing TeX beyond its limit, has written his own version.

Examples: Arabic typesetting. Unicode has not solved all the problems! harfbuzz, graphite, some versions of TeX. Each language has specific typesetting conventions, e.g. Japanese paragraphs, very different from western paragraphs (TeX can do a bit of this). Bible typesetting: produced on thin paper, so must mesh lines on the two sides of the page. ConTeXt can do this a bit. But footnotes and sidenotes are difficult too. Two columns, but with some material across both columns e.g. headings and footers… all across both sides of the page, and TeX just cannot do this: 35 years ago, you didn’t have enough memory to have more than one page in memory at once.

Then diglot and parallel Bibles… only SILE does this.

Let people look at an early version, then replaced JavaScript by Lua, and added another input handler as well as XML. Implementing things multiple times helps to separate concerns. Now uses harfbuzz and fontconfig (almost undocumented). libtexpdf, cairo, podofo output.

Frames, in which you write things, are an important concept in SILE. How do we declare frames? Use cassowary constraint solver. Drop caps are easy! Embedded programming language. People want to use their LaTeX packages… no you can’t, and that’s a feature. The macro facility is deliberately limited, to force you to write Lua code. There’s already a LuaTeX community.

The core of SILE is about 3000 lines of Lua, most of which is the justification algorithm. Much of what is in the core in TeX is in packages in SILE. You can subclass the typesetter object, overriding methods. You can have two typesetter objects on the page (for two columns) talking to each other. Examples: various multi-column Bibles, an automatically-generated Greek dictionary.

Things he learnt

When he translated from JavaScript to Lua, it was more a change of notation than a rewrite. The libraries are interesting. Lua is a good base for a really good programming language. All PDF libraries suck; TeX’s is least bad, and he’s trying to make it stand-alone. A system which can be extended in multiple dimensions cannot prevent conflict between extensions. Hacker News gets a lot if interest to the project, but only got one pull request. Avoid buses…. good community is important, he’s still important for building the community.

Technical goals

The core is largely there
– vertical typesetting
– pdf outline features
– split off libtexpdf

Many things to do in packages. Need to talk about community goals. Wants to see five packages by other people before he does another release — see github wiki.

Leihs, the leading free equipment booking system

Originally in German in the code, and used a changing platform.

Internationalize things from the start, not later!

Tried rspec, then rspec story runner, then rspec + cucumber, then just cucumber. Parallel testing took 9 hours down to 23 minutes that one of the team wrote (cider CI).

Next mistake: not having a UI person on the team. Got one later, improved things. Another mistake: building specifics into the system.

Should write a glossary defining an agreed meaning of each term you use in writing the system. Make sure management understands what free software is. Get authorization for time talking to community. For public sector: point out the taxpayers have paid for it, so should get it. Learn to say no. But first have an idea of where you want the project to go, otherwise you’re just being a jerk.

Data about your favourite community

Tracking: the Grimoire library.

Open projects produce massive data; how can we take advantage of this. Is it useful to analyze my community?

Transparency db layer for metrics grimoire. Based on grimoire output SQL ddbb) Reuse code. Developed in R, migrated to python.

Metrics: source code: commits, authors, branches, companies etc; then demographics, demographic changes, timezone; code review (gerrit, github), merges, abandons, people, time to close, etc; mailing lists: who asks, who replies, what are the longest threads, etc; Q&A e.g. stackoverflow; downloads, wiki use, etc.

Filters for the metrics. API with four methods e.g. aggregated numbers.

OpenMotics: Open source home automation

(Very well-attended.)

Integrated lighting, switching, heating and cooling per-room, power measurements, automation with sensors. Open software and hardware. Started as someone’s hobby project, open sourced two years ago as they think the integrated (expensive) and off-the-shelf systems (hard to integrate) are a broken arrangement.

All about choice: DIY: schematics and PCBs online; buy modules: open hardware forces fair prices, easy to calculate what it actually costs.

Integrated systems maintenance by a professional with a special device.

Manuals for installation by DIY users or electricians; easy-to-use web interface to configure.

Customization of closed systems is limited. We have customization on all levels, e.g. python plugins, or can modify the main software, or even the firmware of the IO modules. Can create your own hardware.

Modules have bootloaders so they can all be updated.

Can interface to other devices over serial ports or ethernet.

Keynote: Living on Mars: can we open-source a society?

By a physicist candidate for the project.

What has open source software to do with a mission to Mars? The project has open source firmly at its heart, to make sure there are no technology problems.

– the apollo effect
– why mars?
– how do we reach Mars?
– the Mars One mission
– open sourcing a society: martian society’s implications for earth society
– questions

The Martian day is just right for people! Temperatures can get into the earth range. There seems to have once been an ocean and more atmosphere, but lost the core heat and magnetism. Terraforming? About 8 months to get there by Hoffman transfer orbit. You can take a lot less if you want to have enough fuel for a return trip. Selecting the right people (who will stay sane and not fall out with each other) is all-important.

At last, I go to the Taizé meeting in Prague

Soon after I heard of the Taizé movement, I saw a notice about the New Year’s meeting in Prague in 1990. Unfortunately, the local contact was someone in my parish who didn’t like me (OK, I fancied her, and she didn’t fancy me back and didn’t want me to be able to go) and she didn’t put the notice anywhere where I’d see it until it was too late, and I felt very hurt, and as I was at a vulnerable point then (I had fairly deep depression at the time), it became something of a formative experience; leaving someone out of a privately-invited event is one thing, but taking on yourself to decide who can go to a public event is quite another. I went to the next couple of New Year Taizé meetings to try to make up for what I had missed, and after I recovered from the depression, I did visit Prague some time later, when a good friend of mine was there learning Czech, and that healed some of the old hurt, but something in me still hankered after going to the Taizé meeting in Prague if it ever happened there again. I did get an interesting chain of connections from that visit, too: I made a new friend on the coach from Brno to Prague; a few years later an old friend living in Lisbon invited me to the Taizé meeting there, but I was unable to go that time; then my new friend from Prague moved to Lisbon, and invited me to visit her there (which I did); a pleasant aside to the main story of going to the Taizé meeting in Prague.

So, when last year I spotted that the meeting was returning to Prague, I was delighted, and of course wanted to sign up for it, only to find that there was now an age limit, which I was by now some way over. But local people, and group leaders, of any age would be allowed to attend, and I decided to book myself a holiday in Prague at that time, and try to slip in to at least one service of the meeting, hoping I wouldn’t be noticed and ejected, so I could feel I’d made at least a token attendance at last. (No reason for the age limit was given; I guessed it was probably that people often get more confident as they get older, and might take over the discussions, not letting the young adults (who the meeting is aimed at) get a word in edgeways; or possibly to prevent the development of a group who come back every year for life. I wasn’t expecting to join in any discussion groups anyway, nor was I planning to go any other years, and, thinking about it, I became aware that my concerns are probably no longer the same as those of younger adults.) I booked travel and a room at a guesthouse, somewhat worried that I might not be able to take even a token part, but feeling that I owed trying it to that very upset 20-something who someone so pointedly left out all those years ago.

The guesthouse

The guesthouse

I found my way to the guesthouse and checked in in the evening, and the owners were very welcoming and helpful.

The square, where the bookshop is

The square, where the bookshop is

I arrived the day before the meeting started, and my first trip to the city centre included an aim of heading straight for a clothing shop to get myself a warmer hat. Going directly to the clothes shop from the metro station didn’t work out, as Central Europe’s largest bookshop was lying in wait between the two, so I came back from that morning with a Czech-English dictionary and a warm hat.

The basilica

The basilica

The notice in the Basilica

The notice in the Basilica

Wandering around that afternoon, I looked around Vyšehrad (which was in easy walking distance of the guesthouse) and saw that the Basilica (large church) had notices about the Taizé meeting, so I noted down the times, and decided to try turning up there for the first service.

When I arrived at the church the next morning, I was relieved to find they hadn’t introduced anything like festival wristbands, and I could just slip in quietly. It was wonderful to take part in something in some way equivalent to what I had been left out of so long ago. (Not of course that this was logical; it was not equivalent to that person having chosen to include me, but emotions aren’t rational, and this was a good step in closure.)

The first service of the meeting

The first service of the meeting

After the service, the parish priest started to arrange people into groups for discussions, and I thought of slipping out then, to avoid rubbing in that I wasn’t actually part of it and was officially excluded, but I’m glad I didn’t, because at the end he made arrangements for “anyone else”, and so I found I could join a discussion group after all and nobody minded, and I did in fact feel I was fully taking part in it.

Walking down to the discussion

Walking down to the discussion

The centre for the meeting was at an exhibition centre on the edge of the city, and I went for evening prayer there one evening, but didn’t return the next evening; the great crowding in the transport partly cancelled out the peace from the destination; and (perhaps showing my age, or years of annual retreat weeks in a silent monastery and attendance at a particularly quiet Quaker meeting) many people’s idea of silence before and in the service was rather laxer than mine.

I went to some of talks that were on the programme; I noticed at one that the risk of older adults being insensitive and taking over the discussion was a real one, so took extra care not to do likewise.

A shiny piano, after the concert

A shiny piano, after the concert

I also went to some events that were not part of the Taizé meeting, including a concert (with a very shiny piano).

Before the celebrations

Before the celebrations

On New Year’s Day, I looked at the preparations for celebrations in the city centre (lots of police and ambulances on standby) then went up to Letenské sady (Letná Park) for the city fireworks (it was also the location used instead of the exhibition centre, for the original Taizé meeting in Prague).

In the cathedral before the service

In the cathedral before the service

The quiet after the service

The quiet after the service

After that, I walked to the Cathedral for the service there, which was very well-attended. The atmosphere was wonderful, with a sense of expectation that encompassed both calm and excitement.

In the cathedral after the service

In the cathedral after the service

I stayed for some time after the service, joining in the quiet prayer, before walking through the Castle area down to a tram stop, and travelled back by tram and metro to Vyšehrad to join the Taizé groups I had been with for watching the later fireworks, and a celebration in the local centre for the meeting.

On the way to the final service

On the way to the final service

After the final service

After the final service

At the final service of the meeting, someone gave me a spare booklet of the songs (he had one in English, and one in his own language), and that somehow meant a lot to me; it filled the rest of my feeling of having taken part (no matter how unofficially).

After the Mass

After the Mass

The parish priest of the basilica put on an extra service after the end of the official meeting, for those who didn’t have to rush for their journeys home: a Mass, in the Rotunda (a small circular church) — and for the first time, someone offered me her chair, which stung very slightly for a moment, in the sense of making me feel older, but then I realized it was a very appropriate way to step into being seen as older (or at least, not young by some standards) and into another stage of my life: one in which being pointedly left out of having gone to a Taizé meeting in Prague no longer applied.

River, bridge, castle, cathedral

River, bridge, castle, cathedral

I had some time to explore parts of Prague after the meeting, as my flight home was the following morning.

I’m very glad I went; it provided good overall healing of one of the things that hurt me most of all in my life, and a lot more healing has come since then. This is of course all very much a matter of emotions and not rationality; it was not, for example, the same as going back in time and this time being included by the `friend’ who left me out, nor the same as her having been minded to include me; but as well as the direct healing, it did also reinforce my realization that there was only one person who didn’t want me there, and had I managed to get there the first time, no-one else would have not wanted me to be there.

The one thing that remains is that I would still like to go to a newly-freed country, but that could yet happen — I hoped there would be an echo of the celebrations of 25 years of independence, but that had all been done in November; I may have missed the Czech celebrations but I’ll still in time for the Albanian 25th anniversary of independence; and there are still two countries not freed from communism, and several nearer natural states that would like to be freed from the larger states that they have been forced into being part of, and when the first of those gets its freedom, I’ll head there as soon as I reasonably can!

More Land Rover work: the tandem wheelarches

With a bit of subcontracting (for TIG-welding of aluminium, as well as the folding of it in a brake press), I’ve got Marmalade’s treadplate wheelarches built, and a lot of treadplate rivetted onto the sides of the vehicle and welded to the arches to stabilize them. With a bit of brachiation, it’s now possible to get from any door to any other door or to the roofrack, without stepping on the ground; potentially useful if I park or camp somewhere prone to flooding or mud.

A wheelarch, still shiny

A wheelarch, still shiny. This is too blingy for me; I’ll have to paint it soon.

Of course, I painted them to match.

A painted wheelarch

A wheelarch, painted to an approximate match (well, red, anyway).

I’ve also been doing some work on the tent cover, which is made from a short wheelbase Land-Rover roof that I shortened further and widened. I’m partway through wiring it up; it has a brace of solar panels, one for the main battery and one for the camping battery; and it has an LED strip on the underside (because, LED strip). I’ve changed the support legs, so they’re now all solid box-section steel (originally some of the were just metal pipes); and the rear ones are now guided on the way up, to help stabilize the cover. When I’ve got the lift handle done (another TIG-welding aluminium job), I’ll put a camera (built as a reversing camera) into the end of it, facing forwards, as that’s the highest point of the vehicle, so that I can see whether I can fit under an obstacle such as a low bridge or a garage door; it should also be useful for checking that roofrack loads aren’t shifting too much.

Inside the cab, I’ve at last fitted the Raptor Console I bought a while back, and shortened some of the wires behind it. I’ve still got to shorten the wires between it and the fusebox, before I can finish enclosing that part of the works; once I’ve done that, I can then put the fusebox cover back on, along with the little litter bin that slides onto it.


Get every new post delivered to your Inbox.