<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://aodhanlutetiae.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://aodhanlutetiae.github.io/" rel="alternate" type="text/html" /><updated>2026-03-17T08:49:17+00:00</updated><id>https://aodhanlutetiae.github.io/feed.xml</id><title type="html">Aidan O’Donnell</title><subtitle>Data Journalist</subtitle><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><entry><title type="html">Interesting FOIs in 2025</title><link href="https://aodhanlutetiae.github.io/posts/2025/11/blog-post-22/" rel="alternate" type="text/html" title="Interesting FOIs in 2025" /><published>2025-11-16T00:00:00+00:00</published><updated>2025-11-16T00:00:00+00:00</updated><id>https://aodhanlutetiae.github.io/posts/2025/11/fois-2years</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2025/11/blog-post-22/"><![CDATA[<p>Here are some interesting FOI stories the BBC did in 2025.</p>

<p><a href="https://www.bbc.co.uk/news/articles/cy852jq7v25o">MoD spends millions on private schools to avoid Welsh language (BBC, Oct 2025)</a></p>

<p><a href="https://www.bbc.co.uk/news/articles/c0kdv1x83gko">Parents threatened and blamed by authorities as 1,000 adopted children returned to care (BBC, Nov 2025)</a></p>

<p><a href="https://www.bbc.co.uk/news/articles/c3e182zgw5yo">AI camera trial detects 849 traffic offences (BBC, Jan 2025)</a></p>

<p><a href="https://www.bbc.co.uk/news/articles/c991l00z4nno">National Library of Wales missing 2,200 items (BBC, June 2025)</a></p>

<p><a href="https://www.bbc.co.uk/news/articles/cjrlnqp814vo">Hundreds of drivers failing to show up for tests (BBC, June 2025)</a></p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="FOI" /><category term="investigating" /><category term="BBC" /><summary type="html"><![CDATA[Here are some interesting FOI stories the BBC did in 2025.]]></summary></entry><entry><title type="html">Use an LLM to monitor the Employment Tribunal</title><link href="https://aodhanlutetiae.github.io/posts/2025/08/blog-post-21/" rel="alternate" type="text/html" title="Use an LLM to monitor the Employment Tribunal" /><published>2025-08-22T00:00:00+01:00</published><updated>2025-08-22T00:00:00+01:00</updated><id>https://aodhanlutetiae.github.io/posts/2025/08/llms-for-employment-tribunal</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2025/08/blog-post-21/"><![CDATA[<p>The Employment Tribunal hears claims from people who say an employer “has treated them unlawfully”.</p>

<p>The rulings for Great Britain are published online and there are more than 120,000 of them (since 2016). This collection of PDFs was used very effectively a few years ago by Bloomberg journalists for <a href="https://www.bloomberg.com/graphics/2019-uk-sexual-discrimination-settlements/">How corporate Britain hides thousands of sex discrimination cases</a>.</p>

<p>Can an LLM review a large number of these documents and point to possible stories? And can it do it <em>offline</em>, since the next batch of PDFs might not be something we want to work on confidentialy and not upload to an LLM chatbot platform?</p>

<p>I collected the rulings for 200 cases of alleged age discrimination at work in England &amp; Wales in 2025, which generated 309 PDFs (some rulings have more than one document). Can an LLM look at these for possible leads?</p>

<p>These rulings <a href="https://www.gov.uk/employment-tribunal-decisions?tribunal_decision_country%5B%5D=england-and-wales&amp;tribunal_decision_categories%5B%5D=age-discrimination&amp;tribunal_decision_decision_date%5Bfrom%5D=01/01/2025">are listed here on the Tribunal website</a> (as of mid-November 2025, a few months later).</p>

<p>I supplied the following prompt as context (after some early results that were far too general):</p>

<p>“This is a collection of rulings from the Employment Tribunal in England and Wales in 2025. They all pertain to alleged age discrimination in the workplace. What points might be useful leads for journalists? Be concise and specific. Avoid generalities since we know what the documents are about. We are looking for what is unusual, widespread or newsworthy.”</p>

<p>Here are the suggestions the LLM made, after I ran the query a few times, with some comments on how valuable the suggestion appears.</p>

<p><em><strong>Age-related harassment in universities</strong>: 
One ruling (Case No: 2408905/2023) involves a claimant who alleged age-related harassment at Lancaster University. This might be a useful lead to explore if there are patterns or systemic issues with age-based discrimination in higher education institutions.</em></p>

<p>— The <a href="https://assets.publishing.service.gov.uk/media/684a9b3824224d02f84137c8/Mrs_R_Wilkinson_v_Lancaster_University_-_2408905_2023_-_Judgment.pdf">case</a> is easy to find with the number. There seems to be little value however in the case, which lapsed after the claimant didn’t pay “the deposits ordered”.</p>

<p><em><strong>Striking out unfair dismissal claims due to lack of deposits</strong>: 
In another ruling (Case No: 2408905/2023), the claimant’s unfair dismissal, age discrimination, and harassment-related claims were struck out due to failure to pay required deposits. This could be a lead worth exploring if there are concerns about the process or fairness in Employment Tribunal proceedings.</em></p>

<p>— This refers to the same case. Worth at least trying to understand what “deposits” are in this context.</p>

<p><em><strong>Direct age discrimination claims dismissed</strong>: Many of the rulings involve direct age discrimination claims being dismissed. Journalists might want to investigate what factors contributed to these dismissals and whether there are common themes or patterns among the rejected claims. These leads could provide interesting stories on age-related workplace issues, Employment Tribunal procedures, or possible systemic problems that need to be addressed.</em></p>

<p>— Little value here*</p>

<p><em><strong>Age threshold variability</strong>: Notable that one case (Case No: 3300980/2021) has a pleaded age threshold of 40, which is significantly higher than the typical retirement age of 65-68 in the UK.</em></p>

<p>— The <a href="https://www.gov.uk/employment-tribunal-decisions/miss-t-donaldson-and-mrs-t-de-mello-v-british-airways-plc-3300980-slash-2021-and-3301038-slash-2021">case</a> here.</p>

<p><em><strong>Unusual comparator selection</strong>: In some cases (e.g., Case Nos: 3301038/2021), the respondent accepts that part-time workers are the correct comparator for full-time employees, which could indicate a shift in employment practices or policies.</em></p>

<p>— This is another part of the same case…</p>

<p><em><strong>Increased scrutiny of retirement age policies</strong>: With multiple cases related to alleged age discrimination, there may be an opportunity to explore whether employers’ retirement age policies are being challenged more frequently and why.</em></p>

<p>— Unhelpful</p>

<p><em><strong>Growing awareness of indirect age discrimination</strong>: Some cases (e.g., Case No: 2408905/2023) involve allegations of indirect age discrimination, which could indicate a growing understanding among employees of the different forms of age-related unfair treatment in the workplace.</em></p>

<p>— This is the first case again, involving Lancaster University.</p>

<p><em><strong>Impact of COVID-19 on employment practices and policies</strong>: The Employment Tribunal rulings may provide insights into how the pandemic has influenced employers’ decisions regarding retirement ages, part-time work, or other aspects of employment that can contribute to age discrimination. These leads are specific to the collection of Employment Tribunal rulings from 2025 and highlight potential stories related to age discrimination in the workplace.</em></p>

<p>— Unhelpful.</p>

<p><em><strong>Unsuccessful age discrimination claims</strong>: Many of the cases have been dismissed due to a lack of evidence or failing to meet the burden of proof. This could be an opportunity to explore the common pitfalls and challenges in bringing age discrimination claims.</em></p>

<p>— Unhelpful.</p>

<p><em><strong>Age-related harassment</strong>: Several cases involve allegations of age-related harassment, which may not be widely reported on. Investigating the prevalence and impact of this type of discrimination could lead to a newsworthy story.</em></p>

<p>— Is age-related harassment worth looking into?</p>

<p><em><strong>Inadequate tribunal processes</strong>: Some cases highlight issues with the Employment Tribunal’s procedures, such as delays or difficulties in obtaining justice. This could spark a discussion about improving the system.</em></p>

<p>— May be worth looking at.</p>

<p><em><strong>Unusual case scenarios</strong>: One ruling involves a claimant seeking to amend their claim after a preliminary hearing. Another case highlights the potential for age-related discrimination in benefit packages. These unusual scenarios might make for an interesting and unique story.</em></p>

<p>— May be worth looking at.</p>

<p><em><strong>Lack of judicial resources</strong>: A few cases were adjourned due to a lack of judicial resources, which could be an opportunity to explore the impact of funding constraints on the Employment Tribunal’s ability to deliver justice.</em></p>

<p>— May be worth looking at.</p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="LLMs" /><category term="Employment tribunal" /><summary type="html"><![CDATA[The Employment Tribunal hears claims from people who say an employer “has treated them unlawfully”.]]></summary></entry><entry><title type="html">How to query the Sky-Tortoise Westminster database</title><link href="https://aodhanlutetiae.github.io/posts/2024/04/blog-post-20/" rel="alternate" type="text/html" title="How to query the Sky-Tortoise Westminster database" /><published>2024-04-23T00:00:00+01:00</published><updated>2024-04-23T00:00:00+01:00</updated><id>https://aodhanlutetiae.github.io/posts/2024/04/sql-money</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2024/04/blog-post-20/"><![CDATA[<p>The Westminster money database was published by <a href="https://news.sky.com/story/westminster-accounts-search-for-your-mp-or-enter-your-full-postcode-12771627">Sky</a> and <a href="https://www.tortoisemedia.com/westminster-accounts-explore/">Tortoise</a> and brings together money going to parties, to all-party parliamentary groups and directly to MPs.</p>

<p>You can look up your MP or even just your postcode on the two websites and the methodology explains <a href="https://www.tortoisemedia.com/2023/01/08/the-westminster-accounts-methodology/">how it works</a>. It points out that the data is restricted to the current Parliament.</p>

<p><em>It only includes donations, payments, members, all-party parliamentary groups and parties that were made or have operated from 19 December 2019 onwards.</em></p>

<p>Crucially, it says that the three sources behind the database</p>

<p><em>will be updated on an ongoing basis. Every time a new register or version of is published, the data will be collected, cleaned, tested and then added to the database.</em></p>

<p>Simon Willison pulled out a <a href="https://lite.datasette.io/?sql=https://gist.github.com/simonw/ee4d5938016b10c490f7efa03c4bf185">SQLite database</a> last year which we can query in detail. There is a datasette instance online but below I’ve used the <a href="https://static.simonwillison.net/static/2023/sky-westminster-files.db">standalone database</a> he produced, by querying it with the online query tool <a href="https://sqlime.org/">SQLIME</a>.</p>

<p>It looks like his database is over a year old, but he’s supplied the code and tools, <a href="https://til.simonwillison.net/shot-scraper/scraping-flourish">in his walkthrough</a>, to make a fresh scrape of the Sky-Tortoise database. Below we use his old database — until I figure out how to run his code.</p>

<p>To run the below queries, just download the <a href="https://static.simonwillison.net/static/2023/sky-westminster-files.db">standalone database</a>, then go to <a href="https://sqlime.org/">SQLIME</a> and load the database using “Open File” on the top right.</p>

<p>What’s in the database? Seven tables are explained on the datasette.</p>

<p><img src="/images/sql_money_pics/tables" alt="drawing" width="600" /></p>

<p><img src="/images/walkthroughs/wt1.png" alt="drawing" width="400" /></p>

<p><strong>Payments to people</strong></p>

<p>The payments table is the main attraction here, with over 10,000 rows but the tables for the All-Party Parliamentary Groups (APPGs) are worth a look too.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT COUNT(*) FROM payments 
WHERE description LIKE '%opera%';
</code></pre></div></div>

<p>In the declared payments there are 39 records that mention ‘rugby’, 44 involving ‘opera’, 328 involving ‘flight’ and 616 involving ‘tickets’. There are 40 involving ‘family’, 34 with ‘wife’ and eight with ‘husband’.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT * FROM payments 
WHERE description LIKE '%use of%'
</code></pre></div></div>

<p>The phrase ‘use of’ shows us what people borrow or get to use: offices, venues and meeting rooms, airport lounges, holiday homes abroad, cars, planes and software. There are 180 locations listed for visits: Gavin Williamson and Alun Cairns have been to Somaliland, for example.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT payments.date, payments.description, payments.entity, payments.value, 
payments.purpose_of_visit, members.name, parties.name AS 'party name'
FROM payments
JOIN members ON payments.member_id = members.id
JOIN parties ON members.party_id = parties.id
WHERE destination_of_visit LIKE '%somaliland%'
</code></pre></div></div>

<p>Visits to Israel and Palestine are dominated by the parties’ Friends of Israel groups</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT COUNT(payments.destination_of_visit) AS 'freq', payments.destination_of_visit, payments.entity, ROUND(SUM (payments.value), 0) as 'sum'
FROM payments
JOIN members ON payments.member_id = members.id
JOIN parties ON members.party_id = parties.id
WHERE destination_of_visit LIKE '%israel%' OR '$palestine$'
GROUP BY entity
ORDER BY freq DESC;
</code></pre></div></div>

<p>Keir Starmer and Ed Davey are the only non-Tories in the top ten for total money received. Theresa May declared almost three million pounds (Tortoise wrote this up) and Boris Johnson declared just over one million.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT members.name, parties.name AS 'party name', SUM(ROUND(payments.value, 0)) AS totaled FROM payments 
JOIN members ON members.id = payments.member_id
JOIN parties ON parties.id = members.party_id 
GROUP BY member_id ORDER BY totaled DESC LIMIT 10;
</code></pre></div></div>

<p>The biggest single payment declared was by Theresa May at £400,000 for half a dozen talks.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT * FROM payments ORDER BY value DESC;
</code></pre></div></div>

<p>Boris Johnson’s biggest donations were</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT payments.entity, ROUND(payments.value, 0) AS value, members.name 
FROM payments
JOIN members ON members.id = payments.member_id
WHERE name = 'Boris Johnson' 
ORDER BY value DESC;
</code></pre></div></div>

<p>The £12,000 to Boris Johnson by Rupert Murdoch was for a trip to the US.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT payments.description, payments.entity, payments.value, members.name 
FROM payments
JOIN members ON members.id = payments.member_id
WHERE entity LIKE '%murdoch%'; 
</code></pre></div></div>

<p>Finally for now, there are over 2,000 different entities that have donated money.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT COUNT(DISTINCT entity)
FROM payments;
</code></pre></div></div>

<p>The total amount given by each person or organisation ranges from £1.8 million paid by the Withers law firm to a £76 paid by the Cardiff legal firm William Graham Law.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT entity, ROUND(SUM(value), 0) AS total_val
FROM payments
GROUP BY entity
ORDER BY total_val DESC;
</code></pre></div></div>

<p>This money could be a political donation (to a politician, a party, or an APPG) in money or in terms of resources like office space or flights, or it could be a payment for work (there are lots of publishers in the list). We can focus on Qatar (total of £281, 129).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT entity, ROUND(SUM(value), 0) AS total_val
FROM payments
WHERE entity LIKE '%doha%' OR entity LIKE '%qatar%'
GROUP BY entity
ORDER BY total_val DESC;
</code></pre></div></div>

<p>Or betting companies.</p>

<p>There is also £10,000 from The Tote and small sums from Sports Information Services (data for betting companies), Flutter entertainment, Star Sports (South Asian TV), Bet365, Betfred and Genting casinos.</p>

<p>The horse racing sector appears quite frequently too, with a combined value of £101,000 from The Jockey Club, The Turf Club, British Racing’s Horse Welfare Board, various racecourses (Ascot, Chester, Ffos Las, Goodwood and Jockey Club), Racecourse Media Group, the Racecourse Association and Arena Racing.</p>

<p>We can ask who’s working at GB News or receiving appearance fees.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT members.name, payments.entity, ROUND(SUM (payments.value), 0) as total_val, payments.description AS 'sample desc'
FROM payments
JOIN members ON members.id = payments.member_id
WHERE entity LIKE '%GB News%'
GROUP BY name
ORDER BY total_val DESC; 
</code></pre></div></div>

<p>A next step might be to cross reference these entities with the lobbying register</p>

<p> 
 </p>

<p><strong>People</strong></p>

<p>We can use the payments table to see which MPs make the most declarations (rather than who declared the most money). The top ten are</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT members.name, parties.name AS party_name, COUNT(*) AS nb
FROM payments
JOIN members ON members.id = payments.member_id
JOIN parties ON parties.id = members.party_id
GROUP BY member_id
ORDER BY nb DESC
LIMIT 10; 
</code></pre></div></div>

<p>We can use the same syntax to see who is in the most APPGs</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT members.name, parties.name AS party_name, COUNT(*) AS nb
FROM member_appgs
JOIN members ON members.id = member_appgs.member_id
JOIN parties ON parties.id = members.party_id
GROUP BY member_id
ORDER BY nb DESC
LIMIT 20; 
</code></pre></div></div>

<p>What are the APPGs with DUP members?</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT members.name, parties.name AS party_name, COUNT(*) AS nb 
FROM member_appgs JOIN members ON members.id = member_appgs.member_id 
JOIN parties ON parties.id = members.party_id
WHERE party_name == 'Democratic Unionist Party' 
GROUP BY member_id ORDER BY nb DESC;
</code></pre></div></div>

<p>What are the APPGs that Caroline Lucas is a member of?</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT members.name, parties.name AS party_name, appg_name
FROM member_appgs
JOIN members ON members.id = member_appgs.member_id
JOIN parties ON parties.id = members.party_id
WHERE members.name LIKE '%Lucas%';
</code></pre></div></div>
<p> 
 </p>

<p><strong>All-party Parliamentary Groups</strong></p>

<p>There are almost 500 different APPGs that appear in the appg_donations table (498). As of April 2024 there are 445 APPGs, so some have disappeared.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT COUNT(DISTINCT appg_name)
FROM appg_donations; 
</code></pre></div></div>

<p>Which APPGs have received the most money in donations?</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT appg_donations.appg_name, appg_donations.entity, ROUND(SUM (appg_donations.value), 0) as total_val
FROM appg_donations GROUP BY appg_donations.appg_name
ORDER BY total_val DESC; 
</code></pre></div></div>

<p>Who’s in the AI group?</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT member_appgs.appg_name, member_appgs.role, members.name, parties.name AS 'party name'
FROM member_appgs 
JOIN members ON members.id = member_appgs.member_id
JOIN parties ON parties.id = members.party_id
WHERE appg_name LIKE '%artificial%'
ORDER BY party_id;
</code></pre></div></div>

<p>Who’s giving it money? It’s received about £300,000 up to March 2022</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT date, entity, value
FROM appg_donations
WHERE appg_name LIKE '%artificial%' 
</code></pre></div></div>

<p>This has come from a group called Big Innovation Centre, which just gathers donations from 15 different bodies. These are British Standards Institution; Capita; CMS Cameron McKenna Nabarro Olswang; Deloitte; Dufrain; Osborne Clarke; PwC Blue Prism; Creative England; Megger Group Limited; Microsoft; Omni Telemetry Ltd; Oracle; Osborne Clarke LLP;
Rialto.</p>

<p>While the Chair of the AI APPG Stephen Metcalfe appears in the payments table for an unrelated £13,000 payment, he doesn’t appear when the APPG receives money, it seems.</p>

<p>Where do the members of the AI APPG get money, aside from donations to the AI APPG?</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT COUNT(DISTINCT payments.entity) AS ents, ROUND (AVG (payments.value), 0) AS avg, members.name FROM payments 
JOIN members ON members.id = payments.member_id 
WHERE 
name = 'Stephen Metcalfe' OR
name = 'Chris Green' OR
name = 'Patrick Grady' OR
name = 'Sir Mark Hendrick' OR
name = 'Justin Madders' OR 
name = 'Darren Jones'
GROUP BY members.name
ORDER BY ents DESC; 
</code></pre></div></div>

<p>Who are these 18 groups giving money to MPs who are in the AI APPG?</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT DISTINCT payments.entity, ROUND(SUM(payments.value), 0) AS val, members.name 
FROM payments 
JOIN members ON members.id = payments.member_id 
WHERE name = 'Stephen Metcalfe' OR name = 'Chris Green' OR name = 'Patrick Grady' OR name = 'Sir Mark Hendrick' OR name = 'Justin Madders' OR 
name = 'Darren Jones'
GROUP BY entity
ORDER BY name DESC;
</code></pre></div></div>

<p>Note that Chris Green shares three of his financial sources with other members of the AI APPG. These sources (Betting and Gaming Council, YouGov, Ipsos Mori) only appear once.</p>

<p>So in fact these MPs’ AI APPG receives donations from:</p>

<ul>
  <li>British Standards Institution;</li>
  <li>Capita;</li>
  <li>CMS Cameron McKenna Nabarro Olswang;</li>
  <li>Deloitte;</li>
  <li>Dufrain;</li>
  <li>Osborne Clarke;</li>
  <li>PwC Blue Prism;</li>
  <li>Creative England;</li>
  <li>Megger Group Limited;</li>
  <li>Microsoft;</li>
  <li>Omni Telemetry Ltd;</li>
  <li>Oracle;</li>
  <li>Osborne Clarke LLP;</li>
  <li>Rialto.</li>
</ul>

<p>And separately, as individuals, they receive money from</p>

<ul>
  <li>Anderson Group Services;</li>
  <li>BBC;</li>
  <li>Betting and Gaming Council;</li>
  <li>Darren Jones;</li>
  <li>GMB Union;</li>
  <li>IX Wireless;</li>
  <li>Ipsos MORI;</li>
  <li>Ministry of Foreign Affairs, Qatar;</li>
  <li>Newcleo;</li>
  <li>Plexal (City);</li>
  <li>Savanta ComRes;</li>
  <li>Trade[s] Union Congress;</li>
  <li>Unite;</li>
  <li>Yonder Consulting;</li>
  <li>YouGov.</li>
</ul>

<p>Finally there will be donations to their parties (Conservative, Labour, SNP, Independent).</p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="SQL" /><category term="MPs" /><category term="money" /><summary type="html"><![CDATA[The Westminster money database was published by Sky and Tortoise and brings together money going to parties, to all-party parliamentary groups and directly to MPs.]]></summary></entry><entry><title type="html">Algorithm to suggest food inspections abandoned</title><link href="https://aodhanlutetiae.github.io/posts/2024/03/blog-post-19/" rel="alternate" type="text/html" title="Algorithm to suggest food inspections abandoned" /><published>2024-03-01T00:00:00+00:00</published><updated>2024-03-01T00:00:00+00:00</updated><id>https://aodhanlutetiae.github.io/posts/2024/03/food-scores</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2024/03/blog-post-19/"><![CDATA[<p><em>updated March 2025</em></p>

<p>UK food inspectors have abandoned plans to use an algorithm in part of their food hygiene rating system after a £100,000 trial.</p>

<p>Fifteen local authorities took part in the six-week pilot in 2022. But in the end many local authorities found their own solutions to a post-Covid food inspection backlog, and the Food Standards Agency (FSA) said the automation raised too many ethical questions.</p>

<p><img src="/images/4_food_safety_picture.jpg" alt="drawing" width="600" /></p>

<p><em>A “da” rating of 4 on an eatery window in Wales. Food hygiene here is “good”</em></p>

<p>The technology predicted two things: the hygiene rating of a food outlet that was waiting for inspection, and the probability that it would be broadly clean (a 3, 4 or 5 rating).</p>

<p><img src="/images/user_guide_p8.jpg" alt="drawing" width="600" /></p>

<p><em>Screenshot of (part of) how the tool might respond when asked about a specific local authority, with the names of the area’s food outlets removed</em></p>

<p>Faced with a simple but pressing question after Covid, “Who should we inspect first?”, the FSA paid the technology company Cognizant to build this technology. The company’s model was to be used to identify which cases were most urgent, leaving local authority inspectors to establish the actual rating after a visit.</p>

<p>‘Urgent’ here meant those eateries that were predicted to fail an inspection.</p>

<p>The code used to train the computer model was released in response to a Freedom of Information request along with an outline of the kinds of data that, once supplied to the computer system, would generate the two predictions. I was given an outline of the variables, along with the code used to build the computer model. A second FOI request returned two pieces of documentation: a user manual and an Ethical AI framework.</p>

<p>A more detailed version of the machine’s response shows not just if an outlet is predicted to get a compliant rating (3-4-5) or non-compliant rating (0-1-2) but how <em>likely</em> it is to fall into a compliant category.</p>

<p><img src="/images/user_guide_p9_bigger.jpg" alt="drawing" width="600" /></p>

<p><em>Part of a response, showing how likely it is that food outlets will get a higher, ‘compliant’ score of 3, 4 or 5</em></p>

<p>The FSA technology was ultimately shelved because the Agency decided there were “ethical concerns” that data on demographics and the type of food prepared in different outlets “could result in biases for certain types of businesses”. And by that stage, many councils had found their own solutions to the backlog.</p>

<p><strong>How it works</strong></p>

<p><img src="/images/code_ext_ok.jpg" alt="drawing" width="600" /></p>

<p><em>Some of the code that trained the model from existing data and generated predictions for new data</em></p>

<p>There are two main ingredients to all of this: 1. the data the machine examined to decide the probability that a food outlet wasn’t clean, and 2. the code that read the data, generated the inferences, and returned a recommendation.</p>

<p>Although we haven’t analysed the code in detail, we know already that it was based on three particular machine learning libraries: tensorflow, sklearn and lightgbm. (Libraries are third-party computer programs imported into some code to carry out particular tasks).</p>

<p>The data that the machine read, in order to reach its conclusions was of three kinds:</p>

<ul>
  <li>
    <p>the Food Standards Agency’s own data: Is it a pub, or a hospital? Is it a chain restaurant? Which local authority is it in?</p>
  </li>
  <li>
    <p>census information from the local authority area where the food outlet is located: population size, age structure and density; residents’ country of birth, passport and language; house prices and economic situation; employment data; life expectancy and disability rate.</p>
  </li>
  <li>
    <p>retail information for app developers from an online database. As well as the kind of food business and the opening hours, this appears to have told the machine if the food outlet could be described as Chinese, Asian, Middle Eastern, Indian etc.</p>
  </li>
</ul>

<p>What we <em>don’t</em> have is the training data, i.e. the above information tied to previous Food Safety scores. Only by reading historical cases which link outlets to scores would the machine have been able to infer the likelihood of a new outlet being clean or dirty.</p>

<p><strong>The Algorithmic Transparency Recording Standard</strong></p>

<p>This technology was <a href="https://www.gov.uk/government/publications/food-standards-agency-food-hygiene-rating-scheme-ai/food-standards-agency-food-hygiene-rating-scheme-ai">first described</a> on a government platform to list algorithms that are used in the public sector: the <a href="https://www.gov.uk/algorithmic-transparency-records">Algorithmic Transparency Recording Standard</a> was launched as a trial in late 2021 (and was discussed at <a href="https://www.odcamp.uk/">Open Data Camp 2023</a>).</p>

<p>The details of just six algorithms were published the following year and publication resumed early in 2024 with the details of <a href="https://www.gov.uk/government/publications/cabinet-office-automated-digital-document-review">an algorithm developed</a> for the Cabinet Office.</p>

<p>This year (2025) there has been a sharp increase in the number of algorithm details released: reports on 49 different algorithms used in the public sector have been published in the first six months of the year.</p>

<p><img src="/images/chart_fsa.png" alt="drawing" width="600" /></p>

<p><a href="https://www.theguardian.com/society/2025/jan/27/dwp-ai-whitemail-benefit-claimants-applicants">The Guardian reported that</a> the Department of Work and Pensions uses a piece of AI technology to review correspondence and that this tool was absent from the transparency platform. There are presumably many others missing too, even if the government’s <a href="https://www.theguardian.com/technology/2025/jan/27/ai-prototypes-uk-welfare-system-dropped">abandoning several proposed AI tools</a>.</p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="algorithms" /><category term="councils" /><category term="food" /><summary type="html"><![CDATA[updated March 2025]]></summary></entry><entry><title type="html">Mapping Council wards for 2022 local elections</title><link href="https://aodhanlutetiae.github.io/posts/2022/04/blog-post-18/" rel="alternate" type="text/html" title="Mapping Council wards for 2022 local elections" /><published>2022-04-06T00:00:00+01:00</published><updated>2022-04-06T00:00:00+01:00</updated><id>https://aodhanlutetiae.github.io/posts/2022/04/cardiff-wards</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2022/04/blog-post-18/"><![CDATA[<p>Local elections are coming so we need maps.</p>

<p>The Cardiff 2017 turnout is <a href="https://www.datawrapper.de/_/ryky0/">here</a> but has an island (attached to Butetown ward) that doesn’t really need to be there and some of the wards have been adjusted</p>

<p>The new 2021-22 layout is <a href="https://www.datawrapper.de/_/2QEo5/">here</a>, without the island</p>

<p>The Ceredigion ward layout has also been revised, from 40 to 34, and there’s a template <a href="https://www.datawrapper.de/_/5sLlR/">here</a></p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="mapping" /><category term="elections" /><category term="Cardiff" /><summary type="html"><![CDATA[Local elections are coming so we need maps.]]></summary></entry><entry><title type="html">Google Sheets walkthrough</title><link href="https://aodhanlutetiae.github.io/posts/2021/05/blog-post-17/" rel="alternate" type="text/html" title="Google Sheets walkthrough" /><published>2021-05-01T00:00:00+01:00</published><updated>2021-05-01T00:00:00+01:00</updated><id>https://aodhanlutetiae.github.io/posts/2021/05/sheets_walkthrough</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2021/05/blog-post-17/"><![CDATA[<p>How to get a CSV (comma separated values) file into a spreadsheet using Google Sheets and get working with it.</p>

<hr />
<p><strong>IMPORTING YOUR FILE</strong></p>

<p>Download the following file to your computer: <a href="https://drive.google.com/file/d/15vDqg-u6W4tHouC42uvhMOdy21oTl3ov/view?usp=sharing">bags_2years.csv</a></p>

<p>Once the file is on your computer, right-click on it and under <strong>Open With</strong> choose <strong>Text Edit (Mac)</strong> or <strong>WHAT(Windows)</strong> to look at what’s actually in the file. All the values are separated by commas:</p>

<p><img src="/images/walkthroughs/wt1.png" alt="drawing" width="400" /></p>

<p>In your own Google Drive, open a new Sheet by clicking <strong>+ New</strong>, then <strong>Google Sheets</strong>, then <strong>Blank Spreadsheet</strong></p>

<p>In the new Sheet, click on the name <strong>Untitled Spreadsheet</strong> on the top left and give your Sheet a name</p>

<p>Under File select <strong>Import</strong>, then <strong>Upload</strong></p>

<p>Choose your <strong>bags_2years.csv</strong> file from your computer</p>

<p>If asked in a dialogue box about <strong>Import Location</strong>, select <strong>Insert New Sheet</strong> and for <strong>Separator Type</strong>, choose <strong>Comma</strong> or <strong>Detect Automatically</strong></p>

<p>You should now have the CSV file in your Sheet:</p>

<p><img src="/images/walkthroughs/wt1.png" alt="drawing" width="400" /></p>

<hr />
<p><strong>ORGANISING YOUR SHEET</strong></p>

<p>In the bottom left, there is a tab called <strong>bags_2years</strong>. Right click on the tab and select <strong>Duplicate</strong>. This will generate a new Sheet with a tab called <strong>Copy of bags_2years</strong>. Double click on this tab and rename it as <strong>data</strong>.</p>

<p><img src="/images/walkthroughs/wt1.png" alt="drawing" width="400" /></p>

<p>Add a new empty Sheet by using the <strong>+</strong> button just to the left of the tabs. Give this the name <strong>Source</strong> and somewhere in the sheet paste the following url, which is the where the data in your file was taken:</p>

<p>— https://data.gov.uk/dataset/682843a8-168c-4056-b6fe-741161a39f60/single-use-plastic-carrier-bags-charge-data-for-england</p>

<hr />
<p><strong>THE DATA</strong></p>

<p>At this point we have imported the CSV file to a Sheet, we have named the Sheet and we have duplicated it so that we have a copy of the original data if we need it. We’ve also added the source for the data so that we you come back to work on this in six months we’ll know where the data came from.</p>

<p>If you look at the data, you’ll see you have four columns:</p>

<ul>
  <li>Year</li>
  <li>Company name</li>
  <li>Number of single use plastic bags issued</li>
  <li>Gross proceeds of charge (£)</li>
</ul>

<p>These are companies in England that charged customers for single-use plastic bags in 2018-19 and 2019-20. It shows how many bags each retailer issued and how much money it collected from charging customers for them. The data was published in 2020 by DEFRA, the Department for Environment, Food and Rural Affairs.</p>

<hr />
<p><strong>NAVIGATING THE SHEET</strong></p>

<p><img src="/images/walkthroughs/wt3.png" alt="drawing" /></p>

<p>Under the menu <strong>View</strong>, choose <strong>Freeze</strong> then <strong>1 row</strong>. This will maintain the column names in place as you scroll down through the sheet.</p>

<p>You can adjust the width of the four columns.</p>

<hr />
<p>Now, see if you can repeat all those steps with a different file: <a href="https://drive.google.com/file/d/1O-d4UbCn90mY4fvSWBNeUOkUgY3GXoFi/view?usp=sharing">the same data but for two earlier years, 2016 and 2017</a></p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="spreadsheets" /><category term="csv" /><category term="getting started" /><summary type="html"><![CDATA[How to get a CSV (comma separated values) file into a spreadsheet using Google Sheets and get working with it.]]></summary></entry><entry><title type="html">A(nother) month of traffic counted</title><link href="https://aodhanlutetiae.github.io/posts/2021/02/blog-post-16/" rel="alternate" type="text/html" title="A(nother) month of traffic counted" /><published>2021-02-02T00:00:00+00:00</published><updated>2021-02-02T00:00:00+00:00</updated><id>https://aodhanlutetiae.github.io/posts/2021/02/telraam_more</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2021/02/blog-post-16/"><![CDATA[<p>The <a href="https://www.we-count.net/about">We Count Project</a> started in Belgium in 2019 and a year ago it expanded <a href="https://www.bbc.co.uk/news/world-europe-51123760">to several other European countries</a>. My sensor in Cardiff now has two months of data gathered by looking out of my house onto a quiet residential street while there’s daylight, in one-hour slices.</p>

<p><strong>Constant bikes</strong></p>

<p>The busiest hour between December and January saw a bike on the street every 90 seconds (the morning of New Year’s Eve) but on average it’s just a little busier than one bicycle every ten minutes. There are times when no cyclists go past but generally it’s remarkably constant: if you wait two days, on average, there will be a bicycle-free hour but otherwise every hour sees at least one cyclist appear.</p>

<p>There is never a day without a cyclist.</p>

<p>Bikes outnumber cars more than a quarter of the time, i.e. for more than a quarter of the one-hour slices in the period. This, I think, is higher than I would have guessed. Admittedly, mine is not a very useful route for cars — see <a href="#context">Context</a>, below — but the fact that for two hours a day (on average) there are more bikes than cars on a Cardiff road is one that cycling advocates will point to as evidence that “it <em>can</em> be done”.</p>

<p>Even if we include bigger vehicles, bikes still outnumbered all vehicles in 20% of the hourly counts. Viewed weekly of course, there are always more cars.</p>

<p><img src="/images/bikes_cars_total.png" alt="bikes and cars on a Cardiff road" /></p>

<p><a name="context">
<strong>Context</strong>
</a></p>

<p>I live on a quiet street where a lot of residents have cars to park (and deliveries to receive) but it’s quite a few turns off the main roads so doesn’t have a lot of through traffic.</p>

<p>There are other questions to be answered with this data (i.e. <em>not</em> about bikes): What kind of speeds do vehicles do on a residential road like this? How many vans pass by (now that we’re all online doing our pandemic shopping)? What are the trends for pedestrians?</p>

<p>The data and the Jupyter notebook are <a href="https://github.com/aodhanlutetiae/cardiff_traffic/tree/main/analysis_gh_2">on github</a>.</p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="traffic" /><category term="sensors" /><category term="data collection" /><category term="Cardiff" /><category term="bicycles" /><summary type="html"><![CDATA[The We Count Project started in Belgium in 2019 and a year ago it expanded to several other European countries. My sensor in Cardiff now has two months of data gathered by looking out of my house onto a quiet residential street while there’s daylight, in one-hour slices.]]></summary></entry><entry><title type="html">A month of traffic counted</title><link href="https://aodhanlutetiae.github.io/posts/2021/01/blog-post-15/" rel="alternate" type="text/html" title="A month of traffic counted" /><published>2021-01-05T00:00:00+00:00</published><updated>2021-01-05T00:00:00+00:00</updated><id>https://aodhanlutetiae.github.io/posts/2021/01/telraam</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2021/01/blog-post-15/"><![CDATA[<p>The <a href="https://telraam.net/en/what-is-telraam">We Count project</a> distributes simple photo sensors for people to put on their street-facing windows so a computer can count how many vehicles, bikes and pedestrians pass by every day. Cities across Europe have people monitoring their streets. I got my sensor running at the end of November so I now have my first complete month of data.</p>

<p><img src="/images/map_traffic.jpg" alt="Cardiff streets where monitoring is taking place" />
<em>The roads monitored in Cardiff through Telraam sensors (Jan 2021)</em></p>

<p>The sensor has been peering out my window for a month, counting the moving things it sees. What has it counted?</p>

<p><strong>The data</strong></p>

<p>The first thing we learn about this data is that sometimes it’s not very good. As explained <a href="https://telraam.zendesk.com/hc/en-us/articles/360027325572-Want-more-data-Telraam-API">on the project website</a>, the sensor is never running 100% of the time. The data shows us (lightly paraphrased):</p>

<blockquote>
  <p>the percentage of time the Telraam camera was actively counting traffic in a one hour interval. This is almost never 100%, because in standard operation background calculation, intervals break the continuous measurements every couple of minutes for a half minute, and during this background calculation no active measurements are being carried out.</p>
</blockquote>

<p>This appears to be a problem this month (December) from 4pm to 5pm because data is collected but it’s often not very good, presumably since the light is fading at this time of day. The sensor drops to ‘barely running at all’ and makes suspicious claims like ‘this hour there was an army of over fifty cyclists going one way down this quiet road (and, erm, nobody in the other direction)’.</p>

<p>So a day, for now, will have to just be the eight hours of good(ish) daylight from 8am to 4pm.</p>

<p><strong>There are a lot of bicycles</strong></p>

<p>A cyclist comes down the road every seven minutes on average in daylight hours. This can reach 20 bikes in a busy hour, or none if it’s quiet. The busiest day of the week is Saturday with usually more than 100 bikes during daylight and the quietest is Sunday (around 40).</p>

<p>That makes more than 2,000 cyclists passing this way over the month.</p>

<p><strong>More analysis <a href="https://aodhanlutetiae.github.io/posts/2021/02/blog-post-16/">here</a> (after two months)</strong></p>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="traffic" /><category term="sensors" /><category term="data collection" /><category term="Cardiff" /><category term="bicycles" /><summary type="html"><![CDATA[The We Count project distributes simple photo sensors for people to put on their street-facing windows so a computer can count how many vehicles, bikes and pedestrians pass by every day. Cities across Europe have people monitoring their streets. I got my sensor running at the end of November so I now have my first complete month of data.]]></summary></entry><entry><title type="html">Money for … something</title><link href="https://aodhanlutetiae.github.io/posts/2020/12/blog-post-14/" rel="alternate" type="text/html" title="Money for … something" /><published>2020-12-28T00:00:00+00:00</published><updated>2020-12-28T00:00:00+00:00</updated><id>https://aodhanlutetiae.github.io/posts/2020/12/politics_money</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2020/12/blog-post-14/"><![CDATA[<p>It’s a part of the UK’s political system that is badly designed according to the critics: it doesn’t have the expertise the country needs, it’s much bigger than it should be, and it appoints people at best because of who they know and at worst because of financial donations. Everyone <em>says</em> that something needs to change but little does. It’s the House of Lords.</p>

<p>The Guardian has closed out 2020 with a series of pieces on what’s (still) wrong with the Lords. Its <a href="https://www.theguardian.com/commentisfree/2020/dec/23/the-guardian-view-on-crony-peerages-a-deeply-rotten-tradition">editorial</a> just before Christmas was in response to the Prime Minister’s latest appointment to the upper house, Peter Cruddas.</p>

<blockquote>
  <p>“In 2006, Tony Blair was embroiled in a cash-for-honours affair that resulted in a criminal investigation but no charges. One newspaper columnist wrote that the case illustrated “the decay of government and the putrefaction of the honours system”. That journalist was Boris Johnson, who earlier this week used his privilege as prime minister to ennoble Peter Cruddas, a businessman, philanthropist and Conservative party donor. Mr Cruddas’s name had been rejected by the Lords appointments commission. Mr Johnson deemed their judgment unfair and overruled it.”</p>
</blockquote>

<p>Also on the Guardian site the same day the Lord Speaker, Norman Fowler, <a href="https://www.theguardian.com/commentisfree/2020/dec/23/house-of-lords-peerages-appointments">called for an inquiry</a> into “the peerages system” (the job of Lord Speaker was created in 2006 and involves chairing business in the House). For Fowler, the problems are essentially: too many lords already, no upper limit to how many can be appointed, no way to vet appointments (since the House of Lords Appointments Commission can only advise) and Lords being appointed by the government when parliament is not looking — sorry, is not <em>sitting</em>.</p>

<p><a href="https://www.theguardian.com/politics/2020/dec/24/boris-johnson-tory-linked-peerages-raise-fresh-cronyism-claims">A piece</a> by Haroon Sidique the next day observed that:</p>

<blockquote>
  <p>“Almost a quarter of peerages awarded this year have been to Conservative party donors, close associates or former colleagues of Boris Johnson, according to analysis by the Guardian, which raises fresh concerns about cronyism.”</p>
</blockquote>

<p>This followed <a href="https://www.ft.com/content/5a456127-6f9a-4f87-aacc-5a54d8da8da7">the report</a> a few months’ earlier in the Financial Times that</p>

<blockquote>
  <p>“at least 22 former donors to political parties have been given peerages in the past 13 years, according to calculations by the Financial Times.”</p>
</blockquote>

<p>That was after 36 new Lords were added to the House in July. The <a href="https://www.theguardian.com/politics/2020/aug/03/no-10-boris-johnson-pm-still-committed-lords-reduction-despite-36-peerages">Guardian’s analysis</a> noted at the time that even with the new arrivals very few of the 800+ Lords knew anything about the main business of 2020, health.</p>

<blockquote>
  <p>“Not a single peer comes primarily from a manual or skilled trade background, according to data from the Electoral Reform Society. As the UK faces its greatest public health crisis in more than 100 years, just 2.2% work in healthcare, compared with one in 10 of the general public.”</p>
</blockquote>

<p>Yet much of this had been seen before. An <a href="https://www.opendemocracy.net/en/dark-money-investigations/cabinet-office-urged-to-investigate-fresh-tory-cash-for-honours-scandal/">investigation</a> by OpenDemocracy and <a href="https://link.springer.com/article/10.1057/s41293-019-00109-4">research by academics</a> the year before had found similar problems with who was getting appointed to the Lords, and why.</p>

<p><strong>Background</strong></p>

<ul>
  <li>In 1999, most of the hereditary peers were removed (92 remained).</li>
  <li>In 2006, allegations of cash for honours caused a scandal for Tony Blair’s government. Investigations followed but there were no prosecutions.</li>
  <li>In 2014, changes were made that made it easier for Lords to retire.</li>
  <li>The <a href="https://publications.parliament.uk/pa/cm201719/cmselect/cmpubadm/662/662.pdf">Burns report</a> in 2017 called for a limit of 600 Lords, with appointments to be made by the House of Commons rather than the government so as to be shared between parties.</li>
</ul>

<p><strong>Articles</strong></p>

<ul>
  <li>
    <p><a href="https://www.theguardian.com/politics/2020/dec/24/boris-johnson-tory-linked-peerages-raise-fresh-cronyism-claims">Haroon Sidique. Boris Johnson’s Tory-linked peerages raise fresh claims of cronyism, Dec 24</a></p>
  </li>
  <li>
    <p><a href="https://www.theguardian.com/commentisfree/2020/dec/23/the-guardian-view-on-crony-peerages-a-deeply-rotten-tradition">The Guardian view on crony peerages: a deeply rotten tradition (editorial), Dec 23</a></p>
  </li>
  <li>
    <p><a href="https://www.theguardian.com/commentisfree/2020/dec/23/house-of-lords-peerages-appointments">Norman Fowler. The House of Lords is bloated. We need an inquiry into the peerages system. <em>Guardian</em>, Dec 23</a></p>
  </li>
  <li>
    <p><a href="https://www.theguardian.com/politics/2020/dec/22/pm-rejects-official-advice-in-awarding-peter-cruddas-peerage">Andrew Sparrow, PM rejects official advice in awarding peerage to Peter Cruddas. <em>Guardian</em>, Dec 22</a></p>
  </li>
  <li>
    <p><a href="https://www.ft.com/content/5a456127-6f9a-4f87-aacc-5a54d8da8da7">Latest Lords appointment raises questions over party donors, <em>FT</em>, Aug 1, 2020</a></p>
  </li>
  <li>
    <p><a href="https://www.theguardian.com/politics/2020/aug/03/no-10-boris-johnson-pm-still-committed-lords-reduction-despite-36-peerages">Peter Walker &amp; Ben Quinn. Boris Johnson ‘still committed to Lords reduction’ despite 36 peerages, <em>Guardian</em>, Aug 3, 2020</a></p>
  </li>
  <li>
    <p><a href="https://www.opendemocracy.net/en/dark-money-investigations/cabinet-office-urged-to-investigate-fresh-tory-cash-for-honours-scandal/">Peter Geoghegan, Seth Thévoz &amp; Jenna Corderoy. Cabinet Office urged to investigate fresh Tory ‘cash for honours’ scandal. Dec 3, 2019</a></p>
  </li>
  <li>
    <p><a href="https://link.springer.com/article/10.1057/s41293-019-00109-4">Simon Radford, Andrew Mell &amp; Seth Alexander Thevoz. ‘Lordy Me!’ Can donations buy you a British peerage? A study in the link between party political funding and peerage nominations, 2005–2014. British Politics volume 15, March 14, 2019, p. 135–59, 2020</a></p>
  </li>
</ul>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="British politics" /><category term="Data journalism" /><category term="Lords" /><summary type="html"><![CDATA[It’s a part of the UK’s political system that is badly designed according to the critics: it doesn’t have the expertise the country needs, it’s much bigger than it should be, and it appoints people at best because of who they know and at worst because of financial donations. Everyone says that something needs to change but little does. It’s the House of Lords.]]></summary></entry><entry><title type="html">New York Times subediting quizzes</title><link href="https://aodhanlutetiae.github.io/posts/2020/10/blog-post-13/" rel="alternate" type="text/html" title="New York Times subediting quizzes" /><published>2020-10-03T00:00:00+01:00</published><updated>2020-10-03T00:00:00+01:00</updated><id>https://aodhanlutetiae.github.io/posts/2020/10/copyeditthis</id><content type="html" xml:base="https://aodhanlutetiae.github.io/posts/2020/10/blog-post-13/"><![CDATA[<p>This is a collection of all the wonderful <em>New York Times</em> subediting quizzes, mostly so I can find them when I need them.</p>

<p>The NYT’s standards editor <a href="https://twitter.com/corbettnyt">Philip B. Corbett</a> started the quizzes in July 2016 with an introductory quiz that that you can find <a href="https://www.nytimes.com/2016/07/19/insider/you-be-the-copy-editor.html">here</a>. In it he explains that “[New York] Times writers and editors publish 125,000 or more words a day”.</p>

<p>The official ‘number 1 quiz’ dates from November that year and adopted the interface that we know today and which allows users to click on the problematic word or passage.</p>

<ul>
  <li><a href="https://www.nytimes.com/interactive/2016/11/11/insider/copy-edit-this-quiz.html">Quiz no. 1, November 2016</a></li>
  <li><a href="https://www.nytimes.com/interactive/2016/12/12/insider/copy-edit-this-quiz-2.html">Quiz no. 2, December 2016</a></li>
  <li><a href="https://www.nytimes.com/interactive/2017/02/02/insider/copy-edit-this-quiz-3.html">Quiz no. 3, February 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2017/03/10/insider/copy-edit-this-quiz-4.html">Quiz no. 4, March 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2017/04/17/insider/copy-edit-this-quiz-5.html">Quiz no. 5, April 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2017/05/19/insider/00copyeditquiz6.html">Quiz no. 6, May 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2017/06/27/insider/copy-edit-this-quiz-7.html">Quiz no. 7, June 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2017/08/17/insider/copy-edit-this-quiz-8.html">Quiz no. 8, August 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2017/11/15/insider/copy-edit-this-quiz-9.html">Quiz no. 9, November 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2018/01/25/insider/copy-edit-this-quiz-10.html">Quiz no. 10, May 2017</a></li>
  <li><a href="https://www.nytimes.com/interactive/2018/03/16/insider/copy-edit-this-quiz-11.html">Quiz no. 11, March 2018</a></li>
  <li><a href="https://www.nytimes.com/interactive/2018/05/10/insider/copy-edit-this-quiz-12.html">Quiz no. 12, May 2018</a></li>
  <li><a href="https://www.nytimes.com/interactive/2018/07/10/insider/copy-edit-this-quiz-13.html">Quiz no. 13, July 2018</a></li>
  <li><a href="https://www.nytimes.com/interactive/2018/08/14/insider/copy-edit-this-quiz-14.html">Quiz no. 14, August 2018</a></li>
  <li><a href="https://www.nytimes.com/interactive/2018/11/02/insider/copy-edit-this-quiz-15.html">Quiz no. 15, November 2018</a></li>
  <li><a href="https://www.nytimes.com/interactive/2019/03/01/insider/copy-edit-this-16.html">Quiz no. 16, March 2019</a></li>
  <li><a href="https://www.nytimes.com/interactive/2019/06/26/insider/copy-edit-this-17.html">Quiz no. 17, June 2019</a></li>
</ul>]]></content><author><name>Aidan O&apos;Donnell</name><email>odonnella4@cardiff.ac.uk</email></author><category term="NYT" /><category term="Copy Edit This!" /><category term="Subediting" /><summary type="html"><![CDATA[This is a collection of all the wonderful New York Times subediting quizzes, mostly so I can find them when I need them.]]></summary></entry></feed>