16 Jun 2017

Journal: June 16, 2017

In which I visit BarnCamp after surviving the UK general election, read The Handmaid's Tale, and Pyramids (discworld #7), and revisit my progressive enhancement project.

BarnCamp 2017

Last weekend, after the stress of the UK general election, I decided to clear my head and take a long weekend to visit BarnCamp in the beautiful Wye Valley. It's a fairly small unconference-style tech event comprising of a barn (surprise, surprise) and a couple of large tents. The attendees either camped on-site or brought their live-in vehicles.

While there, I attended sessions on cider making, security for activists, computer re-use, anarchy in the GR and others - but mostly I enjoyed being outside and sitting around the campfire. I was not in a particularly sociable mood, so it was a pleasant surprise to find a couple of friends from Sheffield there too.

Progressive enhancement

I'm also taking a break from my P2P event store project, so in the meantime, I've been re-visiting my experiments with templates for progressive enhancement.

The original solution suffered from some rough edges. It used a handlebars-like syntax, which tempted you to break up the HTML structure with template tags:

<option {{#if item.active }}selected{{/if}}>
    {{ item.name }}
</option>

This bamboozles the patching code, since it only operates on whole elements. To keep the template embedded neatly in the HTML, I'm now experimenting with an XML-style syntax:

<template-each name="items" in="items">
    <li>{{ item.name }}</li>
</template-each>

This also maps more cleanly to the tree-based patching under the hood, so I've been able to delete more code than I've added. I'm also experimenting with Proxy objects as a way to detect changes to the template data instead of relying on immutable objects.

Books

The Handmaid's Tale

The Handmaid's Tale
Figure 1: The Handmaid's Tale

I finished reading The Handmaid's Tale by Margaret Atwood. To be honest, I failed to really connect with it. I failed to connect with the main character, Offred, because, although there were some good lines, I often felt they came straight out of the author's notebook rather than Offred's internal monologue. It's jarring. I also failed to connect with the wider world because it lacked detail, perhaps because it focused on poor Offred's blinkered view of it.

But I don't want to sound too harsh, it's an interesting premise and I suspect others will not have such difficulties.

Pyramids

Pyramids
Figure 2: Pyramids

I also raced through Pyramids by Terry Pratchett. Not my favourite from the Discworld series (see Wyrd Sisters or Mort), but they've all been fun reads so far and this was no exception.

Emacs

I've been using the undo-tree package for a while now. It's immensely useful when you accidentally tie your undo history in knots.

In Emacs, each undo also gets added to your history. This is useful, because it means previous edits are always somewhere in your undo history, however, finding them can be a pain. The undo-tree package records and visualises this history as a branching tree, so you can easily navigate to the correct edit.

Links