Category: civil service

Viva Blob!

It looks like the experiment is over.

The job of Head of the Home Civil Service is being re-integrated with Cabinet Secretary and No.10 Downing Street PS. There’s also going to be a “CEO” who will perhaps be recruited from the private sector, although no names that aren’t civil servants have been put forward. But this job doesn’t have any permanent secretaries reporting to it, so it will be pretty harmless, as is the “strategy unit” run by a Johnson relative.

The original reshuffle was quite radical, aiming at de-emphasising the core civil service, importing the psuedo-private sector property guy Kerslake, and that hardy cliché, “delivery”. It looks like Heywood won.

It’s been a good week for the Blob, which is nothing but a good thing.

lost in the incomprehensible maze

I’ve said before that the coalition tends to mistake propaganda methods for policy methods. See this post on Damian McBride’s blog for confirmation. Specifically, Steve Hilton appears to have abolished the No.10 future events grid, taking it to be an infernal machine invented by Alistair Campbell and the civil service, and then been surprised when he struggled to keep up with his paper-flow.

two madmen fighting over which one’s voices are right

This Peter Oborne piece is being read as an insight into a power-struggle between George Osborne and Iain Duncan Smith. I think it is more interesting to note that whatever the politics between them, both of them believe things that are completely impossible. This isn’t a fight between two men or two factions, it’s a fight between two delusional systems. Rather than two bald men fighting over a comb, it’s two madmen fighting over which one’s voices are right.

IDS apparently believes that both unemployment and poverty are caused by perverse incentives in the welfare state and it’s all Gordon Brown’s fault:

He believes that the vast majority are victims of a cruel system, partly created by Gordon Brown, which creates perverse incentives that encourage men and women to stay away from the job market

Work through the logic – we get rid of the incentives, they stop “staying away”, and re-enter the job market, which absorbs them into jobs. I think I see the flaw, don’t you? It’s Mike Konczal’s Job Helmet GIF.


Strap on your job helmet, squeeze into a job cannon, and fire off into job land where jobs grow on “jobies”. (I think it means something else in American.) There are about five unemployed people for every job vacancy, so even assuming an absolutely perfect success of policy, this can’t possibly do more than tinker around the edges, at an estimated cost of £9bn and doubtless rising.

This is not a minor, technical point. Whether the labour market can absorb people “activated” to search for jobs, or whether they are out of work because there is no work – this is the most important thing someone in IDS’s position needs to know. It is as if the Transport Secretary thought trains ran on chocolate, or the Defence Secretary was planning to issue spears.

Meanwhile, as far as anyone knows, George Osborne simply doesn’t accept that unemployment exists as such. The market ought to clear instantly and seamlessly and therefore it’s reality’s fault if it doesn’t agree with theory. And he doesn’t know that most of the DWP budget is either in-work or pensions. Further, he’s convinced that making life nastier for the poor is good PR (whether it is or not) and therefore worth doing.

The problem here is not which one is right, or even which one is going to win, it’s that both of them have departed from reality. And who speaks for reality? Possibly the civil service, acting in this case as the superego, inevitably overwhelmed by the emotional forces of the unconscious. Further, the fight in the darkened room is being described to us by a commentator who is himself very, very strange.

There are, at the heart of this Government, only three majestic ideas. The first is the restoration of the public finances, a task to which the Chancellor, strikingly, does not devote his full-time attention. The second is the grand programme of educational reform, masterminded with such admirable courage and verve by Michael Gove…

Majestic? Verve? Courage? Gove?

If you want tactical politics from this, I’d point out that a) Daniel Finkelstein’s famous gift for tact and diplomacy is alive and well, b) a prime minister who can’t sack Iain Duncan Smith is a poor fish indeed, and c) I think Oborne is wrong in diagnosing an alliance between the chancellor and the civil service.

If, as it seems, IDS can’t be fired, can stand up to the Treasury, the biggest and nastiest institutional force in politics, and can tell the Tory apparatus where to stick its posters, this implies he is getting powerful support from somewhere. (It’s not going to be his vast popularity, force of personality, or brilliant executive ability, is it?) If you believe Oborne, it might perhaps be God, but Mr Thing as the subject of divine intervention is too much for me.

I theorise that somewhere is the civil service. DWP is not a glamorous department, but it is an important one, and most of all it is an absolutely huge administration that controls an enormous budget. The civil servants will also know much more intimately how badly the Universal Credit IT project is going than any of the ministers. This explains why Heywood is opposed to UC. The civil service is pushing back on Osborne-ism, but is also worried that the UC project is a potential disaster. So they are supporting the man while going slow on the method. Oborne, I think, has missed the distinction between supporting the UC policy, supporting the minister, and opposing Osborne. I also wonder if the Lib Dems are backing IDS in opposing Osborne.

Anyway, the superego appears to have won a minor victory, pushing off the LHA cap implementation a few more months, but of course the repressed will return somewhere.

It could of course be worse, but “empowered incoherence” seems to get it pretty well.

A little more on the Project 2.0 and beyond

Here’s a fascinating post on the Conservative Home Tory Diary from one Paul Goodman, complaining about the fact that No.10 Permanent Secretary Jeremy Heywood wants to have ministerial special advisers brought into civil service line management.

The Awesome Whitehall Blog not yet existing, I’ll explain that a special adviser is a political appointee picked by a government minister as part of their personal staff, who is paid a civil service salary and who can sometimes give instructions to professional civil servants. They answer to the minister. Real civil servants report both to an operational manager (in this case, the minister) and a line manager (in this case, the department’s top civil servant, and eventually, Heywood) who essentially represents the civil service as an institution.

Obviously there is the potential for conflict here, and it’s a long-running political theme.

Anyway, cue a massive amount of whining from various Tories who appear to have conveniently forgotten (must be catching over there) that they believe that the presence of numerous special advisers in government and the fact that some of them could give instructions to civil servants is literally the worst thing ever. In 1997-2001, they banged on about this to nausea and beyond. SPADs were corrupting our national institutions and getting us ready to be integrated into a country called Europe, with regions and no fox hunting.

Suddenly, not so much. Could it be it was always a load of bullshit? Surely not.
(I left a comment in this sense, but somehow it doesn’t seem to have shown up – funny that.) But the really strange bit is as follows:

But Sir Jeremy has the Government’s Spad problem precisely the wrong way round. There isn’t too little civil service or Downing Street control. There is too much – certainly in the latter case. (Andy Coulson wanted a media Spad in each department, precisely to tighten his grip.) And there aren’t too many Spads. There are too few, as Tim Montgomerie has said right from the start.

Permanent Secretaries should use their present powers properly rather than be chasing after new ones: after all, the Culture Department’s could have vetoed Mr Smith’s dealings with the Murdoch Empire.

Of course there is a huge story hiding in plain sight here, which is the plan to have Murdoch men embedded in each ministerial office, talking back to Andy Coulson, and presumably getting information fed forward from News International except we don’t talk about that because shut up. I somehow doubt the DCMS would have vetoed anything much had one of Coulson’s Zampolits been imposed on it. Did someone say a parallel civil service?

Meanwhile, meet the Johnson/Policy Exchange gang’s mates.

Request for blog

Here’s a role for a blogger that I don’t think anyone covers. The Whitehall blog. It’s a truism about British journalism, going back to Anthony Sampson if memory serves, that the newspapers cover Westminster politics obsessively but they hardly cover Whitehall at all. When they do, their service is even more conventionalised and less penetrating than usual. Partly, this is because the civil service is better at discretion than the politicians. But it’s not exactly unknown for officials to brief the papers, now is it?

For example, I have an impression that there is a shift of power and influence going on. David Cameron and Francis Maude’s biggest personnel decision so far has been not replacing Gus O’Donnell with another civil servant in the same role. O’Donnell combined the roles of Cabinet Secretary and Head of the Home Civil Service, as most of the postwar top officials did. He was the heir to the apostolic succession of the popes of bureaucracy.

Cameron and Maude decided to split up the job, separating the top job in the Cabinet Office, which controls the central government’s policy-making secretariat and also the Joint Intelligence Committee machinery, the role of Head of the Home Civil Service, which acts as the senior pro for civil servants, and the role of the official responsible for the prime minister’s personal staff. Taking forward a trend that was already going on in the Blair/Brown years, this job was cut out of whole cloth, creating a Prime Minister’s Office with the new domain name and a Permanent Secretary for the PMO to lead it. This job was entrusted to O’Donnell’s heir apparent, Jeremy Heywood.

You guess that one of the reasons for this was to dilute the power and influence of the top civil service. All politicians are suspicious of it, and Tories especially. Why did the civil servants go along with it? Well, a big New Labour obsession was the idea that the traditional divide between policy-making and operational civil servants was pathological. Rather than a strict, and class-associated, divide, they wanted the top civil service to be closely concerned with “delivery”. The institution didn’t like it, and having a long memory is its business.

That leaves a couple of questions. The first is “Did it work?” The second is “Who of the three won?” The answers seem to be “No” and “Heywood”, as far as I can make out. I get the impression that the civil service has regained some influence in killing off the sillier ideas, and I think Steve Hilton’s sudden exit from Downing Street is pretty much entirely down to them. Hilton’s title had been upgraded from director of strategy to director of implementation, pretty clearly suggesting that he would be pissing in Sir Humphrey’s pool. That was before his brilliant idea to sack everyone they couldn’t fit in Somerset House (he may or may not know that half of it is King’s College law school and quite a bit more is an art gallery these days). And Heywood was personally insistent on getting rid of Hilton, something I think we can all “shudder a grateful amen” to. Generally, he seems to be on the rise, suggesting that not only has the system seen off the minister, but also that closeness to No.10 beats institutional bulk and headcount.

Now, what I want is this kind of stuff but with more links and goats and stuff, every week. All right? The traditional answer to this is that someone tried, back in the 1970s, but the pushback was dreadful. Well, that’s another way of saying that it’s the sort of thing that only dirty hippies would do, and that’s precisely what blogging is for.

If I were you I’d do X. But obviously I don’t feel responsible for the consequences

I just got an e-mail from my MP, Lynne Featherstone, regarding publishing the NHS Risk Register. Here’s the important bit.

Risk registers are used by government departments and more generally by private companies to plan for worst-case scenarios. They range on everything from flu epidemics to terrorist attacks. As you can imagine, publishing these documents could cause unnecessary alarm and compromise sensitive information and investigations.

If the Government publishes the NHS risk register, it would then set a precedent to publish all registers. An unintended but dangerous consequence would be that government officials hold back vital information for fear of being connected with bad news. The most significant risks would therefore no longer be recorded, and no contingency plans would be identified.

This is a common argument used by the government against transparency. It is formidably stupid. In what universe is it a good idea to specifically protect the practice of giving advice you are not willing to explain, defend, or take responsibility for? I mean, this is cracksmokingly insane. Let’s work through the process.

So I’m a civil servant, and am responsible for working up policy options on some issue. I have a brilliant idea that will solve the problem at a stroke. But for some reason, it is so politically unpopular, embarrassing, or evil in an ethical sense that I would be afraid or ashamed to put my name to it. Further, even if it works, it is still so awful that neither me nor my Minister would want to be associated with it. Not just that, it’s so clever that despite being conspicuously weird, violently anathema to some major section of public opinion, or monstrous, and capable of resolving a major issue of public concern, nobody will notice it when it happens.

This last is required, because if they did notice it, it would surely not take too long to head over to and look up the Department’s organisation chart.

How likely is this? How likely is it that politicians would refuse to take credit, deserved credit, for something successful?

On the other hand, how likely is it that policy advice whose author is unwilling to take responsibility for it is bad advice? If you give people an out like this, you’re likely to get more ideas that are evil, politically impossible, or simply idiotic. These classes of ideas will always be out there, and one of the reasons why we have things like public records and select committees is to act as a restraining influence on their production. “What would the papers say?” is not a stupid or cowardly statement. The constraint that your ideas should be defensible is a useful discipline, and one that may even be an aid to creativity, like the rules of a sonnet.

As far as I know, this argument was originally aired during the Franks report inquest into the Falklands War. On that occasion, the policy recommendation was “well, sort of vaguely wave our hands, and hope the fascist dictator eats Benny quietly and nobody notices. Let the file mature a bit”. I think it is obvious that this was not the civil service’s finest hour, and the prospect of public scrutiny might have induced someone to come up with a better plan and perhaps be more honest about it.

A further problem is that what the quote is describing is essentially the Noble Lie so dear to Leo Strauss. This is what designers and computer scientists call an anti-pattern – a common example of indefensibly awful practice. It is not actually impossible that the situation above might arise. Perhaps we do need to introduce an alien DNA virus into the school milk to induce immunity against Case NIGHTMARE GREEN. However, it is far more likely that the civil servant involved is actually doing just what it looks like, proposing a horrifically dangerous, stupid, irresponsible, and evil plan that ought never to have been thought for more than seconds. In fact, fundamental cognitive biases mean that someone whose idea is stupid, evil, or impossible and they know it, or whose motives are corrupt, is very likely to make use of such an argument to protect themselves.

I think of this as a She Was Asking For It argument – it isn’t impossible that she was, but it is infinitely more likely that you are just trying to wriggle out of the consequences of your own behaviour, and therefore it is a safe aim-off to treat all such arguments as being dishonest. Once you admit the possibility, you’re going to get a lot of shit in the meat.

Beyond that, we can knock off the other arguments quickly. Civil servants might be afraid of punishment for airing ideas considered weird. Well that’s why we have a professional civil service with independent line management. The problem isn’t the idea, it’s the practice of punishing people for thinking. The public might be alarmed. Bullshit! Blah blah politically embarrassing. Grow up. The register might contain secret information. Well that’s what the complex disclosure machinery in the Freedom of Information Act is for. We already fixed it.

Advice of the form “If I were you, I’d do X. But don’t tell anyone I told you, and I don’t want to take any responsibility for this.” is probably bad advice.

Why not foundation courts?

Thinking about the political castration of Ken Clarke and the fact that not even the Treasury in its most R.G. Hawtrey-esque mood seems to be able to stop the expansion of the prison industry, it struck me that the political class’s attitude towards the public service known as justice is fundamentally different to its attitude to all the others, including defence and policing.

Since the mid-1980s and the rise of the New Public Management – possibly an even more pernicious intellectual phenomenon than New Classical economics – it’s been a universal establishment consensus, shared by all parties, that any public service can be improved by giving bits of it a pseudo-budget to spend in a pseudo-market. Playing at shops is the defining pattern language of post-80s public administration. (This chap wrote at the time that the whole thing was remarkably like the 1960s Kosygin reforms in the Soviet Union, and perhaps we can induce him to post it up on his blog!)

For example, the 1990s Tory government wanted “fundholder” GPs to buy hospital services in an NHS internal market. Now they want to do something similar again, but more, faster, and worse. All sorts of local government services were put through a similar process. Central government agencies were ordered to bill each other for services vital to their operations. The Ministry of Defence was ordered to pay the Treasury 6% a year of the value of all its capital assets, such as the Army’s tank park, reserve stocks of ammunition, uniforms, etc. As a result, the MOD sold as many vehicles as possible and had to buy them back expensively through Urgent Operational Requirements when they had to fight a war. Supposedly, some vehicles were sold off after Kosovo, re-bought for Afghanistan in 2001, sold again, re-bought for Iraq in 2003, sold again, and UORd in a panic in 2006.

(Off topic, if you’re either a reporter hunting a story or a dealer in secondhand military vehicles, watch closely what happens to the fleet acquired under UORs for Afghanistan in the next few months.)

But there is one public service where the internal market is unknown. I refer, of course, to criminal justice. For some reason, it is considered to be normal to let magistrates and judges dispense incarceration, one of the most expensive products of the state, as if it were as free as air. The Ministry of Justice is simply asked to predict-and-provide sufficient prisons, like the Department for Transport used to do with motorways. Like motorways, somehow, however hard the bulldozers and cranes are driven, it never seems to be enough, and the prison system operates in a state of permanent overcrowding. Interestingly, the overcrowding seems to prevent the rehabilitative services from working, thus contributing to the re-offending rate, and ensuring both the expansion of the prison industry and the maintenance of permanent overcrowding.

The new public managers bitch endlessly about “producer interests” – they mean minimum-wage hospital cleaners, but somehow never GPs – but you never hear a peep about our bloated and wasteful criminal justice system. In fact, now that we have private jails, this producer interest is vastly more powerful as it has access to the corporate lobbying system and a profit motive.

Clearly, the problem here is that the gatekeepers to the system – the courts – have no incentive to use taxpayers’ money wisely, as they face neither a budget constraint nor competition. There is a rhyme with the fact that a British Army company commander in Afghanistan has a budget for reconstruction of $4,000 a month, which he must account for meticulously to the Civil Secretariat to the Helmand Task Force, but in each section of ten riflemen under his command, at least one of them can spend $100,000 on destruction at any moment, by firing off a Javelin anti-tank missile, every time he goes outside the wire. As once the thing is fired, he no longer needs to tote the fucker any further, you can see that a lot more is spent on Javelin rounds than reconstruction, and indeed the task force was getting through 254 of them a month at one point.

But it’s not a precise match. The military do, indeed, have to worry about their resources, as do the police. Only the courts can dispense public money without limit.

What if we were to give every magistrates’ court a Single Offender Management Budget, out of which it could buy imprisonment, probation, community service, electronic tagging, etc in an internal market? This would make it obvious to the magistrate how much cheaper non-custodial interventions are than jail. It would force them to resist the temptation to jail everybody out of risk-aversion or political pressure. If a court was to start off the year handing down 16-month sentences for stealing a packet of fags, and end up in queer street by Christmas, well, that will teach them to waste taxpayers’ money.

In fact, we could go further. Foundation courts would be able to borrow, if necessary, to tide themselves over to the end of the year, although of course they would have to make efficiency gains next year to repay it. It would be possible for a foundation court to go bankrupt and close. This, of course, will drive up standards. Perhaps we could even introduce an element of choice, letting defendants choose which jurisdiction they are prosecuted in.

I am, of course, joking. But not entirely.

discovering the axis of barking

The Grauniad Dabatlog has produced a rather fancy network visualisation of the sources cited in Anders Behring Breivik’s personal manifesto/horse-shit compendium. This is great as I now don’t need to worry that I perhaps should have made one. It’s very pretty and you can click on stuff, and see that some of the sources are thinktanks and some of them are newspapers, and well, it’s very pretty and you can click on stuff. It also comes with a piece by Andrew Brown reprising his “Don’t be beastly to the creationists!” shtick but with Melanie Phillips, for some reason.

Unfortunately it’s almost completely intransparent, and gives little indication of what data is being visualised or on what basis, and there is really no obvious conclusion to draw from it. But did I mention pretty and click? If forced to take a view, I would reckon that the underlying data is probably a matrix of which sources appear together with others and the layout algo is a force-directed graph (aka the default in pretty much any visualisation toolkit), probably weighted by appearance count. There’s some sort of proprietary metric called “linkfluence” which appears to be given by(indegree/outdegree)*len(neighbourhood) or words to that effect.

As a result, the only information I got from it was that he linked to Wikipedia, the BBC, and big news sites a lot. Well yes; Wikipedia,, etc, generate a hell of a lot of web pages and people read them a lot. Obviously, to say the least, you need to normalise the data with regard to sheer bulk, or you’d end up concluding that Google (or Bing or Yahoo) was his inspiration because he did a lot of web searches, or that he was a normal man twisted by SMTP because he used e-mail.

In fact, I thought they actually did that until I realised that is about the other RSS, the Indian extreme-right movement, not the popular Internet syndication standard. Harrowell fail. Anyway, it does show up rather nicely that the groups “European nationalists”, “Counter-Jihad”, and “American Right-Wing” overlap. However, I feel there’s something missing in the characterisation of MEMRI and various other sites as just “Think Tanks” as if they were just like, say, IPPR.

Also, an emergent property of the data is that there is an Axis of Barking running vertically through it: the nearer you are to the top of the diagram, the more extreme and crazy. MEMRI, FrontPage, Gates of Vienna, Melanie Phillips are near the top; the Wikipedia article on the Russo-Turkish War of 1878 is at the bottom. And the MSM is somewhere in the middle. (Although I do wonder if they allocated the sources to groups before or after running the force-directed graph.)

It seems to be one of those command the exciting world of social media with just one click! things.

Anyway, upshot. I want to avoid Project Lobster producing a diagram like this one. It’s too impressionistic and fluffy and reliant on basically aesthetic reasoning. (I think we’ve had this point before.) Of course, that’s partly the difference between the underlying data sets; it was at least thinkable if unlikely that there would be no grouping in Breivik’s sources, while presumably political lobbying is nonrandom and subject to intelligent design.

Elsewhere, a reader passed this along which I need to actually watch (isn’t video time consuming?). There’s a shindig in Warsaw in late October. And I want this on a T-shirt.

i haz bin in yr AR standardz, facilitatin yr interop. kthx!

So I had the opportunity to take part in an Augmented Reality standardisation meeting on the fringe of this year’s 3GSM Mobile World Congress. First of all, it was the year the heavens opened (someone on twitter said it was as if the show had turned into Glastonbury) and I got drenched and my shoes went bad, and my cab didn’t take me to the Telefonica R&D building in Via Augusta but instead to the main switching centre, this amazingly domineering building…

2011-02-17 13.07.09 Telcos – they live in places like this, they know where your dog goes to school, but can they tell you if it’s really your bank on the line?

So I got soaked again, and eventually arrived, and spent the first session listening to my shoes rotting. I acted as scribe for the session on AR browser implementations, markup language vs. JSON, native application vs. browser plugin and the like. I hope I contributed something of value. I have a Flickr set of the annotated flip charts here; I’ve been asked to help prepare the final report. Which just goes to show the enduring truth that if you want to influence something, wait until the very end and sum up with a balanced account. Supposedly this used to be the way to pass the Diplomatic Service exams – buy a pipe, puff on it occasionally during the team exercise, then “sum up with a balanced account”. But you’re not allowed to smoke these days.

2011-02-17 19.16.26

so you want to know who’s lobbying?

So I was moaning about the Government and the release of lists of meetings with external organisations. Well, what about some action? I’ve written a scraper that aggregates all the existing data and sticks it in a sinister database. At the moment, the Cabinet Office, DEFRA, and the Scottish Office have coughed up the files and are all included. I’m going to add more departments as they become available. Scraperwiki seems to be a bit sporky this evening; the whole thing has run to completion, although for some reason you can’t see all the data, and I’ve added the link to the UK Open Government Licence twice without it being saved.

A couple of technical points: to start with, I’d like to thank this guy who wrote an alternative to Python’s csv module’s wonderful DictReader class. DictReader is lovely because it lets you open a CSV (or indeed anything-separated value) file and keep the rows of data linked to their column headers as python dictionaries. Unfortunately, it won’t handle Unicode or anything except UTF-8. Which is a problem if you’re Chinese, or as it happens, if you want to read documents produced by Windows users, as they tend to use Really Strange characters for trivial things like apostrophes (\x92, can you believe it?). This, however, will process whatever encoding you give it and will still give you dictionaries. Thanks!

I also discovered something fun about ScraperWiki itself. It’s surprisingly clever under the bonnet – I was aware of various smart things with User Mode Linux and heavy parallelisation going on, and I recall Julian Todd talking about his plans to design a new scaling architecture based on lots of SQLite databases in RAM as read-slaves. Anyway, I had kept some URIs in a list, which I was then planning to loop through, retrieving the data and processing it. One of the URIs, DEFRA’s, ended like so: oct2010.csv.

Obviously, I liked the idea of generating the filename programmatically, in the expectation of future releases of data. For some reason, though, the parsing kept failing as soon as it got to the DEFRA page. Weirdly, what was happening was that the parser would run into a chunk of HTML and, obviously enough, choke. But there was no HTML. Bizarre. Eventually I thought to look in the Scraperwiki debugger’s Sources tab. To my considerable surprise, all the URIs were being loaded at once, in parallel, before the processing of the first file began. This was entirely different from the flow of control in my program, and as a result, the filename was not generated before the HTTP request was issued. DEFRA was 404ing, and because the csv module takes a file object rather than a string, I was using urllib.urlretrieve() rather than urlopen() or scraperwiki.scrape(). Hence the HTML.

So, Scraperwiki does a silent optimisation and loads all your data sources in parallel on startup. Quite cool, but I have to say that some documentation of this feature might be nice, as multithreading is usually meant to be voluntary:-)

TODO, meanwhile: at the moment, all the organisations that take part in a given meeting are lumped together. I want to break them out, to facilitate counting the heaviest lobbyists and feeding visualisation tools. Also, I’d like to clean up the “Purpose of meeting” field so as to be able to do the same for subject matter.

Update: Slight return. Fixed the unique keying requirement by creating a unique meeting id.

Update Update: Would anyone prefer if the data output schema was link-oriented rather than event-oriented? At the moment it preserves the underlying structure of the data releases, which have one row for each meeting. It might be better, when I come to expand the Name of External Org field, to have a row per relationship, i.e. edge in the network. This would help a lot with visualisation. In that case, I’d create a non-unique meeting identifier to make it possible to recreate the meetings by grouping on that key, and instead have a unique constraint on an identifier for each link.

Update Update Update: So I made one.