Jez Higgins

Freelance software generalist
software created
extended or repaired

Older posts are available in the archive or through tags.


Follow me on Twitter
My code on GitHub


Friday 13 April 2018 The Forest Road Reader, No 2.2 : Schemes of Work

So arrived, via a trip with Daniel to the University of Exeter, which I would totally go to if I was unexpectedly 18 again, in Bristol for the ACCU Conference. Tomorrow, Chris and I will deliver the talk which we had not and have not fully prepared. I've been to this conference 13 or 14 times, perhaps more, in the last 18 years and never arrived a day early before. I swore to myself I wouldn't end up five pints down before it had even begun, but, well, let's just move on.

The talk which Chris and I hadn't etc etc went off pretty well, if slightly shambolicly. Chris brought all kinds of nice props - an actual Amstrad (although sadly we couldn't hook it to a screen), some magazines, his A level coursework, and more. I sort of drove it, and we extemporised on various things we'd learned over our respective careers. Our lack of preparation bit us in the bum a bit as we had far too much to say, even though we'd missed out or had simply forgotten lots of what we'd intended, and pretty much crashed the bongs, ending by very briefly flashing through the code we'd written. In my original sketch, I imagined that would take half the session but it got perhaps 5 minutes. People, more of whom came than I was expecting, seemed to enjoy what we'd done though, so that's the main thing. Thanks to them for coming, and thanks to Chris for playing along.

It's almost always true that when you speak at an event there's at least one other talk on that you would like to see yourself. This year, the talk I most wanted to see was Andy Balaam's session on Scheme. He's always interesting, and I bet this was session, which took place in the room next to Chris and I as we bumbled our way along, was great. By way of consolation, I did have a lovely conversation with Andy the following afternoon. The conference dinner was the same evening during which Rob told me about parametric oil rig design, which sounds just like magic frankly, and Jim talked, with joy, about the wonders of the early semaphore and telegraph systems. Those Victorians, man, they were amazing.

As I write, I'm on the concourse of Temple Meads Station, another example of Victorian audaciousness. A 227 tonne lump of turn-of-the-millenium train will be trundling me home, on this our 25th wedding anniversary, soon.

  • Shout out, as the young people have it, to my boy Jon, who has left academia to become a big-data-web-analytics-tech-wonk. It sounds like he's enjoying himself, which is good, but I'm also sorry he felt he couldn't stay at his university job. We need good academics, and right now we need good digital culture and social media academics more than we ever have before.
  • If you like a nice falafel wrap, and if you don't what even are you doing here, Kitchen of Anatolia and Edna's Kitchen, at the east and west ends of Bristol's Castle Park respectively, are both worth a visit.
  • My man, and we'd both cringe if I ever addressed him as such, Robert Brook has a podcast. It falls pretty squarely in the white-dudes-talking-about-stuff space, but for me it's leaning more to the oh-that's-interesting rather than the jesus-christ-will-one-of-you-get-the-fucking-point-did-you-even-prepare-for-this-at-all end of the spectrum. I accept, though, there's a fine and exceptionally subjective distinction between those extremes.
  • Further ornithological pleasingness - a jay swooping and disappearing into a knot of trees at Moseley Bog, a goldfinch in the pleached limes in by St Peter's Church in Bristol.

Tagged talk, exeter, bristol, accu, and ornithology

Friday 06 April 2018 The Forest Road Reader, No 2.1 : Old Skool

In our house we celebrate Easter as the death of the regular hockey season, and its forthcoming resurrection as the summer league. We marked this over the weekend by eating approximately an acre of spinach, first in the form of kibbeh, then as borek, then the day after that as leftover kibbeh and leftover borek. The kibbeh works really well as burger, in a bun either with your conventional burger trimmings or Levantined-up with pomegranate molasses or spiced yogurt. The borek is just really pretty gorgeous and it's so simple every time I make it I wonder why I don't do it more often.

I'm in the middle of preparing a conference presentation that I'm doing with my friend Chris next week. Ordinarily both of us would be at the tweaking and polishing phase rather than the working out what to say and pulling the sides together stage, but it all came about rather late on and, in truth, neither of us expected our proposal, which came to me in a flash about an hour before the deadline, to be accepted.

Chris and Jez are old and have been programming a long time. You can tell they’re old by their grey hair and unfamiliarity with the works of Camila Cabello, and you can tell they’ve programming a long time by their insistence on proper clicky keyboards and the battered copies of Stevens propping up their monitors.

But once they were young!

Before they were programmers they were hobbyists, spending hours, nay days, nay nights and days, cranking out game after game written in screen after screen of Basic (Locomotive and Sinclair respectively).

Can they take their combined 50 years of software development experience and project it back to 1984? Can they apply test driven development, source code control, and continuous integration to the programming environments of their youth?

Join Chris and Jez as, armed with an Amstrad CPC 464 and a cassette recorder, they attempt to find out.

I chose an Amstrad as our retro-computer of choice because I knew Chris had one as a kid. I never owned one, or even knew anyone who did back then, although I very briefly had access to one during (... counts on fingers ...) the summer of 1993, long after its heyday.

I initially envisioned us just sitting down and starting to code, giving a bit of a commentary on what we were doing, but it's turned into rather more of a kind of career retrospective. The more I've thought about it the more I've found I have to say, which is always a good sign. I've just written quite an impassioned section about the biases I carried (and hope I no longer carry) about software development and towards my work mates. I've no idea what Chris is going to say, but that's going to be part of the fun of it.

Ornithologically pleasing...

  • Nice looking nuthatch bopping around Moseley Bog
  • Saw a greenfinch and a collared dove on the same trip along the canal through Digbeth. Can't remember seeing them there before despite heading back and forth half a dozen times a week every week since last September.
  • A little egret braving the swollen River Rea rapids.
  • Fleeting glimpse of a goldcrest in a holly hedge at the top of St Agnes Road.
  • There's a partial-albino blackbird who lives on the path from the canal up to Curzon Street. Saw him this week.

Tagged hockey, talk, and ornithology

Thursday 05 April 2018 Cooking with Pete: Spinach Kibbeh

Dead simple, really lovely. What's not to like? Make them small and serve as a little finger food with a yoghurt dip for your fancy buffet, make them large and trap them in a bun with salad to give to the kids as burgers, or anything in between.

I got this recipe from an issue of Vegan Food and Living magazine.

Gather up

  • 200g fine bulgar wheat
  • 600g spinach, roughly chopped if the leaves are large
  • 200g plain flour
  • large handful of parsley
  • large handful of coriander
  • a bunch of spring onions, or a finely chopped onion
  • tin of chickpeas, drained and mashed a bit
  • 2 tsp ground cumin
  • 1 tsp salt
  • tsp or so of black pepper
  • 2 tsp of seven spice mix, if you have it
  • 1 tsp of chilli flakes
  • 5 or 6 decent sized garlic cloves, crushed
  • 1 tsp baking powder
  • 2 tbsp vegetable oil

Get a sieve, a nice big bowl, and a frying pan

  1. Rinse the bulgar in the sieve, then let it drain.
  2. Pick the leaves of the parsley and coriander stalks. Chop them up.
  3. Tip the bulgar into a mixing bowl. Chuck everything else in.
  4. Get your hand in there and start kneading. Get everything really well combined - the spinach will start to break up and gradually it will come together into a paste.
  5. If you're not in a rush, pop it in the fridge for half an hour. It will make it easier to work with when you come to fry it up.
  6. To make the kibbeh, break or spoon off a piece, roll it between your palms, and flatten into a fritter. Make the fritters are large or small, thick or thin as you like. You can prep them all ahead of time if you like, but I do them as I go. It's quite sticky work, and you'll probably need to wash your hands a time or two.
  7. Shallow fry in a little oil. They only need a few minutes on each side - maybe as little as 2 or 3 if they're really thin. They'll go a lovely golden brown colour as they cook.

Serve them up with salads, or hummus, or whatever you like. I often do Hugh Fearnley-Whittingstall's merguez oven chips and splodge the spicy yogurt dip over everything. They're also delicious with some pomegranate molasses dribbled over them. Daniel, fusionista that he is, likes them in a burger bun with sriracha.

Tagged recipe, and cooking-with-pete

Saturday 10 March 2018 First ice cream van of the year ...

A longitudinal study

Recorded this year at 16:17 on Saturday, 10 March. It was raining.

Note: unofficial field observation on 23 February.


The full ice cream van data is available in this spreadsheet

Previous years:

Tagged icecream

Thursday 31 August 2017 Functional Programming with Rillet: Roman Numerals

const of = require('./rillet.js').of;

function roman(number) {
  return of('I').cycle().take(number).join('').
    replace(/IIIII/g, 'V').
    replace(/IIII/g,  'IV').
    replace(/VV/g,    'X').
    replace(/VIV/g,   'IX').
    replace(/XXXXX/g, 'L').
    replace(/XXXX/g,  'XL').
    replace(/LL/g,    'C').
    replace(/LXL/g,   'XC').
    replace(/CCCCC/g, 'D').
    replace(/CCCC/g,  'CD').
    replace(/DD/g,    'M').
    replace(/DCD/g,   'CM');
} // roman

Here's another little bit of functional programming silliness that, again, I've adapted from some Clojure I found in a tweet -

I mentioned before that Lisps are inside out which, of course, this example is almost designed to show off. My JavaScript version is, I submit, undeniably easier to read and understand.

Presentational issues aside, this way of calculating Roman numerals is new to me and I love it. I was given a close cousin of this problem, given a cash amount find the smallest number of notes and coins needed, as coursework for my CSE in Computer Studies back in 1984. I solved that using repeated subtractions, and that's probably where I'd start today. This approach, treating it as a string substition problem, while not necessarily "efficient", is just beautiful.

Tagged code, rillet, javascript, and fp
Older posts are available in the archive or through tags.

Jez Higgins

Freelance software generalist
software created
extended or repaired

Older posts are available in the archive or through tags.


Follow me on Twitter
My code on GitHub