We started typing these notes shortly before the break with every intention of wishing our reader a very happy Christmas. But shortly before Christmas is not a good time to concentrate on anything and we promptly ran quite out of steam. For that reason we kick things off with a hearty and belated cry of ‘Happy New Year’ together with a set of notes best described as a cut and shut of 2024 weeks 50 and 51 and 2025 week two. Or, all the joys of the run up to Christmas and all the lows of the inevitable return to work. We’re skipping over 2024 week 52 and 2025 week one; famously dedicated to the cause, even we need the occasional period of rest and relaxation.
No matter how long you spend planning for a general election, you will never be fully prepared for a general election.
No general elections. Also, if people could hold off on machinery of government changes and by-elections, that would also be appreciated. Thank you.
Way back in 2022, we started work on mapping legislative consent motion procedure in the devolved legislatures. That work smacked into a brick wall when our poor old procedure editor application failed to cope with the notion of public bills. A combination of that and having nowhere to publish the data put paid to early dreams. Luckily, our Jianhan stepped in to fix the procedure editor problem. And our ‘procedure browseable space’ ™ looks on track to fix the nowhere to publish problem.
Unfortunately, things have moved on since 2022. Especially in Scotland, where standing orders covering all things LCM have been updated. Updates to standing orders mean updates to maps, but, quite frankly, we didn’t know where to start. A quick call with a colleague from the Scottish Parliament put us mostly on the right track, though still left us with questions. And who better to answer such questions than Researcher Graeme?
Which is why, early one Monday morning - well 11am, but that’s early for us - Librarian Jayne and her computation odd job man Michael, found themselves poring over procedure maps with Mr Cowie and coming to a conclusion or two on what needs to change. “We could use some maths there,” said Michael. “I’d advise against using maths,” said Graeme, “this is politics”. It turns out that, should a legislative consent memorandum be lodged, it will always be scrutinised by the lead committee. But, somewhere offstage, politics might be happening. And the politics might result in a revised memorandum. And the lead committee might choose to issue a report covering both the old one and the revised one. Also, a legislative consent memorandum usually leads to a legislative consent motion, except when it doesn’t. You start to see why simple sums might not be helpful here. Whilst mapping procedures is perfectly possible, it’s always best to stop short of actual politics.
We typed this not because we think our dear reader might be interested, but because it happened just before Christmas and we might have forgotten it if we didn’t scribble it down somewhere. Welcome to the mind palace.
Back on the subject of our nascent ‘procedure browseable space’ ™, Jayne and Michael have made a fair few changes. Last time we checked in, we were roughly halfway through adding views under /procedures. This time out, we’re delighted to report that that particular branch is approaching complete, gaining new listings for both routes in a procedure and clocks in a procedure. That said, we continue to experience issues listing calculation styles and calculation styles for a procedure. Should you click and see an error page, that will be why. Michael continues to work with his partner - Jayne - to rectify this matter.
For reasons best known to himself, Michael also took the opportunity to add QR codes to our work package pages. Fans of a particular statutory instrument or treaty may want to print them on tshirts, he explained. At the time of typing, they’re still there. Whether they’ll survive a takedown notice from Librarians Anya and Jayne remains to be seen.
Perhaps more ‘excitingly’ - at least for us, we lead dull lives - we’ve also added a new page to check all the steps in a procedure have the appropriate number of input and output routes, a feature that exists in our procedure editor application that would be difficult to replicate in its putative replacement. Jayne spent a number of hours checking every combination of everything that could possibly go wrong, and nothing did. So that’s good.
In less good news, a quick glance at the Heroku logs revealed the application was experiencing all kinds of memory issues. Much like its creator, the cruel amongst us might suggest. This came as something of a surprise given only two people have been clicking on the blasted thing. Luckily Shedcode James was on hand and spent a part of his Christmas holiday staging an intervention. It turned out that some ‘search engine optimisation’ ‘experts’ in ‘America’ - never a great combination - had been hitting the thing with gay abandon. What they hope to learn from parsing statutory instruments subject to parliamentary procedure is anyone’s guess. Obviously, their repeated proddings merely exposed the symptoms. We can’t blame them for the underlying cause. Tempting as that may be. James pointed out that Heroku recommend adding a Procfile with a certain Puma configuration to prevent a whole bunch of processes being forked, each process consuming a chunk of memory. He’s dived into the inner workings of the Puma configuration and done just that. Technically speaking, such interventions are known as jiggerypokery. Is it better? Most definitely. The Heroku logs no longer appear to max out at 120% memory. Is it fixed? Probably not completely. More work beckons. Sorry James.
In procedure adjacent news, James has also started work on modernising - or hardening, as Young Robert might say - our beloved egg timer code. Before cracking on with improvements, he’s been concentrating on documenting what’s there now. Which means the dear old egg timer finally comes with a rather handy readme. Most useful for all those considering creating an egg timer of their own. Thanks James.
In support of our procedure mapping work, we’re pleased - nae delighted - to report a couple of models fresh from the paint shop. The first is a heavily revised and hopefully improved version of our procedure model, the second describing all things standing order related. Clerkly eyes are more than welcome, though the procedure model in particular comes with the caveat that it’s all rather abstract.
The small slice of the thesaurus dealing with Library researchers has had a bit of a spring clean. It’s a branch that hasn’t had that much attention in quite a while, marking some researchers who walked out the door many moons ago as ‘current’ and mapped to Library sections no longer extant. Investigations concluded that neither the ‘current’ flag nor the researcher to section mappings are in use in any external applications, so both have now been removed. Clean and indeed tidy.
Spring cleaning has always proved difficult due to a lack of integration between Library systems. In theory, the Commons Library catalogue also uses our thesaurus, but by means of “imports” and without identifiers - no piping was ever put in place between the two systems, making forking inevitable. Efforts to remove unused terms from the thesaurus have been hampered by the lack of visibility of usage in the Library catalogue. Librarians Phil, Susannah and Caroline put their heads together, and thanks to a spot of sparqling from Librarian Ned the first part of the problem is now solved, with a Workbench report configured to report on usage in Parliamentary Search. 23,516 terms! Librarian Caroline has picked up the baton, with a similar report on usage in the catalogue. Knowing what’s not used being the first step toward removing it. Given the delays in reporting in one system and then the other and then actually doing soemthing about it, we have more delta based race conditions than a squadron of Vulcan bombers.
Librarian Ned has also been busy, updating attributes in the taxonomy to reflect the current list of answering bodies. This to support a particular ‘popular search’ which we can’t link to here, because it’s only available on the parliamentary network. To avoid falling into the same trap with the next machinery of government change, Ned’s also updated our ‘what to do when’ guide to cover all subsequent such changes.
Over in psephologyland, efforts have also been concentrated on backend information management tasks. At some point in the past - seemingly ignoring Sym’s wise counsel - we added Electoral Commission identifiers to our parties table and to the spreadsheets used to populate said table. This to allow both easier integration with Democracy Club and the uploading of the 2019 notional results. Unfortunately, a ‘political party’ - in the sense we mean ‘political party’ - can have more than one Electoral Commission identifier over both time and space. For example: the National Front having two registrations in Great Britain and two in Northern Ireland. For that reason, Librarian Anna put together a spreadsheet mapping our party identifiers to Electoral Commission registration identifiers and we split out registrations from parties.
All well and good, though we still had cause to wonder whether any of the Electoral Commission identifiers contained in the spreadsheets published alongside research briefings were matched to the right party at the wrong time or in the wrong country. Librarian Emily has now taken a look and found a couple of misalignments in the 2010 and 2024 spreadsheets. These are now fixed and the revised spreadsheets have been sent off to Statistician Carl for republication. Marvellous.
If our plans come to fruition, the next major change to the election results website should finally see by-election results poking their heads above ground. Operating under instructions from Carl, we’ve decided to start with by-elections held during Parliament 58. To that end, Librarians Anna and Emily have been tag-teaming information management duties, meaning we now have spreadsheets at both constituency and candidate level. The next step being importing them and deciding how best to expose by-elections in the website navigation. If you tune in next week, we may finally have something to show. Or may not, depending on Michael’s aptitude.
Our written answer - and statement - bots continue to churn out excellent content to both Bluesky and Mastodon. That said, coding efforts kicked off quite a while ago and we haven’t had the maintenance opportunities we’d have hoped for. With Shedcode James on hand, that is no longer a problem. At some point around Christmas, he took out his computational spanner and applied a veneer of professionalism to our efforts. The Ruby version has been bumped to 3.3.6, Rails has been bumped to 7.2, log rage has been introduced to reduce the size of the logs, a Procfile has been added so Heroku doesn’t panic, and the whole thing has finally gained a readme. Thanks again, James.
If you’ve been waiting on tenterhooks for our standing order application to finally go live, we fear you’ll have to wait a little longer. Trust us, we’re getting there, inching ever closer to the finish line. The meat of the matter originated with the Parlrules project, who kindly donated the data they’d compiled in the course of their research. We’d come close to turning this data into a website, when Librarian Claire noticed that paragraph numbers, styled tables and hyperlinks were all missing. Not only that, she noted a difference in paragraph indentation between the logged in view and the non-logged in view.
James once more came to the rescue and both versions are now consistent, and - dare we say - quite pretty. It only remains to continue the work the Parlrules people started and bring the House of Commons standing orders up to date. Once that’s done, all eyes turn to the House of Lords. So not much work then.
The pre-Christmas week saw three more normalisations hit the Rush database happy pile. Though these three were not exactly normalisations as such. When inherited, the database had three columns describing years - one being the year a member stood unsuccessfully for election, one being the year a member stood successfully for election and one being the year of their departure from both their seat and the House of Commons. Because all three fields had been created as text fields - and because being a top quality academic does not necessarily translate into excellent information management skills - all three had managed to accumulate all kinds of cruft in the form of asterisks and footnotes. Librarian Anna took her dustpan and brush to the data, which is now considered tidy. At which point Shedcode James stepped in to translate text fields into integers. Just in case someone feels tempted to add more cruft in the future.
The long Christmas holiday put paid to much in the way of outreach and engagement. And indeed fun and frivolity. Imagine then their relief, when Librarians Anya and Jayne and computational odd-job man Michael, stacked the dishwasher one last time and headed up to Oxford Town to hobnob with the great and the good at the Study of Parliament Group annual conference. Talks were digested - who knew the history of the National Audit Office would be so interesting? - and pubs visited, as is the custom on such occasions. You’ve never seen a happy face until you’ve seen a librarian who’s been stuck at home for a week light a cigarette and take her first sip of Guinness. Sláinte Anya.