Last week seemed to fly by in a blur of action and unprecedented productivity, and this week…did not. The Bank “Holiday” may be at fault for interrupting our flow. Or perhaps the weather made gardens, allotments and rum-based cocktails more appealing than shuffling pixels in and out of GitHub. We did try to get our heads down, but no one was really feeling it. Better luck next week one hopes.
After several weeks of email tennis with Mr Evans, Librarian Jayne and Michael at last handed in homework that was not destined for the waste paper basket. Friday morning saw their general purpose decision map met with a cry of, “By Jove, I think you’ve got it.” ‘Finally’ would seem to have been politely omitted. They hope to roll out the changes approved by David and Paul shortly. Thanks both.
Friday morning was to provide a first opportunity to take a stab at the super affirmative procedure. At least, that’s what calendars said. But confusion reigned and, following a five minute chat, both Librarian Jayne and Michael decided it was all too hard for a sunny Friday morning. So instead they turned their attentions to the composite draft procedure first made famous by the Census Act 1920. Composite procedures combine negative and affirmative elements in some parliamentary chimera that strikes fear into the hearts of librarians and computational experts. This year, the Commons half of the negative half of the procedure saw two prayers tabled against the SI; neither were taken into consideration for debate. So only the affirmative aspect got the debate treatment. We were less sure what had happened when the Census SI met Parliament in decades past. And as ever, we aim to be compatible with time in all directions. So Jayne rootled around Erskine May and its close Lords’ equivalent, the Companion to Standing Orders, in search of anecdotal evidence of what happened to previous Census SIs. Unfortunately, her rootling met with little in the way of success. Erskine has a short paragraph on composite procedures, and a sentence under negative procedure in which we are told, “Power has, extremely rarely, been given to both Houses to resolve against part of an instrument subject to annulment, for example the Census Act 1920”. Adding next to nothing to our knowledge. The paragraph on composite procedure however does cite a few historical debates. So Jayne dived into Hansard and found three occasions - 1950, 1960 and 1965 - when prayers were tabled against the Census SI. In all three cases, rather than have two debates - one for the affirmative half, one for the negative - the Speaker brought them together into one debate. And in all three cases, the question on the approval motion was put first with an opportunity to debate the prayer following hot on its tail. Though in all three cases the prayer motions were withdrawn before the question on them was put. This led to Jayne and Michael spending Friday morning poking at pixels in order to allow one debate on both negative and affirmative motions in both Houses. And indeed separate debates should either happen in isolation. Time has been pencilled in for Monday to double check and tidy, and early efforts are published. If there happens to be anyone reading with experience of past forays into composite procedure, do please take a look. We defer responsibility for any resulting retina impairment. And we’re still on the lookout for anyone with experience of clerking a Census SI. An email has been dispatched to David and Paul in case they have any recollection. If you - or someone you know - has dealt with previous Census SIs please do get in touch.
We start this section with a confession that last week’s update contained a glaring inaccuracy. Michael misread Librarian Jayshree’s email update on progress adding sitting and adjournment days to our collection of Google calendars. His eyes read January 2019 whilst his brain understood 2020. We don’t yet have all the data for last year, so it’s not yet possible to test our work. Apologies to anyone who clicked on the form and got back gobbledegook. This is the price you pay for having a computational expert with a short attention span. Nevertheless, Jayshree continues to add dates to calendars and we hope to be in a position to test - and probably tweak - our calculation logic next week. In the meantime, Robert and Michael continue to make changes, push code and slurp in Jayshree’s calendar data. If you do click any of the buttons, please be aware that the answer you get now will most probably differ from the answer you get in five minutes. And both answers will probably be wrong. We’ll shout Journal Office colleagues when and if we think we’ve reached the point where testing will be useful.
In terms of the actual timing of eggs, Michael has added a calculator for Commons only made affirmative Statutory Instruments. Again we must stress, you can press all the buttons you like but the date returned will not be accurate. If indeed a date is returned. Michael had intended to add a calculator to cover Legislative Reform Orders, Localism Orders and Public Bodies Orders, but got confused as to whether days during adjournments of less than five days were counted. An email seeking clarification was dispatched to Journal Office Jane and clarification followed in short order. Unfortunately, the clarification came with the caveat that “Lords virtual sittings don’t count so some weekends break the flow”, which has left both Librarian Jayne and computational expert Michael quite baffled. More emails are likely. Treaty egg timer work has been postponed to next week. For some definition of ‘next week’. The treaty definition of ‘day’ means no one’s really looking forward to taking this one on.
Steps forward are ever accompanied by steps backwards. For the second time in a fortnight, Michael managed to check his Google API credentials into GitHub. Occasioning a very cross email from Google and a mad scramble to update his API keys. This is pretty much clown car level calamity. Or a schoolboy error, as Michael likes to call it. In an attempt to avoid further pratfalls, he decided it might be best to explore Heroku’s config options and happened upon this Heroku Google applications credential buildpack. Simply create a config VAR called GOOGLE_APPLICATION_CREDENTIALS with a value of google-credentials.json and another VAR called GOOGLE_CREDENTIALS, paste the JSON that Google has given as your credentials into the latter, and everything is taken care of. Which is brilliant. Or would be if it worked. Which it doesn’t. Should any reader find themselves in a similar predicament, you’ll be pleased to know that the Heroku Google cloud buildpack involves more typing, with every variable in the JSON having to be set by hand, but does in fact work. So that’s good. Michael is hopeful that his inbox will in future contain fewer emails calling him an idiot. Far fewer. Tending toward zero perhaps.
The week saw two egg timer related Skype calls. Or was it Zoom? We forget. Both involved Librarians Anya and Jayne and computational experts Robert and Michael. The first was on Wednesday when they met to push pixels around and chat through how the duties accompanying delegated powers described in the legislation model might feed into the laying duty described in the laying model and the procedure duty in the procedure model. If the egg timer ever proves itself - which is still something of a 50/50 - we’ll need a means of identifying a clock start step and a clock end step and a way to tie the two together. We’ll also need to feed this model with the correct way to count days and the correct number of days to count. It cannot be said that the meeting really solved anything, but they feel they came away with a better understanding of the problem. Which is not nothing. They look to the day when they can just point to a power expressed by Mr Sheridan, gobble up accompanying duties as data and feed that into their egg timer. But that might be some way off.
The second call was spent reading through the calculation code and the monkey patched date model, tweaking the comments to make them more legible. Michael is usually terrible at comments but the team hope that at some point they can sit down with JO Jane and show her the comments and it will make at least as much sense as one of her Word documents. We don’t think we’ll convert Jane from Word to Ruby overnight, but we do have an idea that users of software should not only have confidence in, but also understand what, their software is doing. If you are reading this Jane, you’ll probably have noticed that the two bits of code are linked to above. And we are all too aware of your propensity for clicking things to see what happens. Please feel free to have a gander but be aware that comments are not yet complete so might be harder to follow than would be ideal.
JO Jane kindly introduced Librarian Jayne to Luke Hussey, the Clerk of the Lords Table Office. As reported last week, the revocation of the Abortion (Northern Ireland) Regulations 2020 and its replacement by the Abortion (Northern Ireland) (No. 2) Regulations 2020 had slipped through a procedural crack, with the original instrument being left on the ‘awaiting debate’ shelf. If you’ve been following along from home, you’ll know that last week the team added revocation and replacement steps to both made SI procedures and that all instances have been indexed since the start of the 2017-19 session. Our librarians are now adding revocations as they happen. Off the back of this work, and to help prevent future crack slippages, they’re running a daily SPARQL query to check where the revocation step has been used. Every time they flag a new instance an email makes its way to the Lords Table Office, letting them know which SI has been revoked and whether it had a straight replacement.
Jayne has also extended the offer of our extensive librarian querying skills. Luke is having a think about where else the combination of librarians and SPARQL might be able to help meet information needs. Every day in every way, the data platform as a tool for procedural offices makes more and more sense.
Robert and Michael’s tiny chisels took a break from model comments, turning instead to how to define our interface model and what that means for the looseness or tightness of our model coupling. They came up with eight options, ranging from no coupling and no interface definitions to the one big model approach that neither of them like. For now they think they’ve settled on option 6: keep the individual models decoupled but provide an interface model defining commonly used classes. Then use that as an equivalency hub which points out to uses of a class in other models. There was an open question about whether they’d also define common superclasses centrally and make all inter-model subclass statements point to those. But they came to the conclusion that they’d leave off doing this. At least that’s this week’s plan.