Librarian Jayne and Michael had fully and definitely and absolutely determined that this week they’d dive back into the horrors of the Legislative Reform Order procedure map. But lockdown inertia and lingering uncertainty as to whether adding new procedures might cause bits of the website to explode brought that plan to a halt. More luck next week we hope.
On the subject of new procedures, we are definitely still in the market for feedback on our map of the composite procedure. Hitherto known as the hot mess required to get a Census Statutory Instrument through Parliament. If you or someone you know has ever clerked a Census SI, please do get in touch. We’d love to hear from you.
Michael did manage to pull his finger out long enough to do a bit more modelling of the GOV.UK guide to marriage and civil partnerships. He’s now added identifiers to his hand drawn sketch, translated that into a DOT file, pushed the whole thing through Gephi and made another one of these incomprehensible graph visualisations that he occasionally subjects people to, with a misplaced look of pride on his face. Next week sees a meeting between our very own Librarians Anya, Jayne and Silver, and Felisia and Ganesh of the Gubmint Computational Section. They’ll probably want to talk about other things, but Michael does not intend to be distracted from more process mapping. This is his big idea and it’s a been a while since he had one.
Librarian Jayne and Michael met on Wednesday morning to do a little more testing on the egg timer. Michael had been under the impression that treaty period A followed the same logic as Legislative Reform Orders and Localism Orders. And Public Body Orders when they used to exist. Jayne wasted no time in correcting this impression. Apparently the other instruments turn over the egg timer on the day of laying if that is a joint sitting day, or on the first joint sitting day following laying if the laying day is not a joint sitting day … we should probably take a small pause for breath here … anyway, apparently treaties always flip the timer on the first joint sitting day following the laying day and never on the laying day even if that is a joint sitting day. We do hope you’re following this at home. There will be questions later. The upshot of this being, Michael has once again patched up his code and there is now a 7th style of calculation dedicated to treaty period A and only treaty period A. The upshot of the upshot being all procedures so far tested - Proposed Negative Statutory Instruments, negative Statutory Instruments and treaties - all return dates that match those in the SI and treaty tracker websites. So that’s good.
One does wonder whose job it is to invent these similar but subtly different flavours of logic. And why. We pride ourselves on never being computational determinists and being always open to embracing complex adaptive systems. We scowl in the general direction of anyone who sinks to calling parliamentary procedure ‘arcane’. But… but… but… just occasionally you find yourself staring at some of this and thinking: that’s nuts. Why have you done that? Was it even deliberate? Did you try drawing it first? And did you read any of the other legislation? Still, just as Chesterton had fences, we have a selection of eggs and a growing selection of timers. Our role is not to question. Merely to document and look cross on occasion.
The egg timer started life as a Word document of calculation rules written by Journal Office Jane. Michael took one look and thought he’d be able to turn it into code in oh, two or three days. Several weeks later he is still tweaking code and muttering to himself. Starting with the Word document was as good a place as any, and most of the additions to calculations began life as expanded comments followed by changes to code, rather than more code with comments expanded upon afterwards. Which is probably as close to comment driven development as Michael and Robert are ever likely to get. For something like this, they’ve found comments first is a pretty good approach. They’ve probably spent more time writing comments than they have writing code. This means you don’t need to know Ruby to understand what the code is doing. And it also means you can sit down with a clerk and talk them through the code without anyone having to worry about the syntax. So on Friday morning Librarians Anya and Jayne and computational expert Michael met with JO Jane and did exactly that. They talked her through how they populate their Google Calendars, how that data flows to the application, how the monkey patched date class defines different types of parliamentary day and how the calculation code works. This could have gone rather badly, but luckily it did not. Jane confirmed that her spot testing had returned only correct numbers and that she found the code comments perfectly legible. We think in future we’ll take a similar approach with similar code. If the logic comes from the brains of clerks, the code should be open source and should be well enough commented that it makes sense to someone who’s never written a line in their lives.
Next week, Jayne and Michael plan to do more testing around bicameral made affirmatives, although we still have some difficulties testing everything. LROs and Localism Orders are tricky to test because we have no data in the platform to test against. And whilst treaty period B exists as a concept in legislation it has never actually happened in reality. So that’s hard to test too. The trickiest testing is for Commons only SIs. These should follow calculations based on Commons sitting days only. And we have written the logic for this. But the Commons Journal Office has always used JO Jane’s calculations which include sitting days in both Houses. Despite being rather stupidly busy, JO Jane has offered to do some egg timer testing against the dates she calculates a Commons only scrutiny period would end on. We have fingers very firmly crossed that this will not only work, but provide the Commons Journal Office with more accurate end dates than they currently have access to.
Also on Wednesday, Michael had a Zoom call with Tony, one of the friendly folks working on the Every Politician project, now based on Wikidata. Tony and Andrew have recently turned their attention to making a better fist of describing Members of the House of Lords. Michael talked Tony through how we handle group associations in our agency model and how we specialise that for House membership. They spent some time chatting through the various types of House of Lords seats and how incumbencies map to them, as well as discussing the rather challenging pop stack bishop problem. They headed off on a brief tour of both the election and the parliamentary bloc models and chatted about the horrors of having the Lord Speaker as a political party. Michael emerged with a better understanding of Wikidata modelling and finally clocked that what Wikidata calls properties are in fact also classes. Which in retrospect should have been self-evident but hadn’t been. We still have plans to map both models and instance identifiers where possible. With a resurrected data platform and decent mappings we should be able to push out changes to the world without ever having to worry about something as old fashioned as a website.
Robert has been on holiday this week. So Michael has been bored and lonely and pining. Robert is on holiday next week too. If anyone would like to chat to Michael, he’d appreciate it enormously.