<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Seán Fobbe</title>
    <link>https://seanfobbe.com/posts/</link>
    <description>Recent content in Posts on Seán Fobbe</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 20 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://seanfobbe.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[Essay] Reflections on Academic Communication</title>
      <link>https://seanfobbe.com/posts/2026-02-20_reflections-on-academic-communication/</link>
      <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2026-02-20_reflections-on-academic-communication/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Academia is in a crisis of communication. Academics do a lot of communicating, but we rarely reflect on &lt;em&gt;how&lt;/em&gt; and &lt;em&gt;why&lt;/em&gt; we communicate. There are very active debates on the reform of academic publishing, but they rarely make it into the mainstream of academia.&lt;/p&gt;
&lt;p&gt;Both &amp;ldquo;the paper&amp;rdquo; and &amp;ldquo;the book&amp;rdquo; have become the standard units of currency in the academic world. So entrenched are they that in the modern day it is often required to publish a set number of articles in journals with a specified amount of prestige (or books with a prestigious publisher) to have a chance at an academic career. The research really is secondary, it is the venue of publication that matters to career advancement. Academics do the research, write the articles, review the articles and read the articles &amp;mdash; for free. However, for some reason it is the commercial publishers that make fantastic profits off all this activity (&lt;a href=&#34;https://bjoern.brembs.net/2026/02/after-decades-of-debating-the-scientific-publishing-crisis-the-time-as-come-to-decide/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;see this post by Björn Brembs&lt;/a&gt; for more background).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been thinking about academic communication a lot and I decided to write up some thoughts as an essay, perhaps make a series out of it. By &amp;ldquo;academic communication&amp;rdquo; I mean communication as an academic, whether this is within academia among academics or if it is between academia and business, academia and civil society or academia and the general public.&lt;/p&gt;
&lt;p&gt;In this first essay I&amp;rsquo;ve chosen to focus on some modern means of academic communication: websites, social media and e-mail. Neither of them is enough to make an academic career, but they represent some of the best means we have to evade traditional academic gatekeeping.&lt;/p&gt;
&lt;h1 id=&#34;table-of-contents&#34;&gt;
  Table of Contents
  &lt;a class=&#34;heading-link&#34; href=&#34;#table-of-contents&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#overview&#34;&gt;Overview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#website-and-blogging&#34;&gt;Website and Blogging&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#social-media&#34;&gt;Social Media&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#e-mail&#34;&gt;E-Mail&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;h1 id=&#34;website-and-blogging&#34;&gt;
  Website and Blogging
  &lt;a class=&#34;heading-link&#34; href=&#34;#website-and-blogging&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;ve experimented with and considered  a lot of publishing channels and venues for my academic and personal work, but by far the one I enjoy the most is my website and blog. It is my personal corner of the internet where I can write whatever I want to, make it look like whatever I want and can try adding code, diagrams and citations wherever I please. The website is in dark mode by default, because I like it. Some people don&amp;rsquo;t and that is fine, but of all readers I probably spend the most time having to look at it, so dark mode it is.&lt;/p&gt;
&lt;p&gt;I wouldn&amp;rsquo;t go quite so far as to recommend that every academic have their personal website, but creating websites has become so easy that I believe everyone should at least consider it. Most people think this means having a full-fledged blog and tons of content, but in reality a basic CV, a list of publications/data/code and some contact information (e-mail, social media profiles) is perfectly fine as a first website. Why? See below on gatekeeping, but the short answer is that a personal website has far fewer gatekeepers than social media or even an institutional page and is portable across corporate failures and academic transitions.&lt;/p&gt;
&lt;h2 id=&#34;essays&#34;&gt;
  Essays
  &lt;a class=&#34;heading-link&#34; href=&#34;#essays&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Essays allow me to experiment with my writing, try new things, be informal, be formal, be cranky, be professional and everything in between. Some essays have citations, some have diagrams, some have code, some have none of these. My essays are certainly too long by any traditional standards of web publishing, but on my own website there isn&amp;rsquo;t really anyone who can stop me. I don&amp;rsquo;t use Large Language Models (LLM) for any of my writing, because the writing is the point of it, not the product. Personally I think this comes close to how scholarship is the most fun: chaotic, experimental, curiosity-driven and unique.&lt;/p&gt;
&lt;h2 id=&#34;rss-feed&#34;&gt;
  RSS Feed
  &lt;a class=&#34;heading-link&#34; href=&#34;#rss-feed&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I have an &lt;a href=&#34;https://seanfobbe.com/posts/index.xml&#34; &gt;RSS feed&lt;/a&gt; to push new posts to people using feed readers, free of charge, no account required, no tracking involved. Some people consider this ancient technology, but it is in fact a modern, important, open, standardized and decentralized means of publishing content that many ignore because we have forgotten that there are good things that are not expensive Software-as-a-Service (SaaS) &amp;ldquo;platforms&amp;rdquo; with aggressive vendor lock-in. The entire podcast industry runs on RSS and I hope that RSS will make a comeback among the general population with an easy-to-use feed reader. I use RSS a lot to get my regular news intake, check academic journals for new articles and read my favorite blogs.&lt;/p&gt;
&lt;h2 id=&#34;gatekeeping&#34;&gt;
  Gatekeeping
  &lt;a class=&#34;heading-link&#34; href=&#34;#gatekeeping&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Almost every communication channel these days has some gatekeeper that must be convinced to publish your work. Some gatekeepers are more hands-off, some have very strong opinions on what can be published and how it should be written. You&amp;rsquo;d think that traditional academic publishing has the strongest gatekeepers (seeing as there is serious science to be done) but personally I think it is social media.&lt;/p&gt;
&lt;p&gt;Social media algorithms are just brutal in their selection of which content gets attention and which doesn&amp;rsquo;t. If an academic journal rejects you, you just try the next one. It might not be as prestigious as your first choice, but there are usually at least a dozen alternatives to choose from. If your work gets published elsewhere, it&amp;rsquo;s usually just as well as long as the article itself is good, except if you really &lt;em&gt;need&lt;/em&gt; a publication in a Nature-equivalent in your field to get a job.&lt;/p&gt;
&lt;p&gt;With social media on the other hand, there is no easy way to switch platforms (except the Fediverse, which allows communication between all the different ActivityPub-compatible clients like Mastodon, Friendica, PeerTube, Pixelfed etc.).&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; People cross-post, of course, but most social media algorithms tend to prioritize the same type of content (catchy, short to match modern attention spans, emotional, divisive, simple), resulting in heavy pressure to conform to a particular archetype of content. If your content doesn&amp;rsquo;t fit the type, it ends up in algo-purgatory, never to be seen by more than the three or four die-hard friends who check the chronological feed on your profile every week. The most worrying development in social media is the quasi-suppression (or down-ranking) of external links, turning platforms into strictly walled gardens and cutting off means to escape the platform. This hostility to linking is really a threat to the open web and together with AI plagiarism it damages the entire information ecosystem.&lt;/p&gt;
&lt;p&gt;By contrast there is no real gatekeeper to your website&amp;rsquo;s content. Yes, discovery can be an issue if Google doesn&amp;rsquo;t send generic traffic your way. With &amp;ldquo;AI search&amp;rdquo; this is going to become much worse, because the AI algo-washes your content and presents it as its own &amp;mdash; without attribution, of course.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; However, there are many other ways of discovery, some which can be just as relevant to academics as Google. Academics don&amp;rsquo;t need millions of visits per day, they need a dozen relevant people in their field to deeply engage with their ideas.&lt;/p&gt;
&lt;p&gt;People learn about you when you meet them for coffee, when you meet them in person, when you give a presentation at a conference, every once in a while through social media posts, through personal recommendations and so on. As soon as people hear about you as an individual and  understand that you have a website, you have potentially broken Google&amp;rsquo;s hold and freed yourself from all gatekeepers forever. Usually this takes years and sustained work, but it &lt;em&gt;is&lt;/em&gt; an option.&lt;/p&gt;
&lt;h2 id=&#34;asynchronous-publishing&#34;&gt;
  Asynchronous Publishing
  &lt;a class=&#34;heading-link&#34; href=&#34;#asynchronous-publishing&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;A website stores and presents everything you put on it, whenever you choose, in whatever structure and design you choose. You might merrily go your way publishing for months or years before a potential reader learns about you, but when they do, they have access to all the content you published before. This gives them a ton of material to choose from, to establish your legitimacy as an author and to forward to other people, if they think it&amp;rsquo;s good. One of my happiest internet experiences is discovering a mature blog I had overlooked before and going through the archives to see what else the person has written. I enjoy forwarding links to old articles, because some ideas are still valuable years later.&lt;/p&gt;
&lt;p&gt;The contrast is, of course, social media feeds, where anything you write pretty much vanishes after a day or two, never to be seen again, except be intrepid explorers of your profile who can stomach scrolling through your unstructured flow of thoughts at length on a platform that makes it as painful as possible. I wonder how much wonderful ideas we lose forever, simply because social was the only place they were ever posted and they never received the audience they should have because the computer said no.&lt;/p&gt;
&lt;h2 id=&#34;speed&#34;&gt;
  Speed
  &lt;a class=&#34;heading-link&#34; href=&#34;#speed&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This may be a pet gloat of mine, but my website loads &lt;em&gt;fast&lt;/em&gt;. It&amp;rsquo;s not because I added some clever technology, but because of the &lt;em&gt;absence&lt;/em&gt; of technology. There is (almost) no Javascript that must be loaded to display the website,&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; there are no tracking scripts that must be loaded, there is no overloaded Javascript framework involved, just some HTML, CSS and occasionally some down-scaled image files, if the page or post warrants it. Contrast this with bloated sites like GitHub or Linkedin that take several seconds to load, even on a 100 MBit connection and a modern computer. Even regular blogs these days are so full of unnecessary frameworks that it makes me wonder why I am loading all this Javascript to read some simple articles. And I do have to load it explicitly, because I have NoScript on by default.  Since I have to check and re-check my website often to revise it and upload new content, its speed  makes this a surprisingly enjoyable experience.&lt;/p&gt;
&lt;h2 id=&#34;analytics&#34;&gt;
  Analytics
  &lt;a class=&#34;heading-link&#34; href=&#34;#analytics&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;My website doesn&amp;rsquo;t have analytics. While I have some strong philosophical opinions on tracking and generally oppose it, the best part about being tracking-free is that I save a ton of time not looking at analytics. Tracking never mattered to the purpose of my website in the first place. Checking analytics all the time can consume you.&lt;/p&gt;
&lt;p&gt;In the past I spent much too much time looking at analytics on Linkedin. What did I learn from it? Nothing useful, really. Some posts do really well, some don&amp;rsquo;t. I often can&amp;rsquo;t say why, except it being down to luck that a few people liked the post in some crucial early window during which the algo decided whether to promote it and then it spread fast. A lot of people distribute likes primarily to those whom they like and respect as a person to help their content get noticed. This is great, but again, I can&amp;rsquo;t tell if people like the content or not unless they leave a substantive comment. Thoughtful comments are rare and again, you&amp;rsquo;ll usually get them from people who enjoy your work in general, not so much from a cross-section of the population who honestly respond to your work.&lt;/p&gt;
&lt;p&gt;In the end, analytics do not measure what matters to me. It matters to me that people closely engage with my writing, learn from it, perhaps change their behavior and become better legal and technical professionals. I usually discover if this worked when people write me thoughtful e-mails, have a good conversation at a conference or recommend my work to other people. None of these feedback signals can be captured by a regular analytics platform, so I don&amp;rsquo;t bother. In the years I&amp;rsquo;ve been running this website, I never felt like I made a mistake.&lt;/p&gt;
&lt;h1 id=&#34;social-media&#34;&gt;
  Social Media
  &lt;a class=&#34;heading-link&#34; href=&#34;#social-media&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Social media is kind of the new kid on the block in terms of digital distribution channels, even though it has been around for years now. Social media quickly become critically important for academics to disseminate their research, in a way that it is hard not to have a social media presence as a young academic these days. I&amp;rsquo;m not sure if Facebook was ever important for academics, but Twitter quickly became the go-to place for &amp;ldquo;serious&amp;rdquo; social media accounts, including academics, journalists and politicians. Of course Twitter later fell off a cliff after the Musk takeover and turned into a Nazi hellhole now called X, but it was useful and valuable to academics while it lasted.&lt;/p&gt;
&lt;p&gt;In most disciplines in the academic world there is a sliding scale of importance in academic journals. Papers published in &amp;ldquo;good&amp;rdquo; journals traditionally receive more attention than papers in &amp;ldquo;mediocre journals&amp;rdquo;. Journal importance is both blessing and curse. On the one hand, getting into the right journal provides much-needed attention for good work, but on the other hand, the more important the journal, the more conservative it is with regards to methods and content. Social media levels the playing field a little. Even if you don&amp;rsquo;t make it into &lt;em&gt;Nature&lt;/em&gt;, social media is still a chance for your research to be noticed. Perhaps only be your peers in your circle of PhD students, but you&amp;rsquo;ve got to start somewhere. This is especially important for people like me who work with very much non-traditional methods in a very conservative discipline (law). Social media often allows me to make an end-run around the traditional gatekeepers.&lt;/p&gt;
&lt;h2 id=&#34;mastodon&#34;&gt;
  Mastodon
  &lt;a class=&#34;heading-link&#34; href=&#34;#mastodon&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Mastodon is my absolute social media favorite. I created my account in November 2022 during the big Twitter migration, have been active on the site for three and a half years and haven&amp;rsquo;t regretted it at any point. Mastodon does a lot of things right in a way similar to early commercial platforms, before they deteriorated in quality to wring out every last bit of attention from their users and advertisers.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;These are my personal Mastodon highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unexpected and unique perspectives that would be canned by any standard social media algorithm&lt;/li&gt;
&lt;li&gt;Plenty of academics from all disciplines, expert tech people and non-traditional individuals&lt;/li&gt;
&lt;li&gt;Mastodon software is open source&lt;/li&gt;
&lt;li&gt;Powered by the ActivityPub protocol, an open standard for social networking&lt;/li&gt;
&lt;li&gt;Developed by a non-profit&lt;/li&gt;
&lt;li&gt;No suspicious algorithm&lt;/li&gt;
&lt;li&gt;No ads in the software itself (however, some accounts, esp. companies, post ads as part of their regular output, so Mastodon is technically not ad-free)&lt;/li&gt;
&lt;li&gt;Limited analytics (counts of boosts/favorites/followers, but that&amp;rsquo;s it)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While there are many good sides to Mastodon, it admittedly is a relatively small network compared to the major social media behemoths. The Twitter migration brought a massive influx of new users, but many didn&amp;rsquo;t stay with Mastodon. The website &lt;a href=&#34;https://mastodon-analytics.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mastodon-analytics.com&lt;/a&gt; indicates that Mastodon had around 400,000 monthly active users (MAU) in mid-2022, peaking at around 2.5 million MAU after the Twitter meltdown later in 2022. The &lt;a href=&#34;https://mastodon.fediverse.observer/stats&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Fediverse Observer&lt;/a&gt; shows we are currently at around 750,000 MAU in February 2026. So Mastodon almost doubled its long-term active user base over a few years. Total monthly users are around 9.5 million, which is small compared to Linkedin&amp;rsquo;s claimed 1 billion users. However, there is still the wider Fediverse which is interoperable with Mastodon, and that &lt;a href=&#34;https://fediverse.observer/fediversestats&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;adds a good number of users&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the long-term I am confident that Mastodon will win in social media market share. Either Mastodon itself or other open social media platforms will slowly gain dominance. This may take decades, but I&amp;rsquo;m in this for the long run. UI/UX is improving slowly but consistently. A lot of people come to stay. However, the most important feature is its technical foundation on open standards and open source. Linux took a long time to take off, but it has gained in reputation and legitimacy every decade and is now threatening even traditional Windows strongholds such as gaming and government use.&lt;/p&gt;
&lt;h2 id=&#34;linkedin&#34;&gt;
  Linkedin
  &lt;a class=&#34;heading-link&#34; href=&#34;#linkedin&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Yes, I have a Linkedin account and I maintain it semi-actively. I am not terribly excited about Linkedin (nor Microsoft) and have never been, but I must admit Linkedin has been useful at times. The German legal community is quite active on Linkedin, same as the business community in general. I believe this is deteriorating due to AI overload, but more on that later.&lt;/p&gt;
&lt;p&gt;Working conditions in academia are quite poor in Germany (low pay, mostly part-time and short-term contracts, very few permanent positions, strict hierarchies), so it is helpful for academics at all stages pre-tenure to be able to earn money in industry. I&amp;rsquo;ve done so for a number of years now and the mix between low-paid/unpaid academic work and well-paid industry work has allowed me to succeed in paying the bills and keeping me intellectually curious.&lt;/p&gt;
&lt;p&gt;In terms of maintaining one&amp;rsquo;s sanity it would certainly be better to read fewer posts from salespeople (including most CEOs, by the way) trying to sell inferior products with outrageous lies about productivity gains to scared customers traumatized by the AI hype machine. Unfortunately, not everything in life pleasant. Sometimes we must endure. I certainly have won jobs, contracts, connections and a reputation from being active on Linkedin. For, now, I think trading some of my sanity to be able to feed my family is worth it, but I do wonder if this will be the case for much longer. I find the value of Linkedin has been steadily decreasing since the release of ChatGPT.&lt;/p&gt;
&lt;p&gt;Despite the huge difference in the size of the user base between Linkedin and Mastodon, I see more high-value posting activity on my Mastodon feed than on Linkedin. I follow about 3,000 to 4,000 people on each site, so I should roughly be seeing a similar amount of useful content on each site. However, since the advent of AI the number of valuable posts from people I find interesting has dropped off a cliff on Linkedin and hasn&amp;rsquo;t recovered. I assume it is some combination of the algorithm having become bad at detecting human posts, AI slop completely overwhelming the system and people deciding to opt out of posting because of poor reach. I see this at work in my own posting habits. The reach of my Linkedin posts and reactions to them are down to about 10% of what they were before 2025. At some point you start to wonder whether the effort is worth it.&lt;/p&gt;
&lt;p&gt;Linkedin knows this. Some time in 2025 they changed the creator dashboard to not show daily impressions/reactions by default, but instead only show the &lt;em&gt;cumulative&lt;/em&gt; impressions/reactions per interval (7 days by default). What this means, of course, is that the numbers and the line always point upwards. You don&amp;rsquo;t do this if you are confident that many active people read and comment on timely and valuable posts. This change, more than anything else, tells me that Linkedin is failing, possibly irreversibly.&lt;/p&gt;
&lt;p&gt;My personal approach to Linkedin at the moment is to avoid reading the feed, check for messages and comments on published posts every couple of days and occasionally post something about my work. Since 2025 I have rarely written posts targeted at a Linkedin audience, but instead write them for Mastodon and cross-post them if it feels right. I still announce larger items (papers, open source projects, blog posts) on Linkedin, but again with the text that I write for Mastodon.&lt;/p&gt;
&lt;h1 id=&#34;e-mail&#34;&gt;
  E-Mail
  &lt;a class=&#34;heading-link&#34; href=&#34;#e-mail&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;E-Mail is old. It primarily used to be a means of direct communication among individual scholars and groups of scholars. There were newsletters, of course, but this usually indicated some kind of institutional setting, making it necessary to regularly communicate information top-down and one-to-many.&lt;/p&gt;
&lt;p&gt;This has changed in recent years with the rise of professional newsletter writers who produce a regular newsletter for a group of paying subscribers and, as far as I can tell, for some academics and journalists this is a viable means of making an income or at least some nice side-money. This is has been made easier by SaaS platforms targeting this market segment, which I prefer not to name because you probably have heard of them and don&amp;rsquo;t hold them in high regard. Nevertheless, technological developments have made publishing professional paid newsletters much easier than before.&lt;/p&gt;
&lt;p&gt;While e-mail is still my medium of choice for professional communication among peers, I&amp;rsquo;ve opted against publishing a regular newsletter or even implementing some kind of RSS-to-E-Mail mechanism that mails out updates from my website to subscribers.&lt;/p&gt;
&lt;p&gt;There are a number of reasons why I do this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;E-mail channels are overloaded.&lt;/strong&gt; Most people I know are drowning in e-mails. No one knows what inbox zero looks like. Add to that the fact that very few people know how basic keyword-style e-mail filtering works, inboxes around the world are exploding with e-mail. Why write a newsletters that just gets lost in a mountain of text?&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There are too many newsletters&lt;/strong&gt;. There are all the traditional newsletters related to work and civic life one has to watch. There are many more new newsletters being created to look for a  viable source of income as a writer. There are all the unwanted newsletters people add me to whether I like it or not because I needed an account somewhere and some e-commerice business development executive thinks that is an invitation to bombard me with e-mails every week. I have no idea how people who deal with this without e-mail filtering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Newsletter writing feel like a chore.&lt;/strong&gt; I enjoy writing when the urge hits me and I don&amp;rsquo;t enjoy writing when it doesn&amp;rsquo;t. Turning occasional blogging into a regular newsletter would require me to publish new articles on a regular basis to not lose the attention of my audience and I just don&amp;rsquo;t feel like turning something fun and intellectuall freeing into a chore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managing a subscriber database is work.&lt;/strong&gt; Building an e-mail subscriber base requires time, persistence and a lot of marketing. Then you have to make sure the e-mail database stays safe and never leaks. All in all even with technological assistance it is a lot of work that I don&amp;rsquo;t need to do if I stick to blogging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-term storage of witing.&lt;/strong&gt; A blog keeps everything as long as I want it to. People delete e-mails. People &lt;em&gt;should&lt;/em&gt; delete e-mails, particularly newsletters, to free up space and retain their sanity. My own e-mail program is set to auto-delete e-mails from certain folders and my own newsletter folder is set to auto-delete everything older than 30 days. On my blog I can keep my articles around for as long as I like, in whichever order I like.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editing and Updates&lt;/strong&gt;. Sometimes I make mistakes. Sometimes I want to update some post with new information. When you hit &amp;ldquo;send&amp;rdquo; on an e-mail it is gone and issuing corrections or updates requires sending new e-mails, irritating everyone. Blogging can do that, e-mail cannot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are certainly valid reasons for pursuing a newsletter writing strategy as an academic or journalist. Human attention from search is becoming less and so-called AI produces a ton of traffic only to plagiarize content and keep all the valuable human attention for itself. Controlling distribution via an individual subscriber database sounds nice, but in practice this is only viable for the most popular writers. All others end in social media recommendation hell on one of the typical newsletter platforms, trying to please the recommendation algorithm while never building a subscriber base large enough to leave said platform.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m fine with blogging.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;There are issues with portability in the Fediverse, too and moving posts in particular seems difficult, but it does a lot better than most.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;This is a human em-dash, by the way. One of the least enjoyable features of this AI timeline is that using em-dashes makes you seem like a robot.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;I do have a dark-to-light-mode switcher for people who need it for accessibility reasons and some tutorials contain some minor Javascript to display visuals, but that&amp;rsquo;s it.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Twitter, of course, did not just deteriorate but went full Nazi algo with a built-in bot that could commit sex crimes 24/7. I have very low moral expectations of billionaires, but even I didn&amp;rsquo;t expect this level of moral decay.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;E-mail filtering can perform certain actions on e-mail triggered by rules. Think for example redirecting all tech newsletters to a specific folder in your mail account and redirecting all shopping-related things (order confirmation, invoice, delivery status) to another folder for quick browsing. With known senders it is often enough to simply use the sender address as a hook and this works well for all types of newsletters.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>200,000 Legal Dataset Downloads</title>
      <link>https://seanfobbe.com/posts/2025-11-17_200k-legal-dataset-downloads/</link>
      <pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-11-17_200k-legal-dataset-downloads/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;Open Data Repository&lt;/strong&gt;   &amp;mdash;   &lt;a href=&#34;https://data.seanfobbe.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;data.seanfobbe.com&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;thank-you&#34;&gt;
  Thank you!
  &lt;a class=&#34;heading-link&#34; href=&#34;#thank-you&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Thank you all for over 200,000 legal dataset downloads!&lt;/p&gt;
&lt;p&gt;In the past few years I have published 19 open, ethically sourced and reproducible legal and political datasets on a wide variety of institutions and subjects, among others:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;International Court of Justice (ICJ)&lt;/li&gt;
&lt;li&gt;Permanent Court of International Justice (PCIJ)&lt;/li&gt;
&lt;li&gt;UN Security Council (UNSC)&lt;/li&gt;
&lt;li&gt;International treaties&lt;/li&gt;
&lt;li&gt;German federal courts (BVerfG, BGH, BVerwG, BFH, BPatG, BAG)&lt;/li&gt;
&lt;li&gt;German federal law&lt;/li&gt;
&lt;li&gt;German federal parliamentary debates and materials&lt;/li&gt;
&lt;li&gt;Auxiliary datasets (e.g. stop words, docket numbers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can download all of these datasets Open Access via the &lt;a href=&#34;https://seanfobbe.com/data&#34; &gt;open data tab&lt;/a&gt; on my website.&lt;/p&gt;
&lt;h1 id=&#34;zenodo-download-statistics&#34;&gt;
  Zenodo Download Statistics
  &lt;a class=&#34;heading-link&#34; href=&#34;#zenodo-download-statistics&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/Fobbe_Stats_Data_2025-11-17.png&#34; alt=&#34;Zenodo Fobbe Download Statistics&#34; title=&#34;Zenodo Fobbe Download Statistics&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;applications&#34;&gt;
  Applications
  &lt;a class=&#34;heading-link&#34; href=&#34;#applications&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;If you happen to have built and published any interesting applications or research with these datasets, &lt;a href=&#34;https://seanfobbe.com/contact&#34; &gt;write me and let me know&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[12 September 2025] Upcoming Agora Talk at the European Society of International Law (ESIL) Annual Conference in Berlin</title>
      <link>https://seanfobbe.com/posts/2025-07-07_upcoming-esil-annual-conference-talk-chains-of-pride/</link>
      <pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-07-07_upcoming-esil-annual-conference-talk-chains-of-pride/</guid>
      <description>&lt;h1 id=&#34;upcoming-talk-on-new-methods-in-international-law&#34;&gt;
  Upcoming Talk on New Methods in International Law
  &lt;a class=&#34;heading-link&#34; href=&#34;#upcoming-talk-on-new-methods-in-international-law&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;m excited to be speaking at the &lt;a href=&#34;https://www.esil2025.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;2025 European Society of International Law (ESIL) Annual Conference&lt;/a&gt;! The conference is being held in Berlin (Germany) from 11 to 13 September 2025 under the general theme of &amp;ldquo;Reconstructing International Law&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;My talk is titled &lt;strong&gt;&amp;ldquo;The Chains of Pride: Reconstructing International Law as a Discipline of Fact and Principle&amp;rdquo;&lt;/strong&gt; and will be part of Agora 8 on &amp;ldquo;Interdisciplinarity and the (Re)construction of International Law&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;The key message I want to get across is that we urgently need to enhance international law with new methods. This is not a call for interdisciplinarity, but for changing how the core of the discipline is taught and practiced under a serious reading of the Vienna Convention on the Law of Treaties (VCLT). For example, the &lt;em&gt;ordinary meaning&lt;/em&gt; is an empirical question of how language is used in practice and the interpretation of the &lt;em&gt;object and purpose&lt;/em&gt; of a treaty pretends to be a normative exercise, but in truth it is a powerful demand to align select empirical causes with intended practical effects.&lt;/p&gt;
&lt;p&gt;See the abstract below for more details.&lt;/p&gt;
&lt;h1 id=&#34;timetable&#34;&gt;
  Timetable
  &lt;a class=&#34;heading-link&#34; href=&#34;#timetable&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Panel&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Date&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Time&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Title&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Agora 8&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;12 September&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;14:00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;The Chains of Pride: Reconstructing International Law as a Discipline of Fact and Principle&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Agora 8 will feature other great talks on social science and international law:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Reconstructing International Treaty Law-Making with Behavioral Research&lt;/em&gt; (Professor Anne van Aaken, University of Hamburg, and Professor Tomer Broude, Hebrew University of Jerusalem)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Insights from Interdisciplinary Research on Human Rights Treaties at the Subnational Level&lt;/em&gt; (Professor Evelyne Schmid, Université de Lausanne)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure to check out the &lt;a href=&#34;https://www.esil2025.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;conference website&lt;/a&gt; and &lt;a href=&#34;https://www.esil2025.de/_files/ugd/bd3551_d45f8273fb0d44c58fce6e65cac3f61a.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;conference program&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h1 id=&#34;the-chains-of-pride-abstract&#34;&gt;
  The Chains of Pride (Abstract)
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-chains-of-pride-abstract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The autonomy of international law has always been a mirage. Power, empirical reality and fait accompli on the ground shape international law like no other legal field. Empirical facts are embedded in the very foundations of the system: from the effective control that makes or breaks a government to the political practice of States that creates international custom and influences the interpretation of treaties. International law may be the structured and principled application of power, but it &lt;em&gt;is&lt;/em&gt; an application of power.&lt;/p&gt;
&lt;p&gt;Even the traditional tools of the international lawyer are empirical at heart. The ordinary meaning in Article 31 (1) VCLT is an empirical question of how language is used in practice. The interpretation of the object and purpose of a treaty pretends to be a normative exercise, but in truth it is a powerful demand to align select empirical causes with intended practical effects.&lt;/p&gt;
&lt;p&gt;The international legal discourse has done the world a disservice by discouraging the teaching of empirical methods and by insisting that international law is primarily a normative discipline. The rational creation and application of the law requires skill with both normative and empirical methods. In its pride, international legal scholarship has limited itself unnecessarily. Now is the time to rebuild the discipline.&lt;/p&gt;
&lt;p&gt;I will show how three new datasets on the ICJ, PCIJ and UNSC help us push the boundaries of legal analysis. Natural language processing permits the symbiosis of close and distant reading (Moretti 2000). Statistical techniques help us see the forest among trees in international relations. Causal inference provides several convincing frameworks to rationally analyze and debate the practical impact of legal norms. Network analysis reveals not just citation habits, but a whole new world of relations in society.&lt;/p&gt;
&lt;p&gt;We have nothing to lose but the chains of our pride.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Slides for 2025 ESELS Toulouse Conference Talks</title>
      <link>https://seanfobbe.com/posts/2025-06-25_slides-esels-conference-toulouse/</link>
      <pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-06-25_slides-esels-conference-toulouse/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Slides]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/15729273/files/Fobbe_2025-06-20_ESELS-UN-Security-Council-Fobbe_final.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Words of Power: Introducing a Comprehensive Corpus of UN Security Council Resolutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Slides]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/15729818/files/Fobbe_2025-06-19_ESELS-German-Federal-Court-of-Justice-BGH-Fobbe_final.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Introducing Corpora of Judgments for the German Federal Court of Justice (Bundesgerichtshof) in Criminal Matters (1950-1999, 2020–2024) and Civil Matters (2000-2024)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;slides-for-2025-esels-conference&#34;&gt;
  Slides for 2025 ESELS Conference
  &lt;a class=&#34;heading-link&#34; href=&#34;#slides-for-2025-esels-conference&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The slides for my conference presentations from the &lt;a href=&#34;https://esels.eu/conference/esels-conference-toulouse-19-20-june-2025/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;2025 European Society for Empirical Legal Studies (ESELS) Annual Conference in Toulouse&lt;/a&gt; are now online!&lt;/p&gt;
&lt;p&gt;In case you missed the talks, you can now get the slides from Zenodo. Click the links in the box above to go straight to the PDF files.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://seanfobbe.com/posts/2025-05-25_upcoming-presentations-esels-conference-june-unsc-bgh/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;abstracts for both presentations&lt;/a&gt; are available on my website.&lt;/p&gt;
&lt;p&gt;See you next year in &lt;a href=&#34;https://en.wikipedia.org/wiki/Ljubljana&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ljubljana&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[19-20 June] Upcoming Talks at the European Society for Empirical Legal Studies (ESELS) Conference in Toulouse</title>
      <link>https://seanfobbe.com/posts/2025-05-25_upcoming-presentations-esels-conference-june-unsc-bgh/</link>
      <pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-05-25_upcoming-presentations-esels-conference-june-unsc-bgh/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/15191558&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;Words of Power: Introducing a Comprehensive Corpus of UN Security Council Resolutions&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.3942742&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesgerichtshofs (CE-BGH)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.4540376&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Entscheidungen des Bundesgerichtshofs in Strafsachen aus dem 20. Jahrhundert (BGH-Strafsachen-20Jhd)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;upcoming-talks-at-european-society-for-empirical-legal-studies-esels-annual-conference&#34;&gt;
  Upcoming Talks at European Society for Empirical Legal Studies (ESELS) Annual Conference
  &lt;a class=&#34;heading-link&#34; href=&#34;#upcoming-talks-at-european-society-for-empirical-legal-studies-esels-annual-conference&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;More Empirical Legal Studies talks coming up! I&amp;rsquo;ll be speaking at the &lt;a href=&#34;https://esels.eu/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;European Society for Empirical Legal Studies (ESELS)&lt;/a&gt; Annual Conference (19&amp;ndash;20 June 2025) in Toulouse &amp;mdash; twice.&lt;/p&gt;
&lt;p&gt;On 19 June I will discuss efforts (with Tilko Swalve) to produce corpora of all judgments and decisions rendered by the German Federal Court of Justice (BGH). I&amp;rsquo;m especially excited about the UNSC talk on 20 June, where I present our new pre-print entitled &lt;a href=&#34;https://zenodo.org/records/15191558&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;Words of Power: Introducing a Comprehensive Corpus of UN Security Council Resolutions&amp;rdquo;&lt;/a&gt;, co-authored with Lorenzo Gasbarri and Niccolò Ridi, already available open access.&lt;/p&gt;
&lt;p&gt;Be sure to check out the &lt;a href=&#34;https://esels.eu/esels-conference-toulouse-19-20-june-2025/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;conference website&lt;/a&gt; and &lt;a href=&#34;https://esels.eu/wp-content/uploads/2025/05/ESELS-Conference-book-Toulouse-2025.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;conference book&lt;/a&gt; for other great talks!&lt;/p&gt;
&lt;h1 id=&#34;schedule&#34;&gt;
  Schedule
  &lt;a class=&#34;heading-link&#34; href=&#34;#schedule&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Panel&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Date&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Time&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Title of Presentation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;2.2&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;19 June&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;14:00 &amp;ndash; 15:30&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Introducing Corpora of Judgments for the German Federal Court of Justice (Bundesgerichtshof) in Criminal Matters (1950-1999, 2020&amp;ndash;2024) and Civil Matters (2000-2024)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;6.1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;20 June&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;16:00 &amp;ndash; 17:30&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;Words of Power: Introducing a Comprehensive Corpus of UN Security Council Resolutions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;un-security-council-unsc-talk&#34;&gt;
  UN Security Council (UNSC) Talk
  &lt;a class=&#34;heading-link&#34; href=&#34;#un-security-council-unsc-talk&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Words of Power: Introducing a Comprehensive Corpus of UN Security Council Resolutions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The United Nations Security Council is the most influential and powerful of the principal UN organs. Article 24 of the UN Charter assigns the UNSC &amp;ldquo;primary responsibility for the maintenance of international peace and security&amp;rdquo;. Chapter VII of the Charter grants the Council unique binding powers, but the UNSC plays a prominent role in all affairs of the UN.&lt;/p&gt;
&lt;p&gt;We introduce a novel international legal dataset containing texts and metadata for all resolutions of the United Nations Security Council (UNSC) from resolution 1 (1946) through resolution 2722 (2024). The dataset provides resolution texts in all six official UN languages, draft texts and meeting records in English, as well as extensive metadata, for a grand total of 82 variables.&lt;/p&gt;
&lt;p&gt;The computational workflow is engineered end-to-end as a fully automated extract-transform-load (ETL) data pipeline with citation analysis and NLP components, unit tests and complex reporting. The declarative workflow is fault- tolerant, resumable and stores intermediate results in over one hundred individual checkpoints. The underlying code is published open source under the GPL-3.&lt;/p&gt;
&lt;p&gt;In an international community founded on the rule of law the activities of the United Nations must be public, transparent and defensible. In these troubled times where the rule-based international order is under attack it is more important than ever to document, understand and promote systematic approaches to international law.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keywords:&lt;/strong&gt; United Nations, UN Security Council, Data Engineering, Network Analysis, Natural
Language Processing&lt;/p&gt;
&lt;h1 id=&#34;federal-court-of-justice-bgh-talk&#34;&gt;
  Federal Court of Justice (BGH) Talk
  &lt;a class=&#34;heading-link&#34; href=&#34;#federal-court-of-justice-bgh-talk&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Introducing Corpora of Judgments for the German Federal Court of Justice (Bundesgerichtshof) in Criminal Matters (1950-1999, 2020&amp;ndash;2024) and Civil Matters (2000-2024)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Bundesgerichtshof (BGH), the German Federal Court of Justice, is the highest court of appeal in civil and criminal matters in Germany. BGH judgments receive regular and intense scrutiny, but German doctrinal scholars routinely focus only on a single decision or a small set of decisions. Quantitative approaches are often infeasible because of lack of data.&lt;/p&gt;
&lt;p&gt;We present two original datasets on the German Federal Court of Justice: 1) a corpus of all 77,892 judgments in civil and criminal matters for the period 2000-2024 with 36 variables plus the internal citation network and 2) a corpus of 36,316 judgments in criminal matters for the period 1950-1999 with 31 variables.&lt;/p&gt;
&lt;p&gt;We use state-of-the-art data engineering techniques to construct reproducible extract-transform-load (ETL) pipelines that automatically acquire, clean, test, analyze and document German Federal Court of Justice data from the official BGH database and an older criminal justice dataset provided to the authors. Citations are extracted from judgment full texts, analyzed and provided in GraphML format.&lt;/p&gt;
&lt;p&gt;Despite centuries of intense academic engagement with the law, quantitative and empirical approaches remain exceedingly rare in Germany. Lack of data, lack of training, lack of awareness and many other reasons have caused this situation. Solving the data problem is a first step to empowering German lawyers in the use of quantitative methods and may help with an empirical turn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keywords:&lt;/strong&gt; Bundesgerichtshof, Criminal Law, Civil Law, Data Engineering, Network Analysis&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[28 May 2025] Upcoming Talk on Legal Data Engineering (Online)</title>
      <link>https://seanfobbe.com/posts/upcoming-talk-on-legal-data-engineering/</link>
      <pubDate>Tue, 13 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/upcoming-talk-on-legal-data-engineering/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll be speaking about Legal Data Engineering at the &lt;a href=&#34;https://legaltechcologne.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Legal Tech Lab Cologne&lt;/a&gt; on 28 May 2025!&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll discuss the foundations of Legal Data Engineering (as a sub-discipline of Legal Data Science), the practice of Legal Data Engineering and its legal framework in Germany.&lt;/p&gt;
&lt;p&gt;There will be opportunities for Q&amp;amp;A and networking, I&amp;rsquo;m told.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When? 28 May 2025 at 7 pm (CEST)&lt;/li&gt;
&lt;li&gt;Zoom link: &lt;a href=&#34;https://us06web.zoom.us/j/85612568748&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://us06web.zoom.us/j/85612568748&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Password: 691761&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Impatient? Felipe Molina and I spoke about Legal Data Science on the &lt;a href=&#34;https://legaltechcologne.de/podcast/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Talking Legal Tech&lt;/a&gt; podcast and &lt;a href=&#34;https://creators.spotify.com/pod/profile/legaltech/episodes/Was-Legal-Data-Science-ist--warum-sich-alle-Juristinnen-damit-beschftigen-sollten-mit-dem-Daten-Detektiv-Sen-Fobbe-e1q1js2/a-a8phfug&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;the recording is available online&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Pre-Print] Words of Power: Introducing a Comprehensive Corpus of UN Security Council Resolutions</title>
      <link>https://seanfobbe.com/posts/2025-04-11_new-preprint-words-of-power-introducing-un-security-council-resolutions-corpus/</link>
      <pubDate>Fri, 11 Apr 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-04-11_new-preprint-words-of-power-introducing-un-security-council-resolutions-corpus/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/15191558&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Words of Power: Introducing a Comprehensive Corpus of UN Security Council Resolutions (Pre-Print 2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;new-pre-print-on-un-security-council-data&#34;&gt;
  New Pre-Print on UN Security Council Data
  &lt;a class=&#34;heading-link&#34; href=&#34;#new-pre-print-on-un-security-council-data&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;New Pre-Print! We introduce the &lt;a href=&#34;https://doi.org/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt;, a novel international legal-political dataset containing texts and metadata for all resolutions of the United Nations Security Council (UNSC) from resolution 1 (1946) through resolution 2722 (2024),  as published by the &lt;a href=&#34;https://digitallibrary.un.org/?ln=en&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;UN Digital Library (UNDL)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The dataset provides full resolution texts in all six official UN languages, draft texts and full meeting records in English, as well as dozens of metadata variables, for a grand total of 82 variables in structured tabular CSV format, accompanied by extensive narrative documentation. In addition to the main tabular dataset the CR-UNSC is accompanied by specialized variants for network analysis and bibliography management.&lt;/p&gt;
&lt;p&gt;The network analysis variant of the dataset offers citation network data in GraphML format containing all full-text citations to UN Security Council and to UN General Assembly resolutions associated with 54 node-level metadata variables and citation counts.&lt;/p&gt;
&lt;p&gt;The bibliography management variant reproduces a significant part of the dataset metadata in BibTeX format ready for import into widely used reference managers such as Zotero, Jabref, Citavi and Endnote. The bibliographic database ensures inclusive access to the dataset for traditional researchers with no expertise in data analysis.&lt;/p&gt;
&lt;p&gt;The computational workflow is engineered as a fully automated end-to-end extract-transform-load (ETL) data pipeline with citation analysis and NLP components, unit tests and extensive reporting. The declarative workflow is fault-tolerant, resumable and stores intermediate results in over 100 individual checkpoints. The code is published open source under the GNU General Public License Version 3 (GPLv3).&lt;/p&gt;
&lt;p&gt;We intend to update the corpus at least once per year. The most recent version of the CR-UNSC corpus will always be available open access via Zenodo through its Concept DOI located at &lt;a href=&#34;https://doi.org/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.7319783&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;author-websites&#34;&gt;
  Author Websites
  &lt;a class=&#34;heading-link&#34; href=&#34;#author-websites&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Seán Fobbe &amp;mdash; &lt;a href=&#34;https://www.seanfobbe.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.seanfobbe.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lorenzo Gasbarri &amp;mdash; &lt;a href=&#34;https://www.lorenzogasbarri.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.lorenzogasbarri.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Niccolò Ridi &amp;mdash; &lt;a href=&#34;https://www.kcl.ac.uk/people/niccolo-ridi&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.kcl.ac.uk/people/niccolo-ridi&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Migrating my Open Source Projects to Codeberg</title>
      <link>https://seanfobbe.com/posts/2025-04-10_migrating-open-source-code-from-github-to-codeberg/</link>
      <pubDate>Thu, 10 Apr 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-04-10_migrating-open-source-code-from-github-to-codeberg/</guid>
      <description>&lt;h1 id=&#34;open-source-development-now-on-codeberg&#34;&gt;
  Open Source Development now on Codeberg
  &lt;a class=&#34;heading-link&#34; href=&#34;#open-source-development-now-on-codeberg&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Effectively immediately, I have migrated all of my Open Source projects from &lt;a href=&#34;https://github.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GitHub&lt;/a&gt; to &lt;a href=&#34;https://codeberg.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Codeberg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Future Open Source development will continue on Codeberg only.&lt;/p&gt;
&lt;p&gt;All GitHub repositories will remain available as public archives to ensure that nothing breaks for other people and the scholarly record is maintained. However, please look to my &lt;a href=&#34;https://code.seanfobbe.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Zenodo code archive&lt;/a&gt; if you are looking for stable and citeable code releases.&lt;/p&gt;
&lt;h1 id=&#34;why-codeberg&#34;&gt;
  Why Codeberg?
  &lt;a class=&#34;heading-link&#34; href=&#34;#why-codeberg&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;ve become increasingly concerned about the future of open source projects hosted by commercial companies, more specifically companies based in the United States. The wholesale turn towards AI in the enterprise world and its pillage of the open software and open culture ecosystem has been quite bad already. However, add to that the  erratic, immoral and brutal behavior of the second Trump administration, which is likely to grow worse over time. It is quite probable that every bit of US soft power will be turned into a political weapon before long, including the market dominance of its tech companies.&lt;/p&gt;
&lt;p&gt;What could this mean in practice? A shutdown of &amp;ldquo;leftist&amp;rdquo; open source projects? Account bans for human rights lawyers? Sharing of personal data on &amp;ldquo;undesirables&amp;rdquo; with law enforcement? Intentional censorship of source code? I have no idea, but the tariff saga, enforced disappearance of persons in the US and the constant attacks on the rule of law should make anyone wary of relying on US infrastructure.&lt;/p&gt;
&lt;p&gt;Therefore I&amp;rsquo;ve chosen to migrate all of my Open Source projects to &lt;a href=&#34;https://codeberg.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Codeberg&lt;/a&gt;, a git hosting platform run by the eponymous German non-profit organization. Codeberg is organized as a collective membership-based non-profit and I&amp;rsquo;ve additionally chosen to join the non-profit as a member because I believe it is important to keep the stewardship of open source infastructure in the community instead of outsourcing it to commercial companies.&lt;/p&gt;
&lt;p&gt;Technically speaking, Codeberg has impressed me.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Codeberg web interface is much (!) faster and more responsive compared to GitHub&lt;/li&gt;
&lt;li&gt;The Git clone and push feel about twice as fast as GitHub (not that it matters much)&lt;/li&gt;
&lt;li&gt;Much cleaner interface than GitHub, esp. less bloat and less featuritis&lt;/li&gt;
&lt;li&gt;No silly AI tools being pushed into my face all the time&lt;/li&gt;
&lt;li&gt;Codeberg activity overview is very helpful and well organized&lt;/li&gt;
&lt;li&gt;Codeberg migration tool works well&lt;/li&gt;
&lt;li&gt;The OSS git platform software that Codeberg runs is called &lt;a href=&#34;https://forgejo.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Forgejo&lt;/a&gt;, a fork of Gitea.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I look forward to exploring Codeberg and engaging with the non-profit organization in the future!&lt;/p&gt;
&lt;h1 id=&#34;notes-on-the-migration&#34;&gt;
  Notes on the Migration
  &lt;a class=&#34;heading-link&#34; href=&#34;#notes-on-the-migration&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The migration from GitHub to Codeberg was largely painless, although moving, checking and archiving ~30 repositories individually took some time.&lt;/p&gt;
&lt;p&gt;Codeberg offers an excellent migration tool that can copy repositories from GitHub and other Git hosting platforms, including wikis, LFS files, issues, pull requests, labels, milestones and releases. I primarily migrated issues and releases, but everything looks like it is in order.&lt;/p&gt;
&lt;p&gt;Codeberg does offer private repositories, but limits them to 100 MB in size because the organization wants to promote open source, not private development. I believe this is fair.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The Censorship of Science in the United States</title>
      <link>https://seanfobbe.com/posts/2025-04-04_censorship-of-science-united-states/</link>
      <pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-04-04_censorship-of-science-united-states/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll be honest, I don&amp;rsquo;t intend to submit academic papers to US-based journals and conferences anymore.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Self-censorship of science at US universities and scientific organizations is in full swing and I see virtually no institutional resistance (although some individual scholars are protesting). I don&amp;rsquo;t expect to get a fair hearing with human rights-oriented empirical legal research in peer review any longer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The way this is going I would expect even currently neutral journals to fold within the usual timeframe of  a paper review process. I don&amp;rsquo;t feel like burning a paper in the hopes of getting it published before the door closes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I prefer to submit my research to journals backed by institutions that support human dignity, diversity and the freedom of scientific research.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&amp;rsquo;ve all seen where this went in Europe during the 1930s. I hope the US will learn from our history, but I am not optimistic right now.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Essay] The Intelligent AI Coin: A Thought Experiment</title>
      <link>https://seanfobbe.com/posts/2025-02-21_intelligent-ai-coin-thought-experiment/</link>
      <pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-02-21_intelligent-ai-coin-thought-experiment/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Recent years have seen a concerning trend towards normalizing decisionmaking by Large Language Models (LLM), including in the adoption of legislation, the writing of judicial opinions and the routine administration of the rule of law. AI agents acting on behalf of human principals are supposed to lead us into a new age of productivity and convenience. The eloquence of AI-generated text and the narrative of super-human intelligence invite us to trust these systems more than we have trusted any human or algorithm ever before.&lt;/p&gt;
&lt;p&gt;Frank Herbert captured the essence of this looming danger in &lt;a href=&#34;https://en.wikipedia.org/wiki/Dune_%28novel%29&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dune&lt;/a&gt; (Herbert [1965] 1968, 23):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Once men turned their thinking over to machines in the hope that this would set them free. But that only permitted other men with machines to enslave them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is difficult to know whether a machine is actually intelligent because of problems with construct validity, plagiarism, reproducibility and transferability in AI benchmarks. Most people will either have to personally evaluate the usefulness of AI tools against the benchmark of their own lived experience or be forced to trust an expert.&lt;/p&gt;
&lt;p&gt;To explain this conundrum I propose the &lt;em&gt;Intelligent AI Coin Thought Experiment&lt;/em&gt; and discuss four objections: the restriction of agents to low-value decisions, making AI decisionmakers open source, adding a human-in-the-loop and the general limits of trust in human agents.&lt;/p&gt;
&lt;h1 id=&#34;table-of-contents&#34;&gt;
  Table of Contents
  &lt;a class=&#34;heading-link&#34; href=&#34;#table-of-contents&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#overview&#34;&gt;Overview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-rise-of-llm-based-decisionmaking-and-agentic-ai&#34;&gt;The Rise of LLM-based Decisionmaking and Agentic AI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#freedom-through-machine-intelligence&#34;&gt;Freedom through Machine Intelligence?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#how-would-you-even-know-if-your-ai-is-intelligent&#34;&gt;How Would You Even Know If Your AI Is Intelligent?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-intelligent-ai-coin-thought-experiment&#34;&gt;The Intelligent AI Coin Thought Experiment&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#some-objections&#34;&gt;Some Objections&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#references&#34;&gt;References&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;h1 id=&#34;the-rise-of-llm-based-decisionmaking-and-agentic-ai&#34;&gt;
  The Rise of LLM-based Decisionmaking and Agentic AI
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-rise-of-llm-based-decisionmaking-and-agentic-ai&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The rise of Large Language Models (LLM) has been accompanied by a concerning trend: more and more people are expressing an interest in allowing LLMs (or, more often, a service built on an LLM, e.g. &lt;em&gt;ChatGPT&lt;/em&gt;) to make decisions for them. On the public internet this often takes the form of grandstanding social media posts that begin with “I asked ChatGPT and this is what it told me to do!”.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;This trend is related to the theme of &lt;em&gt;agentic artificial intelligence&lt;/em&gt; (“agentic AI”), which is usually taken to mean some form of captive, docile and benevolent AI that takes general instructions, performs tasks and makes minor decisions on behalf of a human principal. Sort of like having a servile fantasy employee willing to go a dozen extra miles — just without the irritating need to pay a human being a living wage. We’ve seen this trope many, many times in science fiction. Justified or not, a large number of people believe that the time for science fiction to become reality is now.&lt;/p&gt;
&lt;p&gt;The reason I am concerned about LLM-based decisionmaking and agentic AI is not because someone might buy the wrong pet food or that people could be ripped off when the AI servant falls for some a scam on Amazon Marketplace. This type of problem may become a serious consumer protection issue if agentic AI takes off in the mainstream, but it will remain manageable. The true danger lies in the damage done to entire social systems, particularly through &lt;a href=&#34;https://en.wikipedia.org/wiki/Democratic_backsliding&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;democratic backsliding&lt;/a&gt; and an erosion of the rule of law.&lt;/p&gt;
&lt;p&gt;Unfortunately, LLM-based decisionmaking is already being trialed for the &lt;a href=&#34;https://www.schneier.com/blog/archives/2025/01/ai-will-write-complex-laws.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;creation of laws&lt;/a&gt;, the &lt;a href=&#34;https://www.schneier.com/blog/archives/2025/01/ai-will-write-complex-laws.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;writing of judicial opinions&lt;/a&gt; and a lot of routine administrative work that bores people to tears but is in fact fundamental to the functioning of the rule of law. The trend towards AI decisionmaking normalizes the delegation of complex decisions to opaque systems. Systems that are ripe targets for capture by hostile interests and actors who prefer dictatorship over democracy and promote nepotism over the rule of law.&lt;/p&gt;
&lt;h1 id=&#34;freedom-through-machine-intelligence&#34;&gt;
  Freedom through Machine Intelligence?
  &lt;a class=&#34;heading-link&#34; href=&#34;#freedom-through-machine-intelligence&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Of course, science fiction was there first. Frank Herbert explained the problem in &lt;a href=&#34;https://en.wikipedia.org/wiki/Dune_%28novel%29&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dune&lt;/a&gt; (Herbert [1965] 1968, 23):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Once men turned their thinking over to machines in the hope that this would set them free. But that only permitted other men with machines to enslave them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Consider Twitter, now known as “X”. Twitter began as a passable attempt at creating a digital town square. Now, in 2025, Twitter/X has lost most of its value as a public space and has been transformed into a bullying tool for an out-of-control billionaire hell-bent on riding the rising tide of fascism, destroying his enemies and enriching himself even further. The algorithm now serves the purposes of one man, at the expense of many.&lt;/p&gt;
&lt;p&gt;Imagine what might happen if we delegate not just control of information flows, but entire decisionmaking chains to black box systems that can be captured by anyone with a few billions and a vendetta. Perhaps these decisionmaking systems will even be purpose-built to exert covert influence, presenting a more benign image than X to the world. You wouldn’t even need to bribe all those elected representatives with generous campaign donations if you can control the computer system that tells them what the “best” course of action is.&lt;/p&gt;
&lt;p&gt;This has obviously happened before to social and technical infrastructure of public importance. History knows of more than just a few outrageous corruption scandals, regulatory captures and democracies damaged beyond repair. Nor is predatory algorithmic decisionmaking an entirely new phenomenon. We’ve seen &lt;a href=&#34;https://en.wikipedia.org/wiki/2010_flash_crash&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;flash crashes&lt;/a&gt; caused by nefarious trading algorithms, automated &lt;a href=&#34;https://chicagounbound.uchicago.edu/cgi/viewcontent.cgi?article=13801&amp;amp;context=journal_articles&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;sentencing decisions dripping with hidden racism&lt;/a&gt; and lives destroyed by &lt;a href=&#34;https://www.amnesty.org/en/latest/news/2021/10/xenophobic-machines-dutch-child-benefit-scandal/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;false allegations of welfare fraud&lt;/a&gt; based on discriminatory algorithms.&lt;/p&gt;
&lt;p&gt;Then again, corruption and democratic backsliding in the age of LLMs are likely to occur on an entirely different level of opacity and scale. This is because the eloquence of AI-generated text and the narrative of super-human intelligence invite us to trust these systems more than we have trusted any human or algorithm ever before.&lt;/p&gt;
&lt;p&gt;And I am desperately afraid that people will extend that trust.&lt;/p&gt;
&lt;h1 id=&#34;how-would-you-even-know-if-your-ai-is-intelligent&#34;&gt;
  How Would You Even Know If Your AI Is Intelligent?
  &lt;a class=&#34;heading-link&#34; href=&#34;#how-would-you-even-know-if-your-ai-is-intelligent&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;There has always been intense debate about what “intelligence” means and whether our newest computer algorithms have achieved some form of intelligence roughly comparable to modern living creatures. Over the course of the past few years alone LLMs and their derivative services have been compared to everything from &lt;a href=&#34;https://www.businessinsider.com/we-are-years-off-human-level-ai-meta-scientist-2023-12&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;cats and dogs&lt;/a&gt;, to &lt;a href=&#34;https://gavstech.com/blogs/talk-to-ai-like-its-a-toddler/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;toddlers&lt;/a&gt; and to &lt;a href=&#34;https://www.forbes.com/sites/meganpoinski/2023/11/30/why-ai-is-like-infinite-interns/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;“infinite interns”&lt;/a&gt;.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; Recent claims have even floated &lt;a href=&#34;https://www.fastcompany.com/91189817/openais-new-o1-models-push-ai-to-phd-level-intelligence&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;“PhD-level” intelligence&lt;/a&gt; for systems that take time to “think” about their answer.&lt;/p&gt;
&lt;p&gt;And of course there’s always &lt;em&gt;that&lt;/em&gt; type of influencer who proclaims the advent of super-intelligence with each major product release.&lt;/p&gt;
&lt;p&gt;Bless their little influencer hearts.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;On Super-Human Intelligence&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am skeptical of “super-human intelligence” claims made by AI evangelists. Specialized tools like machines and computer programs routinely solve certain classes of problems with super-human speed and quality — that is the entire point of making specialized tools.&lt;/p&gt;
&lt;p&gt;Your trusty hand-held calculator can do arithmetic (and usually other kinds of math) with a speed and accuracy that cannot be matched by any human being on earth. However, framing this ability in terms of “intelligence” isn’t really helpful in understanding how a calculator works.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The definition of intelligence and our ability to artificially create it are complicated problems, but I’d like to focus on a simpler question:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;How would you even know that your AI is intelligent?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I mean you, the regular person without an advanced degree in an AI-related field and no expertise in building or benchmarking models.&lt;/p&gt;
&lt;p&gt;With humans this is sort-of easy. In the modern age we assume that all humans have a problem-solving mental ability we call “intelligence”, an ability that differs only in degree, not in kind. If a life-form is human, it probably has its own mind and possesses and can use intelligence by default, barring any serious physical or mental conditions. It’s not that we can easily tell if people really are intelligent or just clever automata.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; We assume intelligence based on their humanity. Historically this wasn’t an easy development and racism got in the way rather often, but we got there eventually. Intelligent is often understood to mean “thinks and solves problems like a human being”.&lt;/p&gt;
&lt;p&gt;Where this assumption breaks down is when we try to apply the concept of “intelligence” to non-humans and machines.&lt;/p&gt;
&lt;p&gt;Scientists have tried to define intelligence, break it down into individual components and to test humans and machines against these expectations to measure their true intellectual ability. Human IQ tests contain a range of verbal, numerical and spatial reasoning tasks. The raw test results for a test-taker are benchmarked against the performance of other humans. AI benchmarks consist of a similar range of reasoning tasks against which machines are tested and then compared to other machines (and humans, in some cases).&lt;/p&gt;
&lt;p&gt;Human IQ tests do not measure the full spectrum of human mental ability, as they mainly focus on abstract tasks, not on social and emotional capacity. This is why their &lt;em&gt;construct validity&lt;/em&gt; — meaning whether they adequately measure the concept of intelligence — &lt;a href=&#34;https://en.wikipedia.org/wiki/Iq_test#Validity_as_a_measure_of_intelligence&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;has been called into question&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;AI benchmarks face &lt;a href=&#34;https://www.technologyreview.com/2024/11/26/1107346/the-way-we-measure-progress-in-ai-is-terrible/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;similar problems and some of their own&lt;/a&gt; (Reuel et al. 2024):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Construct validity&lt;/strong&gt; is as questionable with AI benchmarks as it is with human IQ tests. What is intelligence? What is reasoning? If we fail to define either for humans, how can we define it for AI? And if we successfully define them for humans, does this tell us something about machines?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cheating&lt;/strong&gt; is a challenge because both the questions and answers for a test are available online somewhere. Often it is not clear if the tested system actually performed some kind of reasoning or simply plagiarized the answer from its considerable corpus of training data. Cheating invalidates human test performance and so it should invalidate AI test performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reproducibility&lt;/strong&gt; is a problem related to cheating: if the test and its answers are published, new AI systems will simply ingest the test and plagiarize the answer — reminiscent of a human test-taker bringing their notes to a closed-book exam. However, if the test and the answers are not published, it is very difficult to independently reproduce the test and evaluate the quality of the benchmark.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transferability&lt;/strong&gt; means the gap between test and practical performance. If a human performs well on an artificial IQ test, will the human succeed against real problems? If the LLM performs well on an artificial benchmark, will it be able to perform useful tasks in the real world?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personally, I don’t think AI benchmarks are helpful in deciding whether a particular (version of an) LLM is useful, high-quality or not. Most people will not be using a benchmarked, version-controlled model directly, but some kind of service that adds layers and layers of complexity on top of the actual model to modify the user experience. These services may or may not be comparable to the benchmarked model and, even if the services are benchmarked directly, they will usually change often and unpredictably, invalidating the benchmark results.&lt;/p&gt;
&lt;h1 id=&#34;the-intelligent-ai-coin-thought-experiment&#34;&gt;
  The Intelligent AI Coin Thought Experiment
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-intelligent-ai-coin-thought-experiment&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Most people aren’t scientists and do not understand, follow or care about AI benchmarks. If ordinary people want to rely on an AI tool they must do one of the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Personally evaluate the quality of an AI tool against the benchmark of their lived experience, or&lt;/li&gt;
&lt;li&gt;Trust in the word of experts that an AI tool is actually “intelligent” according to some expert definition&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To give you a feel for the problem I’d like to propose a thought experiment: the Intelligent AI Coin.&lt;/p&gt;
&lt;p&gt;Let as assume you are willing to delegate your decision problems to an external agent. For simplicity’s sake, let us assume that these are classical decision problems with only two answers: “yes” and “no”.&lt;/p&gt;
&lt;p&gt;You come to me for help in selecting a tool to solve your problems. I offer you two identical-looking coins that can make yes/no decisions for you:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A traditional fair coin&lt;/li&gt;
&lt;li&gt;A super-intelligent AI-powered coin&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The &lt;strong&gt;Traditional Fair Coin&lt;/strong&gt; is one of those legendary objects found in every statistics textbook. “Fair” means that if you flip the coin an infinite number of times, then in the long run it will show heads 50% of the time and tails 50% of the time. Using a fair coin will quickly get you a “yes” or “no” answer to your decision problem. The result will be completely random and take into account zero information from your actual problem. But you do get a result and it’s a time-honored method of deciding if you can’t do it yourself.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Intelligent AI Coin&lt;/strong&gt; is powered by a state-of-the-art advanced neural network decision making algorithm that can understand your problem with human compassion, reason about it with PhD-level intelligence, possesses a perfect moral compass, can access the entirety of human knowledge, is friendly, benevolent, docile and your perfect servant. Flip it, and it will give you the perfect “yes” or “no” to your question and bring you all the success in life you ever wished for.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;I honestly doubt that such an AI exists today or will exist in my lifetime, but this is a thought experiment, so let’s pretend that it could.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;There is one catch: I did mention that the coins look identical. You have no access to their decisionmaking internals. You cannot question the coins about their nature. You can flip them as often as you like in response to decision problems.&lt;/p&gt;
&lt;p&gt;How do you tell the difference between the two coins?&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;This thought experiment is closely related to the &lt;a href=&#34;https://en.wikipedia.org/wiki/Chinese_room&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Chinese room thought experiment&lt;/a&gt; proposed by Searle (1980). I believe a coin is closer to the lived reality of most people, though. See also the famous &lt;em&gt;imitation game&lt;/em&gt; proposed by Turing (1950) which has been popularized as the &lt;a href=&#34;https://en.wikipedia.org/wiki/Turing_test&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Turing Test&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;option-1-evalute-the-coins-yourself&#34;&gt;
  Option 1: Evalute the Coins Yourself
  &lt;a class=&#34;heading-link&#34; href=&#34;#option-1-evalute-the-coins-yourself&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;You could try to evaluate the coins yourself. Test them against your own problems. If the results match your intuition or seem useful, you should be able to rely on the tested coin as a tool. If you become extremely successful, good-looking, wealthy and sought-after it would seem that your coin is the advanced AI coin. If the results just don’t seem to make a difference in your life, you probably are using the traditional coin.&lt;/p&gt;
&lt;p&gt;Unfortunately this personal evaluation strategy isn’t feasible for most high-stakes decision problems.&lt;/p&gt;
&lt;p&gt;First, there is usually a significant time lag between decision and result. The results from consequential decisions tend to happen months or years down the line. Examples might be starting a war, founding a startup, investments in the stock market, accepting a new job, the adoption of new laws, modification of administrative practice and so on.&lt;/p&gt;
&lt;p&gt;Second, with most interesting real world problems the definition of success is problematic. For example, if someone maybe committed a crime and is judged guilty, is this a case of successful deterrence or a failure of due process? Variation: if someone committed a crime — without reasonable doubt — and is given a decades-long prison sentence, is this a success of retributive justice or a failure to reintegrate the offender into society? You might be able to tell success from failure if you spend a lot of time understanding each individual case, weighing the evidence and considering the advantages and disadvantages of each action in light of your internal moral compass and the values of your society.&lt;/p&gt;
&lt;p&gt;If you just flip a coin you would never know the difference.&lt;/p&gt;
&lt;p&gt;Third, frequency matters. Sometimes the decision problem only occurs once or is very rare (war, marriage, emigration, choice of education, other existential decisions). Sometimes all the relevant decision problems are similar, but subtly unique (educating students, criminal trials). Most often you will face a couple of related high-stakes problems (perhaps less than ten), but there will be many unique sets of high-stakes problems. Too few to tell if the difference between the coins is a) due to accident or b) due to the true mechanisms powering the tool.&lt;/p&gt;
&lt;p&gt;In statistical terms, in the case of important decisions problems your sample size is often too small.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Why is it a problem if your sample size is too small? Check out my open-source &lt;a href=&#34;https://seanfobbe.com/tutorials/representativeness/&#34; &gt;tutorial on representativeness, samples and populations&lt;/a&gt; for some intuition on sample size. It doesn’t deal with causal inference and statistical comparisons between experimental conditions, but it should be helpful to get a feel for sample sizes.&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;option-2-trust-the-expert&#34;&gt;
  Option 2: Trust the Expert
  &lt;a class=&#34;heading-link&#34; href=&#34;#option-2-trust-the-expert&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The alternative is to trust an expert who tells you which coin is all-powerful AI coin.&lt;/p&gt;
&lt;p&gt;And this is the crux with modern AI tools: if personal evaluation is infeasible you have to take the word of an (alleged) expert that a) their computer program actually does the super-human intellectual work that it claims to do and b) that it will act in your best interests. Meaning the coin doesn’t just give you a random decision at best or a malicious decision at worst.&lt;/p&gt;
&lt;p&gt;Salespeople tell you the similar things when they sell miracle cures or promise you a place in heaven for 999.99 USD. And it still works for much the same reason that astrology, horoscopes, tarot cards, fortune cookies and climate denial remain popular. People want to believe they can access magic, even if there is no rational empirical basis for their belief.&lt;/p&gt;
&lt;p&gt;At the end of the day, if you delegate an entire decisionmaking chain it all comes down to whether you trust an unknown person to make future choices for you, your family, friends, colleagues and anyone else you know or don’t know. At the lower end of consequence these are personal choices, at the higher end of consequence these are decisions with life-altering impact for millions of people, such as the passage of laws or the writing of judicial decisions by apex courts.&lt;/p&gt;
&lt;p&gt;We spent a lot of time developing democracy and the rule of law to create functional trust arrangements between unknown people. I do not think that kind of trust in computer systems is warranted, if it ever was. The speed at which global tech leaders are willing to bend the knee before autocrats at home and abroad shows that any kind of privately held computerized decisionmaking system will be a future liability to democracy and the rule of law.&lt;/p&gt;
&lt;h1 id=&#34;some-objections&#34;&gt;
  Some Objections
  &lt;a class=&#34;heading-link&#34; href=&#34;#some-objections&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;h2 id=&#34;objection-restrict-ai-to-low-value-decisions&#34;&gt;
  Objection: Restrict AI to Low Value Decisions
  &lt;a class=&#34;heading-link&#34; href=&#34;#objection-restrict-ai-to-low-value-decisions&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Why not stick to low-value decisions? If an AI agent is potentially untrustworthy, just use it for less important tasks or decisions where failure costs little, no?&lt;/p&gt;
&lt;p&gt;Honestly, that would be great. Stick to the small decisions. Which restaurant to go to. Which movie to watch. Whether you should have hot chocolate or coffee today. Leave it at that and I’ll get out of your hair.&lt;/p&gt;
&lt;p&gt;Sadly, I don’t think that people will leave it at that. Soon we’ll have to fix a lot of important problems left behind by AI agents that have been let loose without properly considering the consequences. We’ll have health insurance claims denied, tax fraud investigations launched, social security benefits revoked and all sorts of other harmful actions taken.&lt;/p&gt;
&lt;p&gt;All in the name of artificial super-intelligence.&lt;/p&gt;
&lt;h2 id=&#34;objection-make-ai-open-source&#34;&gt;
  Objection: Make AI Open Source
  &lt;a class=&#34;heading-link&#34; href=&#34;#objection-make-ai-open-source&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;We could remove the power abuse and corruption angle if every use of AI tools in public decisionmaking was open source, with training data, source code and model weights open to public scrutiny, plus development, testing and production systems controlled by public officials. This seems ideal on first glance, but it is not a practical solution.&lt;/p&gt;
&lt;p&gt;First, tax-payer funded institutions almost never have the money to pay market rates for the tech talent required to run government-scale operations at a quality comparable to the top players in the private tech world. The legal profession has spent centuries (successfully) developing its own civic spirit to acquire enough top lawyers to run a country, but even then competition with the private sector remains fierce. The tech sector can look back on half a century of stellar open source work, but its civic-minded sub-communities have not yet reached the critical mass to manage an entire State’s worth of technology as civil servants.&lt;/p&gt;
&lt;p&gt;Second, delegating decisionmaking to AI agents controlled by experts — civil servants — is a threat to the separation of powers. Technology will almost always be centrally managed by the executive branch. If the legislative and judicial branches of government rely on decisionmaking agents controlled by the executive, the executive controls the other branches of government. We have seen something similar playing out with expert bills drafted and adopted by the executive, which then sail through parliament without much debate because there literally isn’t a single MP left who understands the specialized technical content of the law.&lt;/p&gt;
&lt;h2 id=&#34;objection-add-a-human-to-the-loop&#34;&gt;
  Objection: Add a Human to the Loop
  &lt;a class=&#34;heading-link&#34; href=&#34;#objection-add-a-human-to-the-loop&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The theme of human-in-the-loop has been all the rage since the phenomenon of “AI hallucinations” gained mainstream attention. Fire up your AI, let it do all the hard work and then have a human double-check the results. You get the best of both worlds: AI speed and human quality. Why not have an AI decisionmaker and let a human double-check the result?&lt;/p&gt;
&lt;p&gt;This can’t work. If the human needs to do extensive thinking to come up with the right decision to a problem and the human hasn’t done the required amount of thinking, then the human cannot evaluate the decision with the expected quality.&lt;/p&gt;
&lt;p&gt;If the human does all the required thinking to solve the problem, what did you need the AI for in the first place?&lt;/p&gt;
&lt;p&gt;Also, humans are lazy. If the &lt;a href=&#34;https://en.wikipedia.org/wiki/Computer_says_no&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;computer says no&lt;/a&gt;, the human says no. Even if the decision is patently silly. This has been a challenging problem before AI and it will continue to be a problem with AI and after AI.&lt;/p&gt;
&lt;h2 id=&#34;objection-human-agents-are-untrustworthy&#34;&gt;
  Objection: Human Agents are Untrustworthy
  &lt;a class=&#34;heading-link&#34; href=&#34;#objection-human-agents-are-untrustworthy&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Trust in human agents is also an uncertain thing. Haven’t we all been hoodwinked by a car salesperson, insurance rep, travel agent, lawyer and so on? Since we cannot fully trust humans agents, why is lack of trust in AI agents problematic?&lt;/p&gt;
&lt;p&gt;One reason AI agents are fundamentally different from human agents is because control over computer systems is much more centralized than control over humans. The closest analogy to the degree of centralized control that computer systems exhibit are totalitarian States. Popular examples being Nazi Germany, Stalinist Russia and Maoist China. Instead of years of organizing, militancy and purging of enemies, a takeover of an AI agentic system could occur within minutes.&lt;/p&gt;
&lt;p&gt;Another fundamental difference is speed. Where a compromised government needs years to make all its civil servants toe the line, a compromised AI system can do so in seconds to minutes. Even a non-compromised but faulty system can make decisions at a rate no corps of human civil servants could match, turning every mistake into a tragedy.&lt;/p&gt;
&lt;p&gt;A third difference is that we have developed tools to mitigate the untrustworthiness of humans over the past millennia. These include pro-social evolutionary adjustments, religion, ethics, the rule of law and interpersonal trust policies. With AI agents we are still at the very beginning of these developments. Even if they had similar levels of (un)-trustworthiness as humans, we do not yet have adequate mitigations in place to counter this lack of faith.&lt;/p&gt;
&lt;h1 id=&#34;conclusion&#34;&gt;
  Conclusion
  &lt;a class=&#34;heading-link&#34; href=&#34;#conclusion&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;I began writing my own conclusion to this essay, but Herbert ([1965] 1968, 23) really said everything that needs to be said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Once men turned their thinking over to machines in the hope that this would set them free. But that only permitted other men with machines to enslave them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;references&#34;&gt;
  References
  &lt;a class=&#34;heading-link&#34; href=&#34;#references&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body hanging-indent&#34;&gt;
&lt;div id=&#34;ref-Herbert1968&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Herbert, Frank. (1965) 1968. &lt;em&gt;Dune&lt;/em&gt;. Hodder; Stoughton.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Reuel2024&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Reuel, Anka, Amelia Hardy, Chandler Smith, Max Lamparth, Malcolm Hardy, and Mykel J. Kochenderfer. 2024. “BetterBench: Assessing AI Benchmarks, Uncovering Issues, and Establishing Best Practices.” In &lt;em&gt;Advances in Neural Information Processing Systems (NeurIPS)&lt;/em&gt;. &lt;a href=&#34;https://betterbench.stanford.edu&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://betterbench.stanford.edu&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Searle1980&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Searle, John R. 1980. “Minds, Brains, and Programs.” &lt;em&gt;Behavioral and Brain Sciences&lt;/em&gt; 3 (3): 417–24.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Turing1950&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Turing, Alan M. 1950. “Computing Machinery and Intelligence.” &lt;em&gt;Mind&lt;/em&gt; 59 (236): 433–60.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;For some reason people are quite proud of being told what to do by a random computer program. I find this confusing, to be honest.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;It’s like people have completely forgotten that internships are supposed to be an educational experience. It has become tragically common see interns only as a disposable source of very cheap labor.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;And there are enough philosophers that consider free will an illusion and all humans automata by default.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>A Better Social Media Alternative: Come Join us on Mastodon!</title>
      <link>https://seanfobbe.com/posts/2025-02-10_open-social-media-come-join-us-on-mastodon/</link>
      <pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-02-10_open-social-media-come-join-us-on-mastodon/</guid>
      <description>&lt;h1 id=&#34;the-time-for-open-social-media-is-now&#34;&gt;
  The Time for Open Social Media is Now
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-time-for-open-social-media-is-now&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Looking for an alternative to Linkedin, Facebook, Instagram, Twitter/X and all the terrible algorithms that keep hounding you with &amp;ldquo;AI will eat your job&amp;rdquo; and &amp;ldquo;I humbly announce my promotion to master of the world&amp;rdquo; posts?&lt;/p&gt;
&lt;p&gt;You are in luck. &lt;a href=&#34;https://en.wikipedia.org/wiki/Mastodon_%28social_network%29&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mastodon&lt;/a&gt; is a vibrant social media alternative with strong civil society backing that would love to have you.&lt;/p&gt;
&lt;p&gt;Want to get started right away? Check out the beginner info over on &lt;a href=&#34;https://fedi.tips/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fedi.tips&lt;/a&gt;! And here is my personal &lt;a href=&#34;https://fediscience.org/@seanfobbe&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mastodon profile&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been on Mastodon since 2022 and honestly, it&amp;rsquo;s been one of the best social media experiences I&amp;rsquo;ve ever had. You get so much over on Mastodon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A vibrant, intellectual and avant-garde community&lt;/li&gt;
&lt;li&gt;Fantastically interesting posts because people write for people, not to please the algorithm&lt;/li&gt;
&lt;li&gt;A modern social media experience with no unnecessary bloat&lt;/li&gt;
&lt;li&gt;No advertising&lt;/li&gt;
&lt;li&gt;Almost zero AI silliness&lt;/li&gt;
&lt;li&gt;Not being blocked by rogue algorithms or insane billionaires&lt;/li&gt;
&lt;li&gt;Open source software developed by a non-profit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In terms of user experience Mastodon is closest to the original Twitter. However, you aren&amp;rsquo;t out of luck of you prefer a different type of social media platform (e.g. Instagram). There are more open alternatives such as Pixelfed (Instagram alternative) or Friendica (Facebook alternative) that can nevertheless interface directly with Mastodon over an open protocol. Collectively they are called the &lt;a href=&#34;https://en.wikipedia.org/wiki/Fediverse&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Fediverse&lt;/a&gt; (i.e. &amp;ldquo;federated universe&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;Think of it like cross-posting between Twitter, Linkedin, Facebook and Instagram all the time!&lt;/p&gt;
&lt;h1 id=&#34;why-not-bluesky&#34;&gt;
  Why not Bluesky?
  &lt;a class=&#34;heading-link&#34; href=&#34;#why-not-bluesky&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;You may wonder: why not Bluesky? Bluesky is a regular venture-backed enterprise. Like Twitter, it will be great for a couple of years, mediocre for a couple more years and then will slowly break down under the pressure of return-on-investment expectations that will destroy everything the platform once stood for.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s your choice.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Data] Citation Network of the German Federal Court of Finance (2010-2024)</title>
      <link>https://seanfobbe.com/posts/2025-01-27_neue-daten-zitationsnetzwerk-bundesfinanzhof/</link>
      <pubDate>Mon, 27 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2025-01-27_neue-daten-zitationsnetzwerk-bundesfinanzhof/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/14622341/files/CE-BFH_2025-01-14_DE_GraphML_Zitationsnetzwerk.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Citation Network of the German Federal Court of Finance as GraphML (2010-2024)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/14622341/files/CE-BFH_2025-01-14_DE_GraphML_Zitationsnetzwerk.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;German Federal Court of Finance Corpus (CE-BFH)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/14622341/files/CE-BFH_2025-01-14_Codebook.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Codebook for the CE-BFH Dataset&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Following the release of citation networks for the &lt;a href=&#34;https://seanfobbe.com/de/posts/2024-07-29_neue-daten-zitationsnetzwerk-bundesverfassungsgericht&#34; &gt;German Federal Constitutional Court (BVerfG)&lt;/a&gt; and the &lt;a href=&#34;https://seanfobbe.com/de/posts/2024-10-07_neue-daten-zitationsnetzwerk-bundesgerichtshof/&#34; &gt;German Federal Court of Justice (BGH)&lt;/a&gt; I&amp;rsquo;ve now completed and published the citation network for the German Federal Court of Finance!&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/records/14622341/files/CE-BFH_2025-01-14_DE_GraphML_Zitationsnetzwerk.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;German Federal Court of Finance Corpus (CE-BFH)&lt;/a&gt; now includes a specialized variant containing all citations to its own decisions as structured graph data, extracted from the text of those decisions. The variant is still in a beta testing phase.&lt;/p&gt;
&lt;p&gt;The scope of the citation network in Version 2025-01-14 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ca. 180.000 individual citations&lt;/li&gt;
&lt;li&gt;ca. 143.000 edges (citation connections weighted by number of individual citations)&lt;/li&gt;
&lt;li&gt;ca. 40.000 nodes (Aktenzeichen and BFHE)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following types of citations are included:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Citations from Aktenzeichen to Aktenzeichen&lt;/li&gt;
&lt;li&gt;Citations from Aktenzeichen to BFHE&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&amp;ldquo;Aktenzeichen&amp;rdquo; are German docket numbers. &amp;ldquo;BFHE&amp;rdquo; are citations to the official collection of decisions.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Aktenzeichen&lt;/em&gt; (docket number) citations are less accurate than decision citations (which require a date in addition to the &lt;em&gt;Aktenzeichen&lt;/em&gt; for unique identification). That being said, 98,73 % of all &lt;em&gt;Aktenzeichen&lt;/em&gt; in the CE-BFH dataset are unique (independent of date), so the &lt;em&gt;Aktenzeichen&lt;/em&gt; is a reasonable approximation. I intend to add decision-level citation support in the future.&lt;/p&gt;
&lt;div class=&#34;notice warning&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-triangle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Warning
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Citing decisions can only be those where the full-text is available. This means decisions dated 2010 or later. Cited decisions can be from any year.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;basic-network-statistics&#34;&gt;
  Basic Network Statistics
  &lt;a class=&#34;heading-link&#34; href=&#34;#basic-network-statistics&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Number of Nodes&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Number of Edges&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Strength (Out)&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Mean In-Degree&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Max In-Degree&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Min In-Degree&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;39,875.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;143,281.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;178,806.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;3.54&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;120.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;network-diagram-for-the-first-second-and-third-senates&#34;&gt;
  Network Diagram for the First, Second and Third Senates
  &lt;a class=&#34;heading-link&#34; href=&#34;#network-diagram-for-the-first-second-and-third-senates&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;These diagram visualize the citation network extracted from the decisions of the First, Second and Third Senate. They represent only a subset of the data. The complete network is probably too large to be visualized in any single diagram.&lt;/p&gt;
&lt;p&gt;The visualization algorithm is &lt;a href=&#34;https://en.wikipedia.org/wiki/Layered_graph_drawing&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Sugiyama&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The small white dots are individual docket numbers or BFHE decisions, the connecting lines are citations (any number). Multiple citations between the same nodes are not shown in the diagram, but the weights are available in the network data.&lt;/p&gt;
&lt;p&gt;The network is hierarchical, because newer decisions can only cite older decisions, not the other way around. The diagram is read from top to bottom.&lt;/p&gt;
&lt;p&gt;Because of the strong connections between certain decision clusters one might call them &amp;ldquo;lines of jurisprudence&amp;rdquo;, but the research on this subject is still in its infancy. The shape may simply be an artifact of the force-directed layout.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;High-resolution versions of the diagrams can be &lt;a href=&#34;https://zenodo.org/records/14622341/files/CE-BFH_2025-01-14_DE_Analyse.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;downloaded here.&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;citation-network-of-the-first-senate&#34;&gt;
  Citation Network of the First Senate
  &lt;a class=&#34;heading-link&#34; href=&#34;#citation-network-of-the-first-senate&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CE-BFH_2025-01-24_Zitationsnetzwerk_Senat-1_karmesinrot-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;citation-network-of-the-second-senate&#34;&gt;
  Citation Network of the Second Senate
  &lt;a class=&#34;heading-link&#34; href=&#34;#citation-network-of-the-second-senate&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CE-BFH_2025-01-24_Zitationsnetzwerk_Senat-2_karmesinrot-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;citation-network-of-the-third-senate&#34;&gt;
  Citation Network of the Third Senate
  &lt;a class=&#34;heading-link&#34; href=&#34;#citation-network-of-the-third-senate&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CE-BFH_2025-01-24_Zitationsnetzwerk_Senat-3_karmesinrot-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;h1 id=&#34;technical-note&#34;&gt;
  Technical Note
  &lt;a class=&#34;heading-link&#34; href=&#34;#technical-note&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;The &lt;a href=&#34;https://doi.org/10.5281/zenodo.7691842&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;source code&lt;/a&gt; for the dataset and all analysis and quality control results &lt;a href=&#34;https://doi.org/10.5281/zenodo.7691842&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;are available open access&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;further-reading&#34;&gt;
  Further Reading
  &lt;a class=&#34;heading-link&#34; href=&#34;#further-reading&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Interested in citation data for other German federal courts? I&amp;rsquo;ve released citation networks created with similar methods for the following courts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://seanfobbe.com/de/posts/2024-07-29_neue-daten-zitationsnetzwerk-bundesverfassungsgericht&#34; &gt;Citation Network of the Bundesverfassungsgericht (BVerfG)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://seanfobbe.com/de/posts/2024-10-07_neue-daten-zitationsnetzwerk-bundesgerichtshof/&#34; &gt;Citation Network of the Bundesgerichtshof (BGH)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, make sure to check out the work of &lt;a href=&#34;https://www.coupette.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Professor Dr. Dr. Corinna Coupette&lt;/a&gt;. She&amp;rsquo;s done some of the best work on German legal citation networks I&amp;rsquo;ve seen so far.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Essay] The Limits of Reproducibility with Rocker Docker Images for R</title>
      <link>https://seanfobbe.com/posts/2024-12-16_reproducibility-limits-rocker-docker-images-r/</link>
      <pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-12-16_reproducibility-limits-rocker-docker-images-r/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Reproducible scholarship is hard, but important for the scientific record and for saving yourself a lot of pain down the line. The same is true for business, because if your software makes you money and it breaks down it stops making you money.&lt;/p&gt;
&lt;p&gt;Computational reproducibility requires controlling the code, data and software environment (Buckheit and Donoho 1995; Donoho 2010, 385). Docker is a very helpful but complex solution to reproducibility in R and &lt;a href=&#34;https://www.rocker-project.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Rocker Project&lt;/a&gt; (Boettiger and Eddelbuettel 2017; Nüst et al. 2020) images make the process easier. However, the &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; line of images does not version-lock R packages for the latest version of R.&lt;/p&gt;
&lt;p&gt;This problem can persist for a long time if one relies too much on the Docker build cache, as I did.&lt;/p&gt;
&lt;p&gt;Possible solutions to the Rocker version-lock problem are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use an &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; image with the non-latest R version&lt;/li&gt;
&lt;li&gt;Pull images often&lt;/li&gt;
&lt;li&gt;Set the CRAN mirror date explicitly in the Dockerfile (my preference)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The failure to ensure reproducibility can lead to catastrophic errors and wild debugging goose chases.&lt;/p&gt;
&lt;p&gt;Read on for a thrilling tale of what can go wrong if you don’t read the documentation carefully.&lt;/p&gt;
&lt;h1 id=&#34;table-of-contents&#34;&gt;
  Table of Contents
  &lt;a class=&#34;heading-link&#34; href=&#34;#table-of-contents&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#overview&#34;&gt;Overview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#reproducible-scholarship&#34;&gt;Reproducible Scholarship&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-software-stack-in-r-projects&#34;&gt;The Software Stack in R Projects&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#docker-environments-and-rocker-images&#34;&gt;Docker Environments and Rocker Images&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-limits-of-the-rocker-r-package-version-freeze&#34;&gt;The Limits of the Rocker R Package Version Freeze&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#solutions-to-ensure-date-lock-of-r-packages&#34;&gt;Solutions to Ensure Date-Lock of R Packages&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#tracing-the-error&#34;&gt;Tracing the Error&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#references&#34;&gt;References&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;h1 id=&#34;reproducible-scholarship&#34;&gt;
  Reproducible Scholarship
  &lt;a class=&#34;heading-link&#34; href=&#34;#reproducible-scholarship&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Those who follow my work know that I spend a lot of time and effort to ensure that my scholarship is reproducible. This quote earned a permanent home in the &lt;a href=&#34;https://seanfobbe.com/code&#34; &gt;Code&lt;/a&gt; section on my website:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An article about computational results is advertising, not scholarship. The actual scholarship is the full software environment, code and data, that produced the result. [Buckheit and Donoho (1995); Donoho (2010), 385]&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reproducibility is not an easy problem and it means different things for different people in different disciplines at different times, but this zinger is a good start.&lt;/p&gt;
&lt;p&gt;Most people who teach and advocate for responsibility spend a lot of time getting people to write clear analysis pipelines in computer code and, most importantly, getting scholars to publish that code so others can check if the code really does what it is supposed to do. This is important and we should keep doing this. Especially in Empirical Legal Studies and Legal Data Science this is not yet the default.&lt;/p&gt;
&lt;p&gt;Data cleaning and curation is just as important, but it is taught less often and valued less. Everyone likes using “advanced mathematics”, “state-of-the-art statistical techniques” and “groundbreaking artificial intelligence models” for their fancy research, because its just not the same kind of awesome talking about how you wrestled those 20 date formats into nice ISO YYYY-MM-DD and explaining the REGEX that created all those individual variables you fed into your model. We should be taking more about data curation, we should spend more time on it and we should publish all the data we can legally and ethically do, but this is not what this post is about.&lt;/p&gt;
&lt;p&gt;This post is about software environments in computational research and how they are important even if everything else is done right. Ensuring a reproducible software environment is partially about principles and supporting the scientific record, but most importantly it is about saving yourself a lot of (avoidable!) trouble down the line.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;By the way, computational reproducibility is also a business problem. If you are offering a service or product that earns you money, you want that product/service to keep working and keep making you money instead of randomly breaking down and making your customers look for their pitchforks.&lt;/p&gt;
&lt;p&gt;Remember when Crowdstrike &lt;a href=&#34;https://en.wikipedia.org/wiki/2024_CrowdStrike-related_IT_outages&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;crashed half the world in 2024&lt;/a&gt;?&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;the-software-stack-in-r-projects&#34;&gt;
  The Software Stack in R Projects
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-software-stack-in-r-projects&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;In modern software there are always dependencies. No one spells out the ones and zeros for the machine by hand, so we write towers of software built on towers of software built on towers of software. And these dependencies change. Upstream authors fix bugs, introduces new features, change the interface, patch security vulnerabilities and so on. This is a good thing, in general.&lt;/p&gt;
&lt;p&gt;However, it is a also a problem. If the behavior of dependencies changes, so does the behavior of our own code. Often this is not a problem, but often enough it is.&lt;/p&gt;
&lt;p&gt;For data analysis workflows in R these are some of the most important dependency layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;R packages, e.g. &lt;a href=&#34;https://cran.r-project.org/package=quanteda&#34;&gt;&amp;lcub;quanteda&amp;rcub;&lt;/a&gt;
 for text analysis&lt;/li&gt;
&lt;li&gt;The R language itself&lt;/li&gt;
&lt;li&gt;System dependencies of R packages, e.g. Tesseract for &lt;a href=&#34;https://cran.r-project.org/package=tesseract&#34;&gt;&amp;lcub;tesseract&amp;rcub;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;System dependencies of the R language, e.g. the basic linear algebra subsystem&lt;/li&gt;
&lt;li&gt;The operating system&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;docker-environments-and-rocker-images&#34;&gt;
  Docker Environments and Rocker Images
  &lt;a class=&#34;heading-link&#34; href=&#34;#docker-environments-and-rocker-images&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;There are many technical solutions to maintaining a reproducible computational environment in R. The core mechanism is to lock software versions of dependencies in place and record any changes. &lt;a href=&#34;https://cran.r-project.org/package=renv&#34;&gt;&amp;lcub;renv&amp;rcub;&lt;/a&gt;
 is a popular option, but it only locks the versions of R packages. &lt;a href=&#34;https://cran.r-project.org/package=rix&#34;&gt;&amp;lcub;rix&amp;rcub;&lt;/a&gt;
 is a new arrival to CRAN that also locks the R version and system dependencies.&lt;/p&gt;
&lt;p&gt;My requirements a are a little more challenging so I use &lt;a href=&#34;https://www.docker.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Docker&lt;/a&gt; to lock the entire software stack from the OS upwards in place. Docker is constructed around a few core concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;code&gt;container&lt;/code&gt; is the actual environment in which the code runs. These should be treated as disposable and re-created daily, hourly or after every run.&lt;/li&gt;
&lt;li&gt;An &lt;code&gt;image&lt;/code&gt; is the blueprint for creating a container. Creating a container from an image is as simple as reading from the hard drive. Usually takes a few seconds at most.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;dockerfile&lt;/code&gt; is the blueprint for creating an image from layered instructions. Building an image usually involves downloading a base image with a particular OS, installing and compiling software and adding config options. This can take minutes or hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Obviously, creating a reproducible R software stack from scratch is a huge amount of work, so I rely on the &lt;a href=&#34;https://rocker-project.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Rocker Project’s&lt;/a&gt; Docker images for R (Boettiger and Eddelbuettel 2017; Nüst et al. 2020) as a baseline. The &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; line of images freezes the OS and R versions, all system libraries at a certain date 90 days past the Ubuntu version release and the R packages at a certain CRAN date linked to the R version.&lt;/p&gt;
&lt;p&gt;With this foundation I specify a Dockerfile that installs TeX packages, system dependencies for R, compile Tesseract from source and install R packages. See this &lt;a href=&#34;https://github.com/SeanFobbe/cr-unsc/blob/main/Dockerfile&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dockerfile&lt;/a&gt; for an example. I re-create containers several times a day, but prefer to rebuild the image only if the Dockerfile changes and use the Docker build cache to save time.&lt;/p&gt;
&lt;h1 id=&#34;the-limits-of-the-rocker-r-package-version-freeze&#34;&gt;
  The Limits of the Rocker R Package Version Freeze
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-limits-of-the-rocker-r-package-version-freeze&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Now, I said that the Rocker images freeze the versions of all R packages at a certain date, as available on CRAN. This is true, but unfortunately not always. The documentation says this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Non-latest R version images installs all R packages from a fixed snapshot of CRAN mirror at a given date. This setting ensures that the same version of the R package is installed no matter when the installation is performed. &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Source)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Note that it says “non-latest R version images”. So with the image containing the latest version of R — even with the reproducible &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; lines of images — the CRAN mirror will NOT be locked to a fixed date.&lt;/p&gt;
&lt;p&gt;Why is this a problem?&lt;/p&gt;
&lt;p&gt;When the CRAN mirror is not locked to a date the R package manager will keep installing the latest versions of R packages. See below for how this caused a catastrophic failure in one of my projects.&lt;/p&gt;
&lt;p&gt;If the Docker image is built from cache and the base image is not refreshed this behavior can persist for a very long time. This also happened to me.&lt;/p&gt;
&lt;h1 id=&#34;solutions-to-ensure-date-lock-of-r-packages&#34;&gt;
  Solutions to Ensure Date-Lock of R Packages
  &lt;a class=&#34;heading-link&#34; href=&#34;#solutions-to-ensure-date-lock-of-r-packages&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Fortunately there are some easy solutions to the &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; package version freezing problem. The hardest part is knowing that the problem is even there.&lt;/p&gt;
&lt;h2 id=&#34;solution-1-use-non-latest-r-version&#34;&gt;
  Solution 1: Use Non-Latest R version
  &lt;a class=&#34;heading-link&#34; href=&#34;#solution-1-use-non-latest-r-version&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The easiest and best option is to use an &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; image with the non-latest version of R.&lt;/p&gt;
&lt;p&gt;I recommend this for everyone.&lt;/p&gt;
&lt;p&gt;At the time I couldn’t do this because I needed to upgrade to R 4.4.0 quickly because of a major security vulnerability.&lt;/p&gt;
&lt;h2 id=&#34;solution-2-pull-images-often&#34;&gt;
  Solution 2: Pull Images Often
  &lt;a class=&#34;heading-link&#34; href=&#34;#solution-2-pull-images-often&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;A different option would be to always pull a fresh image (e.g. daily) when running the pipeline. The R version in the project will become “non-latest” after a few months and then fresh images from Rocker will have the package date lock in place. This can be ensured by adding the &lt;code&gt;--pull&lt;/code&gt; and &lt;code&gt;--no-cache&lt;/code&gt; flags to the &lt;code&gt;docker build&lt;/code&gt; command.&lt;/p&gt;
&lt;p&gt;My pipelines always attempt to rebuild the Docker image before they run, but I rely on the cache a lot to ensure speedy development. Rebuilding images without before every run would hit me with 15 minute delays all the time.&lt;/p&gt;
&lt;p&gt;I don’t recommend this option because re-pulling the base image will waste a lot of time and resources. It will also not version-lock packages in the period where the R version is still the latest.&lt;/p&gt;
&lt;h2 id=&#34;solution-3-set-cran-mirror-date-explicitly&#34;&gt;
  Solution 3: Set CRAN Mirror Date Explicitly
  &lt;a class=&#34;heading-link&#34; href=&#34;#solution-3-set-cran-mirror-date-explicitly&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The solution I opted for was to set the CRAN mirror date explicitly in the Dockerfile. The Rocker Project conveniently &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;provides a script&lt;/a&gt; for doing so. The following line will do the trick (in this case setting the date at 2024-06-13:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-docker&#34; data-lang=&#34;docker&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;RUN&lt;/span&gt; /rocker_scripts/setup_R.sh &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;https://packagemanager.posit.co/cran/__linux__/jammy/2024-06-13&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I prefer this option for my personal workflows because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I might want to adjust the CRAN mirror date without changing the R version&lt;/li&gt;
&lt;li&gt;It ensures that the date lock is in place even if I am forced to choose the latest &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; image&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The full Dockerfile, including use of &lt;code&gt;ARG&lt;/code&gt; variables for clarity, looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-docker&#34; data-lang=&#34;docker&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#78787e&#34;&gt;# Build Arguments&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;ARG&lt;/span&gt; &lt;span style=&#34;color:#ff5c57&#34;&gt;R_VERSION&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;4.4.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;ARG&lt;/span&gt; &lt;span style=&#34;color:#ff5c57&#34;&gt;R_CRAN_MIRROR&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;https://packagemanager.posit.co/cran/__linux__/jammy/2024-06-13&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#78787e&#34;&gt;# Base Layer&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt; rocker/r-ver:${R_VERSION}&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#78787e&#34;&gt;# LaTeX Layer&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;RUN&lt;/span&gt; apt-get update &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get install -y &lt;span style=&#34;color:#5af78e&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&lt;/span&gt;    pandoc &lt;span style=&#34;color:#5af78e&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&lt;/span&gt;    pandoc-citeproc &lt;span style=&#34;color:#5af78e&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&lt;/span&gt;    texlive-science &lt;span style=&#34;color:#5af78e&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&lt;/span&gt;    texlive-latex-extra &lt;span style=&#34;color:#5af78e&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&lt;/span&gt;    texlive-lang-german&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#78787e&#34;&gt;# System Dependency Layer&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;COPY&lt;/span&gt; etc/requirements-system.txt /&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;RUN&lt;/span&gt; apt-get update &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get -y install &lt;span style=&#34;color:#ff6ac1&#34;&gt;$(&lt;/span&gt;cat /requirements-system.txt&lt;span style=&#34;color:#ff6ac1&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#78787e&#34;&gt;# Tesseract Layer &lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;COPY&lt;/span&gt; etc/requirements-tesseract.sh /&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;RUN&lt;/span&gt; sh /requirements-tesseract.sh&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#78787e&#34;&gt;# R Layer&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;COPY&lt;/span&gt; etc/requirements-R.txt /&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;RUN&lt;/span&gt; /rocker_scripts/setup_R.sh &lt;span style=&#34;color:#5af78e&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;R_CRAN_MIRROR&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&lt;/span&gt;    Rscript -e &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;install.packages(readLines(&amp;#34;/requirements-R.txt&amp;#34;))&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;tracing-the-error&#34;&gt;
  Tracing the Error
  &lt;a class=&#34;heading-link&#34; href=&#34;#tracing-the-error&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;I wrote this essay because this (to me) unexpected behavior of the &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; Rocker images caused a catastrophic failure in one the new data pipelines I am developing.&lt;/p&gt;
&lt;p&gt;The chain of problems that led me there was epic. The exact error isn’t interesting because I wouldn’t claim that this chain of events is particularly common. However, it provides a valuable lesson of how reproducibility failures may cause arcane failures in practice.&lt;/p&gt;
&lt;p&gt;So, what happened?&lt;/p&gt;
&lt;p&gt;I recently re-built the Docker Image for this new pipeline and was presented with the following error message:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;The R temporary directory appears to be within a folder mounted as &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;noexec&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt; Installation of R packages from sources may fail.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt; See the section &lt;span style=&#34;color:#ff6ac1&#34;&gt;**&lt;/span&gt;Note&lt;span style=&#34;color:#ff6ac1&#34;&gt;**&lt;/span&gt; within `?INSTALL` for more details.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;tempdir&lt;/span&gt;()&lt;span style=&#34;color:#ff6ac1&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;/&lt;/span&gt;tmp&lt;span style=&#34;color:#ff6ac1&#34;&gt;/&lt;/span&gt;RtmpL9N978
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;   &lt;span style=&#34;color:#ff6ac1&#34;&gt;|&lt;/span&gt;............................            &lt;span style=&#34;color:#ff6ac1&#34;&gt;|&lt;/span&gt;  &lt;span style=&#34;color:#ff9f43&#34;&gt;70&lt;/span&gt;% [pipeline&lt;span style=&#34;color:#ff6ac1&#34;&gt;-&lt;/span&gt;run]               
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt; Error&lt;span style=&#34;color:#ff6ac1&#34;&gt;:&lt;/span&gt; targets&lt;span style=&#34;color:#ff6ac1&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;tar_make&lt;/span&gt;() error
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;     • &lt;span style=&#34;color:#57c7ff&#34;&gt;tar_errored&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;     • &lt;span style=&#34;color:#57c7ff&#34;&gt;tar_meta&lt;/span&gt;(fields &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;any_of&lt;/span&gt;(&lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;), complete_only &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;     • &lt;span style=&#34;color:#57c7ff&#34;&gt;tar_workspace&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;     • &lt;span style=&#34;color:#57c7ff&#34;&gt;tar_workspaces&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;     • Debug&lt;span style=&#34;color:#ff6ac1&#34;&gt;:&lt;/span&gt; https&lt;span style=&#34;color:#ff6ac1&#34;&gt;://&lt;/span&gt;books.ropensci.org&lt;span style=&#34;color:#ff6ac1&#34;&gt;/&lt;/span&gt;targets&lt;span style=&#34;color:#ff6ac1&#34;&gt;/&lt;/span&gt;debugging.html
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;     • Help&lt;span style=&#34;color:#ff6ac1&#34;&gt;:&lt;/span&gt; https&lt;span style=&#34;color:#ff6ac1&#34;&gt;://&lt;/span&gt;books.ropensci.org&lt;span style=&#34;color:#ff6ac1&#34;&gt;/&lt;/span&gt;targets&lt;span style=&#34;color:#ff6ac1&#34;&gt;/&lt;/span&gt;help.html
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;     _store_ there is no package called ‘qs2’
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;My chain of thoughts and debugging efforts was something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The first part sounded horrific. Temporary directory mounted as “noexec”? Even though I hadn’t changed anything? This sort of things usually only happens when my hardware is breaking down and that is usually Bad. Capital B.&lt;/li&gt;
&lt;li&gt;Keep on reading. No package called “qs2”? This is ok. I manually installed &lt;a href=&#34;https://cran.r-project.org/package=qs2&#34;&gt;&amp;lcub;qs2&amp;rcub;&lt;/a&gt;
 in the container and the pipeline re-ran without errors.&lt;/li&gt;
&lt;li&gt;But why didn’t the Dockerfile install &lt;a href=&#34;https://cran.r-project.org/package=qs2&#34;&gt;&amp;lcub;qs2&amp;rcub;&lt;/a&gt;
? In this case &lt;a href=&#34;https://cran.r-project.org/package=qs2&#34;&gt;&amp;lcub;qs2&amp;rcub;&lt;/a&gt;
 is a dependency of &lt;a href=&#34;https://cran.r-project.org/package=targets&#34;&gt;&amp;lcub;targets&amp;rcub;&lt;/a&gt;
 (Landau 2021) but it wasn’t installed automatically because it isn’t a formal dependency on CRAN, but an optional dependency for a variant setting that I enabled.&lt;/li&gt;
&lt;li&gt;Add &lt;a href=&#34;https://cran.r-project.org/package=qs2&#34;&gt;&amp;lcub;qs2&amp;rcub;&lt;/a&gt;
 to the R package list in the Docker config scripts? This is what I did with &lt;a href=&#34;https://cran.r-project.org/package=qs&#34;&gt;&amp;lcub;qs&amp;rcub;&lt;/a&gt;
 and it’s there. But why does the pipeline suddenly require &lt;a href=&#34;https://cran.r-project.org/package=qs2&#34;&gt;&amp;lcub;qs2&amp;rcub;&lt;/a&gt;
? This can’t be good.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cran.r-project.org/package=qs2&#34;&gt;&amp;lcub;qs2&amp;rcub;&lt;/a&gt;
 became a dependency of &lt;a href=&#34;https://cran.r-project.org/package=targets&#34;&gt;&amp;lcub;targets&amp;rcub;&lt;/a&gt;
 in &lt;a href=&#34;https://docs.ropensci.org/targets/news/index.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;version 1.9.0&lt;/a&gt;, released on CRAN on 2024-11-20. The &lt;a href=&#34;https://github.com/rocker-org/rocker-versioned2/wiki/Versions&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;r-ver&lt;/em&gt; image for R 4.4.0&lt;/a&gt; is supposed to be locked to CRAN at 2024-06-13. This is bad.&lt;/li&gt;
&lt;li&gt;I checked the R package mirror with &lt;code&gt;options()&lt;/code&gt; and it was set to “latest”. Very bad.&lt;/li&gt;
&lt;li&gt;Went on a deep-dive to discover why the CRAN mirror in &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; was set at “latest” and discovered that this was linked to using the latest R version.&lt;/li&gt;
&lt;li&gt;But it’s December 2024, and 4.4.0 is NOT the latest R version at this time. So why was my package manager setting still set to “latest”? Turns out I pulled the &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; image months ago and forgot to re-pull the Docker image when the R version became non-latest.&lt;/li&gt;
&lt;li&gt;How to prevent this from happening again? Set explicit version lock in Dockerfile.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;conclusion&#34;&gt;
  Conclusion
  &lt;a class=&#34;heading-link&#34; href=&#34;#conclusion&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Reproducible scholarship is hard, but important for the scientific record and for saving yourself a lot of pain down the line. The same is true for business, because if your software makes you money and it breaks down it stops making you money.&lt;/p&gt;
&lt;p&gt;Computational reproducibility requires controlling the code, data and software environment (Buckheit and Donoho 1995; Donoho 2010, 385). Docker is a very helpful but complex solution to reproducibility in R and &lt;a href=&#34;https://www.rocker-project.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Rocker Project&lt;/a&gt; (Boettiger and Eddelbuettel 2017; Nüst et al. 2020) images make the process easier. However, the &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; line of images does not version-lock R packages for the latest version of R.&lt;/p&gt;
&lt;p&gt;This problem can persist for a long time if one relies too much on the Docker build cache, as I did.&lt;/p&gt;
&lt;p&gt;Possible solutions to the Rocker version-lock problem are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use an &lt;a href=&#34;https://rocker-project.org/images/versioned/r-ver&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r-ver&lt;/a&gt; image with the non-latest R version&lt;/li&gt;
&lt;li&gt;Pull images often&lt;/li&gt;
&lt;li&gt;Set the CRAN mirror date explicitly in the Dockerfile (my preference)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The failure to ensure reproducibility can lead to catastrophic errors and wild debugging goose chases.&lt;/p&gt;
&lt;h1 id=&#34;references&#34;&gt;
  References
  &lt;a class=&#34;heading-link&#34; href=&#34;#references&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body hanging-indent&#34;&gt;
&lt;div id=&#34;ref-Boettiger2017&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Boettiger, Carl, and Dirk Eddelbuettel. 2017. “&lt;span class=&#34;nocase&#34;&gt;An Introduction to Rocker: Docker Containers for R&lt;/span&gt;.” &lt;em&gt;The R Journal&lt;/em&gt; 9 (2): 527–36. &lt;a href=&#34;https://doi.org/10.32614/RJ-2017-065&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.32614/RJ-2017-065&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Buckheit1995&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Buckheit, Jonathan B, and David L Donoho. 1995. “Wavelab and Reproducible Research.” In &lt;em&gt;Wavelets and Statistics&lt;/em&gt;, 55–81. Springer.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Donoho2010&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Donoho, David L. 2010. “An Invitation to Reproducible Computational Research.” &lt;em&gt;Biostatistics&lt;/em&gt; 11 (3): 385–88. &lt;a href=&#34;https://doi.org/10.1093/biostatistics/kxq028&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.1093/biostatistics/kxq028&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Landau2021&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Landau, William Michael. 2021. “The Targets r Package: A Dynamic Make-Like Function-Oriented Pipeline Toolkit for Reproducibility and High-Performance Computing.” &lt;em&gt;Journal of Open Source Software&lt;/em&gt; 6 (57): 2959. &lt;a href=&#34;https://doi.org/10.21105/joss.02959&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.21105/joss.02959&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Nuest2020&#34; class=&#34;csl-entry&#34;&gt;
&lt;p&gt;Nüst, Daniel, Dirk Eddelbuettel, Dom Bennett, Robrecht Cannoodt, Dav Clark, Gergely Daróczi, Mark Edmondson, et al. 2020. “&lt;span class=&#34;nocase&#34;&gt;The Rockerverse: Packages and Applications for Containerisation with R&lt;/span&gt;.” &lt;em&gt;The R Journal&lt;/em&gt; 12 (1): 437–61. &lt;a href=&#34;https://doi.org/10.32614/RJ-2020-007&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.32614/RJ-2020-007&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;The formulation is from Donoho (2010), although it is cited as Buckheit and Donoho (1995).&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>[New Dataset] 36,000&#43; Criminal Law Judgments of the German Federal Court of Justice (1950-1999)</title>
      <link>https://seanfobbe.com/posts/new-dataset-36000-criminal-law-judgments-german-federal-court-of-justice/</link>
      <pubDate>Tue, 26 Nov 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/new-dataset-36000-criminal-law-judgments-german-federal-court-of-justice/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.4540376&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Entscheidungen des Bundesgerichtshofs in Strafsachen aus dem 20. Jahrhundert (BGH-Strafsachen-20Jhd)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/7847575&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source Code on Zenodo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://github.com/SeanFobbe/bgh-strafrecht&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;new-dataset-available&#34;&gt;
  New Dataset available!
  &lt;a class=&#34;heading-link&#34; href=&#34;#new-dataset-available&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://www.universiteitleiden.nl/en/staffmembers/tilko-arne-swalve&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Tilko Swalve&lt;/a&gt; and I are excited to announce the publication of a new dataset!&lt;/p&gt;
&lt;p&gt;We collected, cleaned, sorted and published Open Access &lt;a href=&#34;https://doi.org/10.5281/zenodo.4540376&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;more than 36,000 criminal law judgments&lt;/strong&gt;&lt;/a&gt; of the &lt;strong&gt;German Federal Court of Justice&lt;/strong&gt;, the &lt;em&gt;Bundesgerichtshof&lt;/em&gt; (BGH).&lt;/p&gt;
&lt;p&gt;These data are extremely rare. Extensive collections of older judgments issued by German courts are usually only available commercially &amp;mdash; if at all. They are especially valuable for the rule of law, because criminal law deeply impacts the rights of citizens. The German Federal Court of Justice has been setting down criminal law guidelines for all of Germany since its creation in 1950.&lt;/p&gt;
&lt;p&gt;Unfortunately the German Federal Court of Justice only started publishing its judgments in 2000 and has not done so retroactively for older decisions. Many important precedents and landmark decisions have been denied to the public until now. They were only available to purchasers of expensive commercial subscription services.&lt;/p&gt;
&lt;p&gt;We are changing this. Now.&lt;/p&gt;
&lt;h1 id=&#34;about-the-dataset&#34;&gt;
  About the Dataset
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-the-dataset&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The dataset &lt;a href=&#34;https://doi.org/10.5281/zenodo.4540376&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;Entscheidungen des Bundesgerichtshofs in Strafsachen aus dem 20. Jahrhundert (BGH-Strafsachen-20Jhd)&lt;/strong&gt;&lt;/a&gt; is an as-complete-as-possible collection of judgments in criminal matters issued by the German Federal Court of Justice in the period between 1 October 1950 (the founding of the court) and 1 January 2000, the date that the court started publishing decisions online.&lt;/p&gt;
&lt;p&gt;We obtained judgments from five of the courts &amp;ldquo;senates&amp;rdquo; (panels) for the years 1950 to 1999. A sixth senate existed from 1954 to 1956, but we have no data for this last senate.&lt;/p&gt;
&lt;p&gt;We offer the dataset in machine-readable formats TXT and CSV, but also include the original PDF files for traditional legal work.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Please note that the texts in the dataset are only available in German and the dataset accordingly is documented only in German. This is because NLP practitioners working on data in a certain language should be able to speak the language well enough to be able to read the documentation.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;features&#34;&gt;
  Features
  &lt;a class=&#34;heading-link&#34; href=&#34;#features&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;31 variables&lt;/li&gt;
&lt;li&gt;Data model compatible with the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3942742&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesgerichtshofs (CE-BGH)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Public Domain (CC-Zero 1.0)&lt;/li&gt;
&lt;li&gt;Open and platform independent file formats (PDF, TXT, CSV)&lt;/li&gt;
&lt;li&gt;Extensive Codebook&lt;/li&gt;
&lt;li&gt;Compilation Report explains construction and validation of the data set in detail&lt;/li&gt;
&lt;li&gt;Large number of diagrams for all purposes (see the &amp;lsquo;ANALYSIS&amp;rsquo; archive)&lt;/li&gt;
&lt;li&gt;Diagrams are available as PDF (for printing) and PNG (for web display), tables are available as CSV for easy readability by humans and machines&lt;/li&gt;
&lt;li&gt;Secure cryptographic signatures&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zenodo.org/records/7847575&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Publication of full source code (Open Source)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;content-of-the-dataset&#34;&gt;
  Content of the Dataset
  &lt;a class=&#34;heading-link&#34; href=&#34;#content-of-the-dataset&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;h2 id=&#34;by-year&#34;&gt;
  By Year
  &lt;a class=&#34;heading-link&#34; href=&#34;#by-year&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/BGH-Strafsachen-20Jhd_1-0-0_Barplot_Entscheidungsjahr-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;We could not extract a plausible date for 2,419 judgments. They are not included in this diagram.&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;by-senate-panel&#34;&gt;
  By Senate (Panel)
  &lt;a class=&#34;heading-link&#34; href=&#34;#by-senate-panel&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/BGH-Strafsachen-20Jhd_1-0-0_Barplot_Spruchkoerper_AZ-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;All judgments have panel metadata. This diagram shows the full dataset.&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;by-president&#34;&gt;
  By President
  &lt;a class=&#34;heading-link&#34; href=&#34;#by-president&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/BGH-Strafsachen-20Jhd_1-0-0_Barplot_PraesidentIn-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&amp;ldquo;NA&amp;rdquo; means that no plausible date could be extracted and the judgment therefore could not be mapped to the tenure of a President. This is the case for 2,419 judgments.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;workflow&#34;&gt;
  Workflow
  &lt;a class=&#34;heading-link&#34; href=&#34;#workflow&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/BGH-Strafsachen-20Jhd_1-0-0_Pipeline_Graph_karmesinrot-lowres.png&#34;/&gt;
&lt;/figure&gt;

&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;The data pipeline offers the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clean filenames&lt;/li&gt;
&lt;li&gt;Correct rotation, standardize in portrait orientation&lt;/li&gt;
&lt;li&gt;Optical character recognition (OCR)&lt;/li&gt;
&lt;li&gt;Automated cleaning of OCR errors related to German legal terminology&lt;/li&gt;
&lt;li&gt;Extraction of additional variables&lt;/li&gt;
&lt;li&gt;Production of ready-to-use ZIP archives&lt;/li&gt;
&lt;li&gt;Comprehensive documentation&lt;/li&gt;
&lt;li&gt;Automated unit tests and statistical reporting&lt;/li&gt;
&lt;li&gt;Cryptographical signatures&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;copyright&#34;&gt;
  Copyright
  &lt;a class=&#34;heading-link&#34; href=&#34;#copyright&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The dataset is released into the public domain under a &lt;a href=&#34;https://creativecommons.org/publicdomain/zero/1.0/legalcode&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Creative Commons Zero 1.0 Universal Public Domain Waiver&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Essay] Git Credential Management</title>
      <link>https://seanfobbe.com/posts/2024-11-23_git-credential-management/</link>
      <pubDate>Sat, 23 Nov 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-11-23_git-credential-management/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;How to access remote Git repositories securely via command line? And where to store the secrets?&lt;/p&gt;
&lt;p&gt;These questions led me down a few unexpected rabbit holes and I discovered many things about Git authentication and many reasons for and against each. I was bound to forget all of this if I didn&amp;rsquo;t write it down. So this is as much a note to myself as it may be useful to others. I am grateful to the many bloggers that have written posts on Git authentication, particularly &lt;a href=&#34;https://blog.djnavarro.net/posts/2021-08-08_git-credential-helpers/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;this post by Danielle Navarro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To make it short, username/password authentication cannot be used for Git API access on GitHub since 2021 and the major alternatives are personal access tokens (PAT), secure shell (SSH) and web authentication (OAuth). I settled on PATs because they can be given an expiration date, offer fine-grained access control and reflect security-by-isolation principles that I find persuasive.&lt;/p&gt;
&lt;div style =&#34;text-align: center;&#34;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init: {&#39;theme&#39;:&#39;dark&#39;}}%%
graph LR

    l[Local Machine] --&gt;|PAT via Keyring| g[Remote Git Repository] 
	g --&gt;|Read-only| r[Deployment Server]
	l --&gt;|Direct SSH| r --&gt;|PAT via Cache| g
	

&lt;/div&gt;

&lt;/div&gt;
&lt;p&gt;PATs need to be stored securely. Among the multiverse of Git credential helpers I prefer using the system keyring on my local machine. On Debian Linux this requires some non-obvious setup of &lt;code&gt;libsecret&lt;/code&gt; and compilation of the associated credential helper. On Windows and MacOS it is supposed to work right out of the box, but I haven&amp;rsquo;t worked on Windows for over a decade and have never had a Mac, so I wouldn&amp;rsquo;t know. The Linux system keyring works well in practice and integrates nicely with my Emacs workflow.&lt;/p&gt;
&lt;p&gt;The Git cache is a good alternative for remote deployment servers. The timeout can be customized, something like 30 to 60 minutes seems reasonable. It is important to cache only tightly scoped PATs on remote machines. If the scope is set to single repository and read-only, the damage of token loss should not exceed that of machine compromise.&lt;/p&gt;
&lt;p&gt;Above all else, remember &lt;a href=&#34;https://security.stackexchange.com/questions/6095/xkcd-936-short-complex-password-or-long-dictionary-passphrase/6116#6116&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;AviD&amp;rsquo;s Rule of Usability&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Security at the expense of usability comes at the expense of security.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In other words: if security is too much of a pain, people will prefer insecurity (including myself).&lt;/p&gt;
&lt;h1 id=&#34;table-of-contents&#34;&gt;
  Table of Contents
  &lt;a class=&#34;heading-link&#34; href=&#34;#table-of-contents&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#overview&#34;&gt;Overview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-problem&#34;&gt;The Problem&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-multiverse-of-git-credential-helpers&#34;&gt;The Multiverse of Git Credential Helpers&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#realistic-option-1-git-cache&#34;&gt;Realistic Option 1: Git Cache&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#realistic-option-2-system-keyring&#34;&gt;Realistic Option 2: System Keyring&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#why-not-git-credential-store&#34;&gt;Why not Git Credential Store?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#why-not-secure-shell-ssh&#34;&gt;Why not Secure Shell (SSH)?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#why-not-oauth&#34;&gt;Why not OAuth?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;h1 id=&#34;the-problem&#34;&gt;
  The Problem
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-problem&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Accessing remote Git repositories hosted on services like GitHub to pull, push or do other things programmatically via API requires authentication. Git-the-software (not GitHub-the-service) originally envisioned username/password authentication as the default, but with the advent of more stringent security practices username/password authentication for API access fell into disrepute and was disallowed on GitHub in 2021. Additionally, two-factor authentication has become the norm (and is enforced for open source contributors such as myself) so the old Git authentication flow which can&amp;rsquo;t handle a second factor wouldn&amp;rsquo;t work anyway.&lt;/p&gt;
&lt;p&gt;Currently there are three dominant authentication options for Git repository access via command line:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Personal access tokens (PAT)&lt;/li&gt;
&lt;li&gt;Secure shell (SSH)&lt;/li&gt;
&lt;li&gt;Open Authorization (OAuth)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Personal access tokens (PAT)&lt;/strong&gt; are very long strings of characters that act as a combined username/password replacement, are only used for API access, can be given an expiry date and support very fine-grained access control. PATs are supposed to be transient and replaced often, so that the loss of a token does not compromise the integrity of the entire account. They could be described as temporary limited passwords, albeit with similar secure storage requirements. PATs are an example of the security-by-isolation principle.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secure Shell (SSH)&lt;/strong&gt; authentication is a popular alternative to PAT-based authentication. Instead of using a symmetric transient password-like token, SSH authentication is based on asymmetric public/private key pairs. The private key always remains on the machine of the user, the public key is uploaded to the server. The private key proves the identity of the user, the public key can only be used to verify it, nothing else. SSH is primarily a means of controlling a remote server via command line, but it is possible to use it to manage a remote Git repository instead.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open Authorization (OAuth)&lt;/strong&gt; is the third major access route to GitHub repositories. At the beginning of a standard OAuth flow a browser window is opened and the user  must login to GitHub with their username/password and second factor. Following this a time-limited OAuth token is created and used for subsequent non-interactive authentication.&lt;/p&gt;
&lt;p&gt;PATs are very long, are supposed to change regularly and are  impractical to memorize, so they must be stored securely &amp;mdash; somewhere. The same is true for SSH keys, the private key must also be kept safe. Even with OAuth the OAuth token must be stored safely during its validity period.&lt;/p&gt;
&lt;p&gt;This is the crux of the problem: where to store the secrets?&lt;/p&gt;
&lt;h1 id=&#34;the-multiverse-of-git-credential-helpers&#34;&gt;
  The Multiverse of Git Credential Helpers
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-multiverse-of-git-credential-helpers&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Over the years the Git ecosystem has added a bewildering array of &lt;a href=&#34;https://git-scm.com/doc/credential-helpers&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;credential helpers&lt;/a&gt; to make it easier to supply Git with the appropriate authentication credentials. Credential helpers don&amp;rsquo;t store the secrets themselves, but are interfaces to storage options that do.&lt;/p&gt;
&lt;p&gt;Below is a list of almost all of the credentials helpers &lt;a href=&#34;https://git-scm.com/doc/credential-helpers&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mentioned in the Git documentation&lt;/a&gt;, minus the Azure/Netlify specific ones, which are irrelevant to my use case:&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Native to Git
&lt;ul&gt;
&lt;li&gt;Git Credential Store&lt;/li&gt;
&lt;li&gt;Git Cache&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Platform Specific Keyrings
&lt;ul&gt;
&lt;li&gt;Linux GNOME Keyring or KDE Wallet&lt;/li&gt;
&lt;li&gt;MacOS Keychain&lt;/li&gt;
&lt;li&gt;Windows Credential Manager&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OAuth
&lt;ul&gt;
&lt;li&gt;Git Credential Manager (GCM)&lt;/li&gt;
&lt;li&gt;Git Credential OAuth&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Password Managers
&lt;ul&gt;
&lt;li&gt;Gopass&lt;/li&gt;
&lt;li&gt;Lastpass&lt;/li&gt;
&lt;li&gt;1Password&lt;/li&gt;
&lt;li&gt;KeepassXC&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ve decided to use Git Cache and the Linux keyring in my personal workflow. This essay includes setup instructions for cache and keyring. My daily workflow looks something like this:&lt;/p&gt;
&lt;div style =&#34;text-align: center;&#34;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init: {&#39;theme&#39;:&#39;dark&#39;}}%%
graph LR

    l[Local Machine] --&gt;|PAT via Keyring| g[Remote Git Repository] 
	g --&gt;|Read-only| r[Deployment Server]
	l --&gt;|Direct SSH| r --&gt;|PAT via Cache| g
	

&lt;/div&gt;

&lt;/div&gt;
&lt;p&gt;I use the &lt;a href=&#34;https://keepassxc.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;KeepassXC&lt;/a&gt; password manager to store all my PATs, so adding a &lt;a href=&#34;https://github.com/Frederick888/git-credential-keepassxc&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;KeepassXC credential helper interface&lt;/a&gt; might be useful. However,  my specific system setup makes this impractical. I do mention it because others might find this option useful.&lt;/p&gt;
&lt;p&gt;Not sure where to fit in the Git Credential Manager (GCM) here. The &lt;a href=&#34;https://github.com/hickford/git-credential-oauth&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;git-credential-oauth&lt;/a&gt; software seems a much better and focused option (400 lines of code vs 40,000 for GCM) for OAuth and GCM secrets storage for PATs appears to be handled by the system keyrings anyway, so might as well use those and save on bloat. I pretty much ignored GCM, although others seem to like it.&lt;/p&gt;
&lt;p&gt;I decided against using the native Git Credential Store (cleartext storage! on the disk!) or SSH (many reasons, complicated). Your use case and security considerations may differ, but I&amp;rsquo;ve written down my reasons below. I&amp;rsquo;m interested in OAuth, but haven&amp;rsquo;t gotten around to trying it.&lt;/p&gt;
&lt;h1 id=&#34;realistic-option-1-git-cache&#34;&gt;
  Realistic Option 1: Git Cache
  &lt;a class=&#34;heading-link&#34; href=&#34;#realistic-option-1-git-cache&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The native Git Cache is one of my preferred credential helpers. It can be set up with just a single command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ git config --global credential.helper cache
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When an action requires authentication and the PAT is entered, Git stores the PAT in memory, never on disk. By default the timeout is 15 minutes.&lt;/p&gt;
&lt;p&gt;The timeout can be configured separately, by adding the number of seconds until timeout in the same command. The following sets a 1-hour timeout:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ git config --global credential.helper &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;cache --timeout=3600&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Relying on the Git Cache is far more secure than storing the PAT in cleartext on disk, but one should assume that keyloggers would still be able to capture the PAT, maybe even extract it from memory, if the machine is compromised.&lt;/p&gt;
&lt;p&gt;This is why it remains important to set an appropriate cache timeout, set the PAT scope narrowly and include a reasonable PAT expiry date to limit damage. Temporal and thematic limitations of the PAT are more important than the cache timeout.&lt;/p&gt;
&lt;p&gt;Personally I use the Git Cache for pulling code to remote machines if the project requires more resources than I have available locally. I set the Git Cache timeout to between 30 to 60 minutes.&lt;/p&gt;
&lt;p&gt;Nevertheless, the most important security measure is to set tight access controls on the PAT. If the PAT is used on a remote server, I set it to single repository scope and read-only permissions. For the code in the repository to be executed it must be located on the remote machine in cleartext anyway, so losing the PAT should not cause more damage than the machine compromise itself.&lt;/p&gt;
&lt;h1 id=&#34;realistic-option-2-system-keyring&#34;&gt;
  Realistic Option 2: System Keyring
  &lt;a class=&#34;heading-link&#34; href=&#34;#realistic-option-2-system-keyring&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The keyring is a popular system feature on many platforms that stores usernames and passwords in secure encrypted storage and can only be accessed with the proper credentials, often a primary password, but more recently also biometric features or hardware tokens.&lt;/p&gt;
&lt;p&gt;The advantage of the system keyring is much greater convenience compared to the Git Cache in daily usage, since it stores a PAT permanently in encrypted storage. Once the keyring is unlocked, the PAT stays in memory until logout (on Linux).&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The system keyring is also more pleasant to use with Emacs, my preferred text editor. Pushing from Emacs with the &lt;code&gt;git-credential-libsecret&lt;/code&gt; helper will open a system prompt to log-in with the keyring, whereas pushing with Git Cache simply fails and forces me to break workflow and enter the PAT on the command line at least once.&lt;/p&gt;
&lt;p&gt;The disadvantage of the system keyring on Linux is that once unlocked it stays unlocked until the session is ended. It appears possible to set the keyring timeout &lt;em&gt;somewhere&lt;/em&gt;, but so far I haven&amp;rsquo;t found managed to figure out how. In the meantime this useful command restarts the keyring and flushes the cache:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ gnome-keyring-daemon -rd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;configuring-the-system-keyring&#34;&gt;
  Configuring the System Keyring
  &lt;a class=&#34;heading-link&#34; href=&#34;#configuring-the-system-keyring&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Configuring Git to use the system keyring is supposed to be very easy on Windows and Mac. I think it even works out of the box, since credential helpers for the Windows Credential Manager and MacOS keychain are included with Git. I haven&amp;rsquo;t worked on anything but Linux for a long time, so I wouldn&amp;rsquo;t know. I do hope it works that way.&lt;/p&gt;
&lt;p&gt;Libsecret is an interface between the Linux keyring (the storage for secrets) and other applications that want to access the keyring. There are three steps to installing and configuring Libsecret as the Git credential manager on Linux. It turns out that it isn&amp;rsquo;t actually difficult, just very much non-obvious.&lt;/p&gt;
&lt;p&gt;The three steps are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install packages&lt;/li&gt;
&lt;li&gt;Compile credential manager&lt;/li&gt;
&lt;li&gt;Configure git to use &lt;code&gt;libsecret&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;step-1-install-dependencies&#34;&gt;
  Step 1: Install dependencies
  &lt;a class=&#34;heading-link&#34; href=&#34;#step-1-install-dependencies&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;These are the packages required to make it work, including &lt;code&gt;make&lt;/code&gt; and &lt;code&gt;gcc&lt;/code&gt; to build from source, &lt;code&gt;git&lt;/code&gt; in case it&amp;rsquo;s not already installed and &lt;code&gt;libsecret&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ sudo apt install make gcc git libsecret-1-0 libsecret-1-dev libglib2.0-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-2-compile-git-libsecret-connector&#34;&gt;
  Step 2: Compile Git-Libsecret-Connector
  &lt;a class=&#34;heading-link&#34; href=&#34;#step-2-compile-git-libsecret-connector&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This is the non-obvious part. Git technically already comes with a credential helper that connects to &lt;code&gt;libsecret&lt;/code&gt;, but on Debian and Ubuntu it is shipped as pure source code, not as a ready-to-use binary.&lt;/p&gt;
&lt;p&gt;It therefore needs to be compiled first. Fortunately, this is very easy if you know the magic words.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ sudo make --directory&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;/usr/share/doc/git/contrib/credential/libsecret
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This compiles the C source code into a usable binary.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;A binary for &lt;a href=&#34;https://pkgs.org/search/?q=git-credential-libsecret&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;git-credential-libsecret&lt;/a&gt; is available for RPM-based distributions.&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;step-3-configure-git-to-use-libsecret&#34;&gt;
  Step 3: Configure git to use Libsecret
  &lt;a class=&#34;heading-link&#34; href=&#34;#step-3-configure-git-to-use-libsecret&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The following line sets the Git configuration file to use &lt;code&gt;libsecret&lt;/code&gt; to access the system keyring. It works just like the Cache configuration line above.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now it should automatically trigger the keyring whenever you push, pull or do something that requires authentication!&lt;/p&gt;
&lt;h1 id=&#34;why-not-git-credential-store&#34;&gt;
  Why not Git Credential Store?
  &lt;a class=&#34;heading-link&#34; href=&#34;#why-not-git-credential-store&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The integrated Git Credential Store is the easiest credential helper to set up and the most convenient to use, but also the most insecure. This is because it saves the PAT in cleartext on disk. Yes, in cleartext with no security whatsoever. I mention the command only because it is the one I choose to avoid:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ git config credential.helper store
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anyone who can access the disk can access the stored PAT. The most likely breach scenario would be some kind of drive-by infection with a trojan distributed by an ad-network (ads are everywhere on the internet, after all) that searches the disk for plain-text credentials and steals them.&lt;/p&gt;
&lt;p&gt;So, this is a hard no.&lt;/p&gt;
&lt;h1 id=&#34;why-not-secure-shell-ssh&#34;&gt;
  Why not Secure Shell (SSH)?
  &lt;a class=&#34;heading-link&#34; href=&#34;#why-not-secure-shell-ssh&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;SSH is pretty neat, but it does have a a number of problems that decided me against relying on SSH for managing Git repositories: 1) the private key is stored on disk, 2) the key does not expire, 3) the key access controls cannot be scoped (deployment keys are a way around this), 4) SSH forwarding is insecure and 5) the SSH port 22 is often blocked on large managed networks, for example university networks.&lt;/p&gt;
&lt;h2 id=&#34;problem-1-ssh-key-stored-on-disk&#34;&gt;
  Problem 1: SSH key stored on disk
  &lt;a class=&#34;heading-link&#34; href=&#34;#problem-1-ssh-key-stored-on-disk&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;In the classic Git Credential Store example the SSH private key is an ordinary file stored on disk. This means that pretty much all the security considerations that apply to cleartext passwords also apply to SSH keys. If the disk is compromised (e.g. drive-by trojan from an infected ad-network) then all SSH keys stored on disk will be collected as fast as any cleartext passwords.&lt;/p&gt;
&lt;p&gt;Password for the SSH private key? While it is possible to set a password for the SSH key, the additional protection is limited. It is quite likely that on a compromised machine all command line input, including the password to the SSH key when entered, would be collected and exfiltrated as well.&lt;/p&gt;
&lt;p&gt;Storing the SSH private key in the system keyring? Of course it is possible to store the SSH key in the system keyring, same as the PAT. This, however, requires setting up the system keyring and negates any convenience benefits of accessing remote repositories with the simple SSH setup. If the system keyring is in use one might as well go with a PAT.&lt;/p&gt;
&lt;h2 id=&#34;problem-2-ssh-key-does-not-expire&#34;&gt;
  Problem 2: SSH key does not expire
  &lt;a class=&#34;heading-link&#34; href=&#34;#problem-2-ssh-key-does-not-expire&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;SSH keys do not expire. I don&amp;rsquo;t think it is possible to set an expiry date on a local SSH keypair and I have found nothing to the contrary so far.&lt;/p&gt;
&lt;p&gt;It is possible to set an expiry date for an uploaded public key, if the server supports this. However, GitHub does not support expiry dates for uploaded SSH public keys.&lt;/p&gt;
&lt;p&gt;If the key is compromised, this means the key will be compromised for a very, very long time. Which can be very, very bad. The recently uncovered &lt;a href=&#34;https://en.wikipedia.org/wiki/XZ_Utils_backdoor&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;XZ Utils Backdoor&lt;/a&gt; was planted by a covert operative who embedded himself in an Open Source project for several years. It&amp;rsquo;s not unthinkable that a compromised SSH key could be used for mischief many years down the line.&lt;/p&gt;
&lt;p&gt;A special problem arises with SSH deploy keys, which are not linked to particular users and &lt;a href=&#34;https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys#ssh-agent-forwarding&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;do not expire&lt;/a&gt; when the user is removed from an organization.&lt;/p&gt;
&lt;h2 id=&#34;problem-3-cannot-scope-ssh-permissions&#34;&gt;
  Problem 3: Cannot scope SSH permissions
  &lt;a class=&#34;heading-link&#34; href=&#34;#problem-3-cannot-scope-ssh-permissions&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Regular SSH access to Github does not permit fine-grained access control. The SSH connection to Github is allowed to do everything that can be done via API, which can be somewhere between bad and catastrophic if the key is stolen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Deploy keys&lt;/a&gt; are a partial solution to the scoping problem, but they can only be created with single-repository scope. This can be a problem for some use cases, but in my own workflow it would be a workable alternative. That being said, I think many developers use unrestricted SSH keys in their regular workflows.&lt;/p&gt;
&lt;p&gt;PATs on the other hand always permit scoping of permissions and can be tailored to specific use cases. It is possible to create a more encompassing PAT for a local secure machine and to create additional limited PATs, for example with read-only access to single repositories for use on a deployment server.&lt;/p&gt;
&lt;h2 id=&#34;problem-4-ssh-agent-forwarding-is-insecure&#34;&gt;
  Problem 4: SSH Agent Forwarding is insecure
  &lt;a class=&#34;heading-link&#34; href=&#34;#problem-4-ssh-agent-forwarding-is-insecure&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Normally a the private key needs to be present on the machine accessing the remote Git repository. Storing an unrestricted private SSH key on the disk of a local machine is a medium risk, on remote machines it is an unacceptable risk. Deployment keys with single repository scope are an alternative, but may be impractical during development.&lt;/p&gt;
&lt;p&gt;SSH Agent Forwarding solves this issue by forwarding the functionality of the SSH agent, but not the private key itself. The SSH Agent Forwarding workflow looks something like this:&lt;/p&gt;
&lt;div style =&#34;text-align: center;&#34;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init: {&#39;theme&#39;:&#39;dark&#39;}}%%
graph LR

    l[Local Machine] --&gt;|Git Push| g[Remote Git Repository] 
	g --&gt;|Git Pull| r[Deployment Server]
	l --&gt;|Direct SSH| r --&gt;|Forwarded SSH| g
	

&lt;/div&gt;

&lt;/div&gt;
&lt;p&gt;The deployment server is the place where the code stored in the repository is executed, usually some kind of VM in the cloud. If the deployment server is compromised, then the access rights of the SSH agent can be misused for the duration of the SSH connection. This is much better than losing the SSH key permanently, but it is still quite bad because of the universal access rights of regular SSH keys on GitHub.&lt;/p&gt;
&lt;p&gt;In terms of security tradeoffs, compromised SSH Agent Forwarding should have a smaller temporal breach scope than losing a PAT. An SSH connection should not be active for more than a few hours at a time, but it might be compromised on more than one occasion if the breach isn&amp;rsquo;t noticed. A compromised PAT will be valid until its expiry, usually a maximum of 30 days.&lt;/p&gt;
&lt;p&gt;On the other hand, a breached PAT with narrow scope (e.g. only the code that is being deployed on the remote server) would cause much smaller losses than the near-full-account access of SSH connections with an unrestricted SSH key. Repository-linked deployment keys are an alternative.&lt;/p&gt;
&lt;h2 id=&#34;problem-5-ssh-port-22-often-blocked-on-managed-networks&#34;&gt;
  Problem 5: SSH port 22 often blocked on managed networks
  &lt;a class=&#34;heading-link&#34; href=&#34;#problem-5-ssh-port-22-often-blocked-on-managed-networks&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Accessing remote Git repositories via API is usually done over two protocols: HTTPS or SSH. HTTPS is the regular web protocol and runs on port 443. SSH is normally used for remotely administering servers and runs on port 22.&lt;/p&gt;
&lt;p&gt;The main difference: HTTPS is used by regular people, SSH by power users.&lt;/p&gt;
&lt;p&gt;Port 443 needs to be open to access any kind of normal webpage, a ton of REST APIs that run over HTTPS and for many other reasons. Blocking it is like blocking the internet, so this is simply not done on large managed networks (e.g. universities, corporations, etc.).&lt;/p&gt;
&lt;p&gt;Port 22 on the other hand is used by very few people, usually those with advanced computer skills, usually those who can wreck things on the network. So it is often blocked for security reasons.&lt;/p&gt;
&lt;p&gt;Now, SSH can be tunnelled over the HTTPS port, but this &lt;a href=&#34;https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;requires extra setup&lt;/a&gt; and firewall rules or proxy servers may still interfere. Since I spend a good amount of time connected to university networks, PATs over HTTPS are easier.&lt;/p&gt;
&lt;h1 id=&#34;why-not-oauth&#34;&gt;
  Why not OAuth?
  &lt;a class=&#34;heading-link&#34; href=&#34;#why-not-oauth&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;I still need to try the &lt;a href=&#34;https://github.com/hickford/git-credential-oauth&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;OAuth credential helper&lt;/a&gt;. It seems to be an interesting combination of two-factor authentication combined with the Git Cache.&lt;/p&gt;
&lt;p&gt;I do wonder if it is more convenient than storing a PAT in the system keyring. I also wonder if it is more secure than a tightly scoped PAT (I didn&amp;rsquo;t see any scoping options while reading up on it, but may have missed them).&lt;/p&gt;
&lt;p&gt;Something to try in the future!&lt;/p&gt;
&lt;h1 id=&#34;conclusion&#34;&gt;
  Conclusion
  &lt;a class=&#34;heading-link&#34; href=&#34;#conclusion&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;This concludes my reflections on a problem I had some time ago: how to access remote Git repositories securely via command line and where to store the secrets.&lt;/p&gt;
&lt;p&gt;I use Git Cache and the Linux keyring in my personal workflow. I&amp;rsquo;m interested in OAuth, but haven&amp;rsquo;t gotten around to trying it. The essay contains setup instructions for cache and keyring.&lt;/p&gt;
&lt;p&gt;I use the &lt;a href=&#34;https://keepassxc.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;KeepassXC&lt;/a&gt; password manager to store all my PATs, so adding a credential helper interface might be useful. Unfortunately my specific system setup makes this impractical. It does seem to be a good option, though.&lt;/p&gt;
&lt;p&gt;I decided against using the native Git Credential Store because it stores PATs in cleartext on the disk. I decided against SSH because the private key is stored on disk, the key does not expire, the key cannot be scoped as well as a PAT, SSH forwarding is insecure and SSH port 22 is often blocked on large managed networks.&lt;/p&gt;
&lt;p&gt;Hopefully this was useful to someone, if only to my future self wondering why I spent all that time thinking about Git authentication.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;List compiled from the linked webpage on 22 November 2024.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;I believe this is true for both GNOME Keyring and KDE Wallet.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Don&amp;rsquo;t ask how many hours of web searching it took me to figure this out. This is the secret of all textbooks and tutorials: you just see the gain, never the pain.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>[New Tutorial] Representativeness, Samples and Populations</title>
      <link>https://seanfobbe.com/posts/2024-11-04_new-tutorial-representativeness-samples-populations/</link>
      <pubDate>Mon, 04 Nov 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-11-04_new-tutorial-representativeness-samples-populations/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[New Tutorial]&lt;/strong&gt; &lt;a href=&#34;https://seanfobbe.com/tutorials/representativeness/&#34; &gt;Representativeness, Samples and Populations&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The representativeness of scientific research and public opinion polls is one of the defining methodological problems of our time. Whether a single study or a series of studies provide us with general information about the world greatly depends on the quantity and quality of the data collected.&lt;/p&gt;
&lt;p&gt;If the methods and data of a study are rigorous and convincing in its own context we call it &lt;em&gt;internally valid&lt;/em&gt;. If the methods and data allow us to generalize these results to a wider population we call it &lt;em&gt;externally valid&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Key components of &lt;em&gt;external validity&lt;/em&gt; are samples, populations and representativeness. Properly drawn random samples with adequate sample size allow inferences from a thousand persons to an entire country. By contrast, badly drawn samples are often biased in unknown and irreparable ways. The quality and quantity of the sampling process are key to the power of modern opinion polls, which are able to predict the outcome of democratic elections within a margin of just a few percentage points.&lt;/p&gt;
&lt;p&gt;However, these results are only helpful when the methods are rigorous. The reliance on flawed data in decisionmaking can cause significant and widespread damage. Nowhere is this more acute than in public policy and the application of the law. It is critical for lawyers to understand when results can be generalized and when they cannot.&lt;/p&gt;
&lt;p&gt;This tutorial examines the following themes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The difference between descriptive and inferential statistics&lt;/li&gt;
&lt;li&gt;Samples, populations and representativeness as key concepts&lt;/li&gt;
&lt;li&gt;The reference class problem as a PR catastrophe for the Munich Security Conference&lt;/li&gt;
&lt;li&gt;Fixing the reference class problem with random sampling or post-stratification&lt;/li&gt;
&lt;li&gt;Biased opinion polling and the downfall of the Literary Digest&lt;/li&gt;
&lt;li&gt;Visual intuition for random samples&lt;/li&gt;
&lt;li&gt;Numerical intuition for random samples&lt;/li&gt;
&lt;li&gt;The bootstrap procedure for measuring uncertainty at different sample sizes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This tutorial is rather heavy on theory in the first half, but the second half includes a lot of interesting R code you can run yourself. You&amp;rsquo;ll learn to understand the process, verify the results and make some cool diagrams. The visuals in particular are far more exciting when you create them yourself!&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[New Tutorial]&lt;/strong&gt; &lt;a href=&#34;https://seanfobbe.com/tutorials/representativeness/&#34; &gt;Representativeness, Samples and Populations&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>Recording of the UN Security Council Corpus Launch Event</title>
      <link>https://seanfobbe.com/posts/2024-10-23_recording-unsc-launch-event-presentation/</link>
      <pubDate>Wed, 23 Oct 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-10-23_recording-unsc-launch-event-presentation/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://www.youtube.com/watch?v=_N9sNNPxIQc&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Recording of the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo; Launch Event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.11205639&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Slides and Materials for the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo; Launch Event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolution: UN Security Council (CR-UNSC)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;recording-of-launch-event-presentation-online&#34;&gt;
  Recording of Launch Event Presentation Online
  &lt;a class=&#34;heading-link&#34; href=&#34;#recording-of-launch-event-presentation-online&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Did you miss the launch event for the &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolution: UN Security Council (CR-UNSC)&lt;/a&gt; in May? We&amp;rsquo;ve got you covered.&lt;/p&gt;
&lt;p&gt;The ESIL Interest Group on International Organizations kindly recorded the talks given by myself, Lorenzo Gasbarri (Scuola Superiore Sant&amp;rsquo;Anna) and Niccolò Ridi (King&amp;rsquo;s College London) and &lt;a href=&#34;https://www.youtube.com/watch?v=_N9sNNPxIQc&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;made them available on YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The event was chaired by Christiane Ahlborn (Trinity College Dublin).&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/records/11205640/files/Fobbe_2024-05-20_CR-UNSC-Launch-Event_final.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;slides&lt;/a&gt; and &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.11205639&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;materials&lt;/a&gt; for my presentation are also available online.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Open Digital Resources for the 2025 Jessup International Law Moot Court</title>
      <link>https://seanfobbe.com/posts/2024-10-08_jessup-moot-court-competition-resources/</link>
      <pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-10-08_jessup-moot-court-competition-resources/</guid>
      <description>&lt;h1 id=&#34;open-digital-resources-for-international-law-research&#34;&gt;
  Open Digital Resources for International Law Research
  &lt;a class=&#34;heading-link&#34; href=&#34;#open-digital-resources-for-international-law-research&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Competing in the &lt;a href=&#34;https://www.ilsa.org/about-jessup/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;2025 Jessup International Law Moot Court&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;Over the past few years I&amp;rsquo;ve created a number of open digital resources for international legal research that will make your life easier and may give you an edge in the competition:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complete collection of &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;International Court of Justice (ICJ) case law&lt;/a&gt; and dissenting/separate opinions in English and French (1946&amp;ndash;2023)&lt;/li&gt;
&lt;li&gt;Complete collection of &lt;a href=&#34;https://doi.org/10.5281/zenodo.3840479&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Permanent Court of International Justice (PCIJ) case law&lt;/a&gt; and dissenting/separate opinions in English and French (Series A, B and A/B)&lt;/li&gt;
&lt;li&gt;Complete collection of &lt;a href=&#34;https://doi.org/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;UN Security Council (UNSC) resolutions&lt;/a&gt; in all six official UN languages (1946&amp;ndash;2023)&lt;/li&gt;
&lt;li&gt;Useful selection of &lt;a href=&#34;https://zenodo.org/records/3824282&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;key treaties and important international legal documents&lt;/a&gt; in English&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;why-bother&#34;&gt;
  Why bother?
  &lt;a class=&#34;heading-link&#34; href=&#34;#why-bother&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;No more spending hours downloading individual documents from the ICJ website! You can get all of the case law at once, as a single ZIP archive.&lt;/p&gt;
&lt;p&gt;All collections are available as PDF files with helpful file names that will make searching for relevant documents much easier.&lt;/p&gt;
&lt;p&gt;The ICJ, PCIJ and UNSC collections also come with TXT files and CSV files to run through your favorite search program and do quick full-text searches across the entire universe of these key UN organs.&lt;/p&gt;
&lt;p&gt;Want to go really wild? You can also apply modern Natural Language Processing (NLP) methods to these datasets. I&amp;rsquo;ve written a tutorial on how to do &lt;a href=&#34;https://seanfobbe.com/tutorials/kwic-lexical-dispersion/&#34; &gt;Keyword-in-Context (KWIC) analyses and create X-Ray Plots&lt;/a&gt; with the ICJ dataset.&lt;/p&gt;
&lt;p&gt;You might even consider feeding the documents to an AI or whatever, but I have &lt;a href=&#34;https://seanfobbe.com/posts/2023-07-27_some-thoughts-on-large-language-models-in-the-legal-domain/&#34; &gt;some critical thoughts on that&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;and-the-best-part&#34;&gt;
  And the best part?
  &lt;a class=&#34;heading-link&#34; href=&#34;#and-the-best-part&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;These digital resources are open access, you aren&amp;rsquo;t forced to share your personal data with me and you don&amp;rsquo;t have to attend a mandatory training session with people trying to sell you things. Yeah, &lt;a href=&#34;https://www.ilsa.org/2024/09/30/important-information-on-how-to-access-jus-mundi-for-jessup-2025/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;this is a thing&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Data] Citation Network of the German Federal Court of Justice (2000-2024)</title>
      <link>https://seanfobbe.com/posts/new-data-citation-network-german-federal-court-of-justice/</link>
      <pubDate>Mon, 07 Oct 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/new-data-citation-network-german-federal-court-of-justice/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/12814022/files/CE-BGH_2024-09-25_DE_GraphML_Netzwerke.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Citation Network of the German Federal Court of Justice (BGH) as GraphML (2000-2024)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.3942742&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;German Federal Court of Justice Corpus (CE-BGH)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;New citation data available! I&amp;rsquo;ve updated the Corpus of German Federal Court of Justice decisions and it now includes a specialized variant containing all citations to its own decisions, extracted from the text of those decisions.&lt;/p&gt;
&lt;p&gt;The scope of the citation network in Version 2024-09-25 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ca. 600,000 individual citations&lt;/li&gt;
&lt;li&gt;ca. 440,000 edges (citation connections weighted by number of individual citations)&lt;/li&gt;
&lt;li&gt;ca. 100,000 nodes (Aktenzeichen, BGHZ und BGHSt)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;em&gt;Aktenzeichen&lt;/em&gt; are German docket numbers. BGHZ and BGHSt are citations to the official collections of decisions in civil (BGH) and criminal (BGHSt) matters.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;As of now this variant is in beta testing. It contains the following types of citations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Citations from Aktenzeichen to Aktenzeichen&lt;/li&gt;
&lt;li&gt;Citations from Aktenzeichen to BGHZ&lt;/li&gt;
&lt;li&gt;Citations from Aktenzeichen to BGHSt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Aktenzeichen&lt;/em&gt; (docket number) citations are less accurate than decision citations (which require a date in addition to the &lt;em&gt;Aktenzeichen&lt;/em&gt; for unique identification) However, 91.78% of all &lt;em&gt;Aktenzeichen&lt;/em&gt; in the CE-BGH dataset are unique (independent of the date) so this is a reasonable approximation. I intend to add decision-level citation support in the future.&lt;/p&gt;
&lt;div class=&#34;notice warning&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-triangle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Warning
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Citing decisions can only be those where the full-text is available. This means decisions dated 2000 or later. Cited decisions can be from any year.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;some-network-statistics&#34;&gt;
  Some Network Statistics
  &lt;a class=&#34;heading-link&#34; href=&#34;#some-network-statistics&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Number of Nodes&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Number of Edges&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Strength (Out)&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Mean Degree&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Max Degree&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;Min Degree&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;101,474.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;441,884.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;593,154.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;8.71&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;559.00&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;network-diagram-for-the-11th-civil-senate-banking-senate&#34;&gt;
  Network Diagram for the 11th Civil Senate (Banking Senate)
  &lt;a class=&#34;heading-link&#34; href=&#34;#network-diagram-for-the-11th-civil-senate-banking-senate&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CE-BGH_2024-09-25_Zitatationsnetzwerk_Graph_schwarzweiss-lowres.png&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;This diagram visualizes the citation network extracted from the decisions of the 11th Civil Senate, also known as the &lt;em&gt;Banking Senate&lt;/em&gt;. It represents only a subset of the data. The complete network is probably too large to be visualized in any single diagram.&lt;/p&gt;
&lt;p&gt;The visualization algorithm is &lt;a href=&#34;https://en.wikipedia.org/wiki/Layered_graph_drawing&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Sugiyama&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The small white dots are individual docket numbers or BGHZ decisions, the connecting lines are citations (any number). Multiple citations between the same nodes are not shown in the diagram, but the weights are available in the network data.&lt;/p&gt;
&lt;p&gt;The network is hierarchical, because newer decisions can only cite older decisions, not the other way around. The diagram is read from top to bottom.&lt;/p&gt;
&lt;p&gt;Because of the strong connections between certain decision clusters one might call them &amp;ldquo;lines of jurisprudence&amp;rdquo;, but the research on this subject is still in its infancy. The shape may simply be an artifact of the force-directed layout.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CE-BGH_2024-09-25_Zitatationsnetzwerk_Graph_karmesinrot-lowres.png&#34;/&gt;
&lt;/figure&gt;

&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;High-resolution versions of the diagrams can be &lt;a href=&#34;https://zenodo.org/records/12814022/files/CE-BGH_2024-09-25_DE_Analyse.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;downloaded here.&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>[New Tutorial] The Importance of Data Visualization (Datasaurus Edition)</title>
      <link>https://seanfobbe.com/posts/2024-10-06_new-datasaurus-tutorial/</link>
      <pubDate>Sun, 06 Oct 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-10-06_new-datasaurus-tutorial/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Data visualization is an incredibly important component of a data scientist&amp;rsquo;s toolbox. Not just for communicating the results of an analysis, but also as a sanity check for detecting obvious problems with the data.&lt;/p&gt;
&lt;p&gt;The original &lt;a href=&#34;https://en.wikipedia.org/wiki/Datasaurus_dozen&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Datasaurus&lt;/a&gt; was created by Alberto Cairo in 2016 as a humorous demonstration of how a silly image can be presented as a serious dataset.  Justin Matejka und George Fitzmaurice later published a technique that could produce &amp;ldquo;serious&amp;rdquo; datasets from a wide range of base images, resulting in the &lt;a href=&#34;https://en.wikipedia.org/wiki/Datasaurus_dozen&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Datasaurus Dozen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This tutorial discusses the Datasaurus with its dozen companion examples and explores how they illustrate the limitations of raw data inspection and pure summary statistics.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[New Tutorial]&lt;/strong&gt; &lt;a href=&#34;https://seanfobbe.com/tutorials/importance-of-visualization-datasaurus/&#34; &gt;The Importance of Data Visualization (Datasaurus Edition)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>The COVID Case Law of the German Constitutional Court (BVerfG) up to July 2024</title>
      <link>https://seanfobbe.com/posts/2024-09-15_covid-case-law-german-constitutional-court-update/</link>
      <pubDate>Sun, 15 Sep 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-09-15_covid-case-law-german-constitutional-court-update/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.4459405&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;COVID Case Law of the German Constitutional Court (BVerfG-Corona)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.4459415&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source Code to the COVID case law dataset&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;In January 2021 I started publishing a regular compilation of &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.4459405&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;all COVID decisions of the German Constitutional Court&lt;/a&gt;, the &lt;em&gt;Bundesverfassungsgericht&lt;/em&gt; (BVerfG). Today I published an updated version up to and including 24 July 2024. Now seems like a good time to write a quantitative review of the constitutional court&amp;rsquo;s COVID case law.&lt;/p&gt;
&lt;p&gt;The dataset &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.4459405&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corona-Rechtsprechung des Bundesverfassungsgerichts (BVerfG-Corona)&lt;/a&gt; is an automated compilation of all BVerfG decisions associated with the novel Corona virus (SARS-CoV-2).&lt;/p&gt;
&lt;p&gt;The compilation is based on the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3902658&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesverfassungsgerichts (CE-BVerfG)&lt;/a&gt; and documents all decisions which contain the character sequences &amp;ldquo;Corona&amp;rdquo;, &amp;ldquo;SARS-CoV&amp;rdquo; or &amp;ldquo;COVID&amp;rdquo; in their full text since 1998.&lt;/p&gt;
&lt;p&gt;Version 2024-07-24 of the COVID case law dataset contains 142 decisions. The new version contains 13 decisions more than the previous update in February 2023. The data are published in the following formats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PDF files for traditional legal research&lt;/li&gt;
&lt;li&gt;TXT files for Legal Data Science&lt;/li&gt;
&lt;li&gt;CSV file containing all keyword hits plus context before and after (KWIC)&lt;/li&gt;
&lt;li&gt;Lexical dispersion plots to provide a quick overview of the case law&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even if you don&amp;rsquo;t practice Legal Data Science at all, being able to &lt;a href=&#34;https://zenodo.org/records/13765529/files/BVerfG-Corona_2024-07-24_DE_PDF_Datensatz.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;download all COVID decisions as PDF files&lt;/a&gt; in a clean ZIP archive is neat, eh?&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Please note that while this review is in English, both datasets are published and documented entirely in German. I believe that NLP practitioners should have some proficiency in the language they are analyzing, that is, be able to at least speak enough German to read the documentation.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;time-series-covid-decisions-per-year-2020--2024&#34;&gt;
  Time Series: COVID Decisions per Year (2020&amp;ndash;2024)
  &lt;a class=&#34;heading-link&#34; href=&#34;#time-series-covid-decisions-per-year-2020--2024&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Public health measures and restrictions of fundamental rights have been discontinued or scaled back significantly in most countries. The same is true for Germany and this is reflected in the number of COVID-related decisions of the BVerfG, which have notably decreased over time.&lt;/p&gt;
&lt;p&gt;For this post I extracted the number of COVID decisions by year from the &lt;a href=&#34;https://zenodo.org/records/13765530/files/BVerfG-Corona_2024-07-24_CompilationReport.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Compilation Report&lt;/a&gt;, created a quick table and visualized the data as a bar plot. The data for 2024 are only partially complete (up to July 2024), but the decreasing trend is readily apparent.&lt;/p&gt;
&lt;p&gt;During the pandemic I assumed the BVerfG would keep referring to COVID era norms and events for a long time afterwards, but this does not appear to be the case.&lt;/p&gt;
&lt;p&gt;On the one hand this lessening need for constitutional intervention may be due to the lifting of almost all public health restrictions, on the other hand the BVerfG provided many useful constitutional guidelines in its landmark decisions. This may allow the lower courts to do most of the heavy lifting from now on.&lt;/p&gt;
&lt;p&gt;Hopefully with more determination than during the pandemic.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(data.table)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(ggplot2)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;dt &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;data.table&lt;/span&gt;(Year &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;2020&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ff9f43&#34;&gt;2024&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;                 Decisions &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;c&lt;/span&gt;(&lt;span style=&#34;color:#ff9f43&#34;&gt;63&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;41&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;24&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;11&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;3&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;ggplot&lt;/span&gt;(data &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; dt, &lt;span style=&#34;color:#57c7ff&#34;&gt;aes&lt;/span&gt;(x &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; Year, y &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; Decisions))&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_bar&lt;/span&gt;(stat &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;identity&amp;#34;&lt;/span&gt;, fill &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;black&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_text&lt;/span&gt;(&lt;span style=&#34;color:#57c7ff&#34;&gt;aes&lt;/span&gt;(label &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; Decisions),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;              vjust &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;-0.5&lt;/span&gt;, color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;black&amp;#34;&lt;/span&gt;, size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;4&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;theme_bw&lt;/span&gt;()&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;labs&lt;/span&gt;(title &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;COVID Decisions of the German Constitutional Court (BVerfG) up to 24 July 2024&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;         subtitle &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;Contain the sequences &amp;#39;Corona&amp;#39;, &amp;#39;COVID&amp;#39; or &amp;#39;SARS-CoV&amp;#39; in their full text&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;         caption &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;Daten: https://zenodo.org/records/13765529 | Seán Fobbe&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;img src=&#34;https://seanfobbe.com/posts/2024-09-15_corona-rechtsprechung-bverfg-update_files/figure-html/bverfg-corona-decisions-timeseries-1.png&#34; width=&#34;864&#34; /&gt;
&lt;h1 id=&#34;lexical-dispersion-plot&#34;&gt;
  Lexical Dispersion Plot
  &lt;a class=&#34;heading-link&#34; href=&#34;#lexical-dispersion-plot&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Lexical dispersion plots are one of my favorite types of diagram. They are conceptually easy (keyword search), but nevertheless very useful to quickly scan a large corpus for weakly and strongly relevant texts. Weakly relevant texts are those with few hits, strongly relevant texts those with many hits.&lt;/p&gt;
&lt;p&gt;Assuming one can find good and (fairly) unique keywords, the search for relevant texts is child&amp;rsquo;s play. This is especially useful in the legal domain where highly specific language and unique terms abound.&lt;/p&gt;
&lt;p&gt;In this case the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3902658&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesverfassungsgerichts (CE-BVerfG)&lt;/a&gt; (contains all published decisions of the BVerfG from 1998 to July 2024) is scanned for the terms &amp;ldquo;Corona&amp;rdquo;, &amp;ldquo;SARS-CoV&amp;rdquo; or &amp;ldquo;COVID&amp;rdquo;. Any of the terms counts as a hit.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Want to try lexical dispersion plots yourself? It isn&amp;rsquo;t very difficult and I&amp;rsquo;ve published an English language &lt;a href=&#34;https://seanfobbe.com/tutorials/kwic-lexical-dispersion/&#34; &gt;open access tutorial&lt;/a&gt; that guides you through the whole process with an English language corpus!&lt;/div&gt;
&lt;/div&gt;

&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/BVerfG-Corona_2024-07-24_LexicalDispersionPlot.png&#34;/&gt;
&lt;/figure&gt;

&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;You can download a &lt;a href=&#34;https://zenodo.org/records/13765529/files/BVerfG-Corona_2024-07-24_DE_ANALYSE.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;high-resolution version of this diagram in PDF and PNG format&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I find it fascinating how such a simple technique can reliably show the five landmark COVID decisions of the constitutional court. These are (translated):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Federal Emergency Brake I: Curfew and Contact Restrictions (19 November 2021)&lt;/li&gt;
&lt;li&gt;Federal Emergency Brake II: School Closures (19 November 2021)&lt;/li&gt;
&lt;li&gt;Triage in the case of disabled patients (16 Dezember 2021)&lt;/li&gt;
&lt;li&gt;Vaccination Certificate (27 April 2022)&lt;/li&gt;
&lt;li&gt;EU COVID lines of credit (6 Dezember 2022)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;summary&#34;&gt;
  Summary
  &lt;a class=&#34;heading-link&#34; href=&#34;#summary&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The COVID case law of the German Constitutional Court, the &lt;em&gt;Bundesverfassungsgericht&lt;/em&gt; (BVerfG), is now available up to July 2024 in an easy-to-use digital compilation. The time series shows that the number of COVID decisions has decreased sharply in recent years. It is probable that the BVerfG will declare constitutional closure at some point and the pandemic will move from national and constitutional emergency to simply another episode of legal history.&lt;/p&gt;
&lt;p&gt;Let us hope that constitutional law will be more prepared for the next pandemic.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Slides] Introduction to Legal Data Science</title>
      <link>https://seanfobbe.com/posts/2024-09-03_slides-talk-introduction-to-lega-data-science/</link>
      <pubDate>Tue, 03 Sep 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-09-03_slides-talk-introduction-to-lega-data-science/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/13642963/files/Fobbe_2024-08-29_Introduction-to-Legal-Data-Science.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Introduction to Legal Data Science (LLI Student Roundtable)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://seanfobbe.com/how-to-get-started-with-legal-data-science/&#34; &gt;How to Get Started with Legal Data Science (Tutorial)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;introduction-to-legal-data-science-talk&#34;&gt;
  Introduction to Legal Data Science Talk
  &lt;a class=&#34;heading-link&#34; href=&#34;#introduction-to-legal-data-science-talk&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The slides for my recent talk &amp;ldquo;Introduction to Legal Data Science&amp;rdquo; are &lt;a href=&#34;https://zenodo.org/records/13642963/files/Fobbe_2024-08-29_Introduction-to-Legal-Data-Science.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;now online&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;The talk was organized around three questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is Legal Data Science?&lt;/li&gt;
&lt;li&gt;Why study Legal Data Science?&lt;/li&gt;
&lt;li&gt;Where to get started with Legal Data Science?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This presentation provides an introduction to Legal Data Science and hopefully some answers. Legal Data Science is an interdisciplinary approach to the law that unites legal expertise, programming and mathematics to solve quantitative problems and generalize from real-world data.&lt;/p&gt;
&lt;p&gt;In a world increasingly built on technology and data analysis it is important to be familiar with at least the basic techniques of data science to maintain one&amp;rsquo;s intellectual autonomy and remain competitive in the legal job market. Those who dive deeper into the field will discover many exciting opportunities and new career pathways.&lt;/p&gt;
&lt;p&gt;The talk was delivered online on 29 August 2024 to the Student Chapter Roundtable of the Liquid Legal Institute. Thank you for the kind invitation!&lt;/p&gt;
&lt;p&gt;Be sure to also check out the tutorial that inspired this talk, linked in the info box above!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>New Teaching Section</title>
      <link>https://seanfobbe.com/posts/2024-07-31_new-teaching-section/</link>
      <pubDate>Wed, 31 Jul 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-07-31_new-teaching-section/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s a new top-level section on my website: &lt;a href=&#34;https://seanfobbe.com/teaching&#34; &gt;Teaching Materials on Legal Data Science&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This page collects all the materials I&amp;rsquo;ve created to help people learn more about Legal Data Science. They include an introduction to Legal Data Science, tutorials, selected essays, ideas for advanced learners and some suggestions for teachers.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Legal Data Science&lt;/em&gt; is the application of computational statistical methods to the legal domain. In other words, it combines programming, statistics and domain expertise &lt;a href=&#34;http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Conway 2013)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All the materials I create are published under open licenses and I would be glad to see them used wherever they can help &amp;mdash; whether for self-study, in class or anywhere else.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Make sure to begin with the tutorial &lt;a href=&#34;https://seanfobbe.com/how-to-get-started-with-legal-data-science/&#34; &gt;How to Get Started with Legal Data Science&lt;/a&gt; if you are a lawyer and have no prior experience with data science.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;As new tutorials, essays and other items are published I will add them to this page, sorted by topic. If you are looking for a chronological list, &lt;a href=&#34;https://seanfobbe.com/posts/&#34; &gt;check out my blog&lt;/a&gt; for what is new.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Tutorial] How to Get Started with Legal Data Science</title>
      <link>https://seanfobbe.com/posts/2024-07-22_how-to-get-started-with-legal-data-science/</link>
      <pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-07-22_how-to-get-started-with-legal-data-science/</guid>
      <description>&lt;p&gt;People often ask me how to get started with Legal Data Science. So I got to work and wrote up a tutorial!&lt;/p&gt;
&lt;p&gt;This tutorial offers a basic introduction to the subject and gives reasons why you should not be satisfied with the traditional focus on literary methods in legal methodology.&lt;/p&gt;
&lt;p&gt;Most importantly, it offers a large number of Open Access resources to help you on your way, whether you are looking to become a full-fledged Legal Data Scientist or just want to complement your traditional skill set with some computational approaches to the law.&lt;/p&gt;
&lt;p&gt;All publications with a link are Open Access and there&amp;rsquo;s a lot of them!&lt;/p&gt;
&lt;p&gt;Check back every once in a while, as I will add more resources when I come across them.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[New Tutorial]&lt;/strong&gt; &lt;a href=&#34;https://seanfobbe.com/how-to-get-started-with-legal-data-science&#34; &gt;How to Get Started with Legal Data Science (Fobbe 2024)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>[Essay] The Breaking of a Social Contract, or Why I am Switching to Copyleft Licensing</title>
      <link>https://seanfobbe.com/posts/2024-07-17_breaking-of-a-social-contract-switching-to-copyleft-licensing/</link>
      <pubDate>Wed, 17 Jul 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-07-17_breaking-of-a-social-contract-switching-to-copyleft-licensing/</guid>
      <description>&lt;!-- https://www.gnu.org/philosophy/open-source-misses-the-point.html --&gt;
&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Effective immediately, I am switching to copyleft licensing for all future software publications. &lt;a href=&#34;https://en.wikipedia.org/wiki/Copyleft&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Copyleft&lt;/a&gt; means that redistribution of a work or its derivatives must occur under the same or a similar license. This includes new software, new versions of existing software, libraries, active projects, public development versions on GitHub and anything new or current.&lt;/p&gt;
&lt;p&gt;I prefer the &lt;a href=&#34;https://www.gnu.org/licenses/gpl-3.0.en.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNU General Public License v3 (GPLv3)&lt;/a&gt;, but will decide on a case-by-case basis if another copyleft license is appropriate. I am considering the &lt;a href=&#34;https://www.gnu.org/licenses/agpl-3.0.en.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNU Affero General Public License (AGPLv3)&lt;/a&gt; for certain projects, but haven&amp;rsquo;t decided yet.&lt;/p&gt;
&lt;p&gt;I am committed to backwards-compatible licensing for all past projects and versions. All past and inactive software publications will remain under the licenses they were originally published with. Usually this is MIT No Attribution (MIT-0).&lt;/p&gt;
&lt;p&gt;My academic writing will also move to copyleft licensing, usually &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/deed.en&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Creative Commons Attribution-ShareAlike 4.0 International&lt;/a&gt;. This website is already licensed under CC BY-SA 4.0 and this will remain as is.&lt;/p&gt;
&lt;p&gt;I will continue to release academic datasets under the least restrictive license possible. For example, if the raw data is in the public domain, the finished dataset will be in the public domain. With official legal and political data there are different principles that are important to me, primarily advancing the rule of law and legal scholarship. This requires the unlimited availability of official legal data.&lt;/p&gt;
&lt;p&gt;Continue reading for some deeper reflections on digital infrastructure, free software, the death of corporate open source, the (pill)age of AI, the need to resurrect copyleft licensing and where we go from here as a global community reliant on technology.&lt;/p&gt;
&lt;h1 id=&#34;table-of-contents&#34;&gt;
  Table of Contents
  &lt;a class=&#34;heading-link&#34; href=&#34;#table-of-contents&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#overview&#34;&gt;Overview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#software-as-infrastructure&#34;&gt;Software as Infrastructure&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#free-software-versus-open-source&#34;&gt;Free Software versus Open Source&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-forging-of-a-social-contract-maybe&#34;&gt;The Forging of a Social Contract, Maybe&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-death-of-corporate-open-source&#34;&gt;The Death of Corporate Open Source&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-pillage-of-ai&#34;&gt;The (Pill)Age of AI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#the-breaking-of-the-social-contract&#34;&gt;The Breaking of the Social Contract&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#from-open-source-to-free-software&#34;&gt;From Open Source to Free Software&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;h1 id=&#34;software-as-infrastructure&#34;&gt;
  Software as Infrastructure
  &lt;a class=&#34;heading-link&#34; href=&#34;#software-as-infrastructure&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;!-- &gt; The GPL (The GNU General Public License), created by Richard Stallman, serves as the de facto constitution for the Free Software movement. https://www.free-soft.org/gpl_history/ --&gt;
&lt;p&gt;Software is much more than a fungible product that can be substituted with an alternative at will. After deployment it tends to become a type of infrastructure, with the surrounding social dynamics adapting to the assumptions, affordances and limitations of software systems. This applies to individual workplaces, but also to entire markets, where user expectations are often defined by the leading product.&lt;/p&gt;
&lt;p&gt;Consider the &lt;a href=&#34;https://retractionwatch.com/2023/09/20/guest-post-genomics-has-a-spreadsheet-problem/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;Excel Gene Auto-Formatting Saga&lt;/strong&gt;&lt;/a&gt;. For many years the auto-formatting functionality of Excel caused a large number of data entry errors by reformatting gene names as dates and floating point numbers. For example, &amp;ldquo;SEPT2&amp;rdquo; which stands for &amp;ldquo;Septin 2&amp;rdquo;, is turned into &amp;ldquo;2006/09/02&amp;rdquo; &lt;a href=&#34;https://genomebiology.biomedcentral.com/articles/10.1186/s13059-016-1044-7&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Ziemann, Eren and El-Osta 2016)&lt;/a&gt;. The problem was first described by &lt;a href=&#34;https://link.springer.com/article/10.1186/1471-2105-5-80&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Zeeberg et al (2004)&lt;/a&gt;, almost 20 years ago. &lt;a href=&#34;https://genomebiology.biomedcentral.com/articles/10.1186/s13059-016-1044-7&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ziemann, Eren and El-Osta (2016)&lt;/a&gt; conducted a &amp;ldquo;programmatic scan of leading genomics journals&amp;rdquo; and estimated that &amp;ldquo;approximately one-fifth of papers with supplementary Excel gene lists contain erroneous gene name conversions&amp;rdquo;. The problem was so bad that the HUGO Gene Nomenclature Committee (HGNC) decided to rename several genes to avoid future data entry errors &lt;a href=&#34;https://www.nature.com/articles/s41588-020-0669-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Bruford et al 2020)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Microsoft added an option to disable auto-conversion in 2023 &lt;a href=&#34;https://www.theverge.com/2023/10/21/23926585/microsoft-excel-misreading-dates-human-genes-conversion-fixed&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(The Verge 2023)&lt;/a&gt;, but this is a manual option that needs to be changed by the user.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;The European Spreadsheet Risk Interest Group (EUSPRIG) maintains an up-to-date list of &lt;a href=&#34;https://eusprig.org/research-info/horror-stories/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;spreadsheet horror stories&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The kind of market dominance that can force changes even to scientific nomenclature is anything but rare in the software world. The phenomenon of software-as-infrastructure combined with network effects forces society to bend to successful software products. This generates lucrative business opportunities for actors in control of digital infrastructure.&lt;/p&gt;
&lt;p&gt;The standard corporate playbook calls for building a mediocre software product that covers an acceptable number of use cases, attempting to win as many users as fast as possible, locking them into a proprietary system and then extracting maximum profit when the costs of switching are unacceptably high to the individual user/organization. The median product is optimized for generating recurring revenue, not user satisfaction or engineering quality.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The Microsoft Windows operating system is perhaps the most famous example of this approach, but it is by no means the only one. Microsoft has captured a number of other software markets with successful business tactics over product quality (word processors, spreadsheets, e-mail).  More recently, the success of Facebook, TikTok and every other VC-fueled attempt at building Software-as-a-Service (SaaS) platforms have pursued the same vision of creating profitable monopolies by capturing new product categories as they are created. The plan to &amp;ldquo;build a platform&amp;rdquo; has become nearly synonymous with &amp;ldquo;build a monopoly&amp;rdquo;.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The private control of infrastructure accompanied by the destruction of competition through monopolistic practices was a tried and tested means of extracting &lt;a href=&#34;https://en.wikipedia.org/wiki/Economic_rent&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;economic rents&lt;/a&gt; (unearned revenue) even before the digital age. The United States  boasts a colorful history of &amp;ldquo;captains of industry&amp;rdquo; or &amp;ldquo;robber barons&amp;rdquo; (your choice) making fantastic fortunes from establishing exclusive or quasi-exclusive control over railroads, public transport, communications, real estate, finance and other key social infrastructure. Similar economic patterns have played out all around the world in other times and places.&lt;/p&gt;
&lt;p&gt;Several monopolies of the old industrial age were broken up by successful legal challenges brought by the US government in the early 20th century. Unfortunately, the zeal and success rate of anti-monopoly (&amp;ldquo;anti-trust&amp;rdquo; in the US) enforcement waned sharply with the &lt;a href=&#34;https://en.wikipedia.org/wiki/United_States_antitrust_law&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;rise of the Chicago School&lt;/a&gt; in the 1970s. Microsoft in particular managed to avert the US government&amp;rsquo;s anti-trust challenges to its business practices and was able negotiate a settlement that kept the company intact in the 2000s. This failure of enforcement in the US is significant, because the US became the global hub of software development precisely during the time that competition law was at its weakest. Companies like Microsoft, Google, Facebook (now Meta) and Apple have built such dominance in certain digital markets that they can deny entry to most new competitors and outright buy all the others (e.g. acquisition of Instagram and Whatsapp by Facebook/Meta). Supposedly this benefits consumer welfare, but I am not convinced.&lt;/p&gt;
&lt;p&gt;It was during this era of competition law failure, from the 1980s onwards, that civil society took a keen interest in software as infrastructure and developed surprisingly effective means to challenge corporate control of software and secure this new digital infrastructure for society at large. Socially, this effort was led by the Free Software Movement and the Open Source Movement. Legally, the GNU General Public License (GPL) created by Richard Stallman &amp;mdash;  the &amp;ldquo;de facto constitution for the Free Software movement&amp;rdquo; &lt;a href=&#34;https://www.free-soft.org/gpl_history/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Tai 2001)&lt;/a&gt; &amp;mdash;  was a milestone that subverted copyright law with the intent to ensure free distribution and re-distribution of software.  Technologically, a wide range of high-quality community-supported projects were successful in challenging corporate dominance of the software world, foremost among them &lt;a href=&#34;https://en.wikipedia.org/wiki/Linux_kernel&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Linux&lt;/a&gt;. The Free Culture Movement pursued a similar goal for cultural works, developed the Creative Commons licenses and birthed many successful projects, most notably &lt;a href=&#34;https://en.wikipedia.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wikipedia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today, many open software and open cultural works are so pervasive that they are fundamentally a part of global infrastructure. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Linux kernel and its many distributions (e.g. Debian) power almost all servers in the world&lt;/li&gt;
&lt;li&gt;Almost all programming languages (e.g. C, C++, Python, R)&lt;/li&gt;
&lt;li&gt;The GNU Project and its free software packages (e.g. Emacs, GNOME, GnuPG)&lt;/li&gt;
&lt;li&gt;OpenSSL (and forks like LibreSSL) which secure most encrypted internet communication&lt;/li&gt;
&lt;li&gt;The Firefox web browser&lt;/li&gt;
&lt;li&gt;Wikipedia as the default global encyclopedia&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Specialized blogs that rival professional news outlets in quality and often outperform them in speed (e.g. &lt;a href=&#34;https://krebsonsecurity.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Krebs on Security&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The open pre-publication of academic research on &lt;a href=&#34;https://en.wikipedia.org/wiki/Arxiv&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;arXiv&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;free-software-versus-open-source&#34;&gt;
  Free Software versus Open Source
  &lt;a class=&#34;heading-link&#34; href=&#34;#free-software-versus-open-source&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;At this point I should mention the important distinctions between &amp;ldquo;Free Software&amp;rdquo;, &amp;ldquo;Open Source&amp;rdquo; and &amp;ldquo;Source Available&amp;rdquo;, distinctions that are often lost in public discourse. Roughly speaking the key characteristics between the different concepts and their associated social movements are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Source Available = Public Source Code&lt;/li&gt;
&lt;li&gt;Open Source = Public Source Code + Free Reuse/Redistribution&lt;/li&gt;
&lt;li&gt;Free Software = Public Source Code + Free Reuse/Redistribution + Copyleft&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://opensource.org/osd&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;Open Source&lt;/strong&gt;&lt;/a&gt; is a pragmatic concept and means that the source code for a program is publicly available, the program can be freely distributed and derived works can be freely created and distributed for any purpose. In particular, the &lt;a href=&#34;https://opensource.org/osd&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Open Source Definition&lt;/a&gt; championed by the Open Source Initiative (OSI) forbids discrimination against persons, groups, fields of endeavor, products, other software and particular technologies.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.en.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;Free Software&lt;/strong&gt;&lt;/a&gt;  is a primarily idealistic and philosophical approach that views software as a public good, based on the four software freedoms &lt;a href=&#34;https://www.gnu.org/licenses/quick-guide-gplv3.en.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Smith 2007)&lt;/a&gt;. These are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Freedom to use the software for any purpose&lt;/li&gt;
&lt;li&gt;Freedom to change the software to suit your needs&lt;/li&gt;
&lt;li&gt;Freedom to share the software with your friends and neighbors&lt;/li&gt;
&lt;li&gt;Freedom to share the changes you make&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Strictly speaking the definition of Free Software based on these four freedoms &lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.en.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;does not include copyleft provisions&lt;/a&gt;. The main difference between &amp;ldquo;Free Software&amp;rdquo; and &amp;ldquo;Open Source&amp;rdquo; movements is that the former stresses an idealistic, the latter a pragmatic approach to software distribution. In practice both are often mentioned side-by-side as &amp;ldquo;Free and Open Source Software&amp;rdquo; (FOSS) or &amp;ldquo;Free, Libre and Open Source Software&amp;rdquo; (FLOSS) to sidestep ideological debates and because in truth the formal definitions are almost identical.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Copyleft&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;Copyleft&lt;/strong&gt;&lt;/a&gt; means that redistribution of a work or its derivatives must occur under the same or a similar license. The most famous of the copyleft licenses is the &lt;a href=&#34;https://en.wikipedia.org/wiki/GPL&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNU General Public License (GPL)&lt;/a&gt;. For example, the GPL requires that GPL software and its derivatives must be redistributed either under the GPL or AGPL &amp;mdash; no exceptions. A similar principle is imbued in Creative Commons licenses with the share-alike quality.&lt;/p&gt;
&lt;p&gt;That being said, the practical approach of the Free Software Movement to Free Software is strongly characterized by a copyleft approach to ensure robust enforcement of these freedoms. Copyleft provisions guarantee the software freedoms not just for the direct license recipient, but for any downstream party that might come into contact with the software. Therefore, even if the official definition of Free Software does not include copyleft, I believe it does so in actual practice and should do so in theory as well. When I speak of Free Software I always mentally include the GPL and copyleft.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Source Available&lt;/strong&gt; is a deceptive marketing tactic that some companies use to promote their product as Open Source, when in fact it complies with neither the Open Source Definition nor the Four Software Freedoms &lt;a href=&#34;https://web.archive.org/web/20220820133332/https://opensource.org/node/1099/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(OSI 2019)&lt;/a&gt;. Source Available makes no guarantees beyond the public availability of the source code and usually includes some strict obligations that discriminate against persons, groups or technologies, usually to ensure a commercial advantage.&lt;/p&gt;
&lt;!-- https://web.archive.org/web/20170630183629/http://www.linuxtoday.com/developer/1999062802310NWSM --&gt;
&lt;h1 id=&#34;the-forging-of-a-social-contract-maybe&#34;&gt;
  The Forging of a Social Contract, Maybe
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-forging-of-a-social-contract-maybe&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The evolution towards open software infrastructure seems smooth in hindsight, although the process was anything but painless going through it. Starting in the 1970s, the early innocence of the digital age was followed by intense cultural conflict between civil society and commercial interests about who would control the digital infrastructure of this new era, including the terms under which it would be made available to society at large.&lt;/p&gt;
&lt;p&gt;The acrimony between civil society and the corporate world over matters like free software, copyright, information sharing and the boundaries of permissible computer use (&amp;ldquo;hacking&amp;rdquo;) was intense. Microsoft&amp;rsquo;s Steve Ballmer famously called Linux &amp;ldquo;a cancer that attaches itself in an intellectual property sense to everything it touches&amp;rdquo; &lt;a href=&#34;https://www.theregister.com/2001/06/02/ballmer_linux_is_a_cancer/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(The Register 2001)&lt;/a&gt;. Before the streaming years, many DVDs came with explicit FBI infomercials threatening criminal prosecution for unauthorized copying. The Computer Fraud and Abuse Act (CFAA) was a cornerstone in handing down heavy prison sentences for any and all vaguely unauthorized uses of computers, including the violation of Terms of Service (TOS), making the violation of a simple contract a felony criminal offense in the United States.&lt;/p&gt;
&lt;p&gt;One of the lowest points of the latter part of the era remains the harsh prosecution and subsequent suicide of &lt;a href=&#34;https://en.wikipedia.org/wiki/Aaron_Swartz&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Aaron Swartz&lt;/a&gt;, one of the leaders of the Free Culture Movement and a co-creator of the Creative Commons organization.&lt;/p&gt;
&lt;p&gt;Nevertheless, following the tumultuous rise of the World Wide Web it appeared that a social contract had been forged between corporate interests and civil society in the digital space. Individual creators, a wide range of collectives with different levels of organization and a fair number of corporations would openly publish on the internet some of the finest intellectual works the world has ever seen. These were made available for all to read, share and use (within reasonable constraints set by Open Source and Free Culture licenses), in the expectation that many others in the profit and non-profit ecosystems would return this generosity on principle or at least with principled business acumen.&lt;/p&gt;
&lt;p&gt;The economically minded might prefer to frame this development in terms of an &amp;ldquo;information economy&amp;rdquo;, &amp;ldquo;sharing economy&amp;rdquo;, &amp;ldquo;platform economy&amp;rdquo; or &amp;ldquo;creator economy&amp;rdquo;, but I think that there is more to this system of mutual expectations than can be explained by conceptualizing it as an exchange of goods and services, governed by supply and demand. Many works are shared without the expectation or even viability of economic returns, so a market-based view cannot adequately explain much behavior on the Web. The idea of a social contract is probably closer to the truth.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;After a long and bitter struggle it seemed that profit and non-profit interests were finally roughly aligned, with each supporting the other through somewhat different, but ultimately compatible approaches. The Free Software and Free Culture advocates did not vanish, but there was a general feeling, especially among software developers, that times had changed and the earlier acrimony was no longer warranted.&lt;/p&gt;
&lt;p&gt;Even Microsoft (!) has changed its tune and put its software muscle to work. It is now 2024 and Windows comes with a special &lt;a href=&#34;https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Windows Subsystem for Linux&lt;/a&gt; to make using Linux in Windows machines as painless as possible.&lt;/p&gt;
&lt;p&gt;Many others believed the same. For example, &lt;a href=&#34;https://www.theregister.com/2020/01/17/mit_apache_versus_gpl/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;The Register reported a corporate executive&lt;/a&gt; saying:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In an email to The Register, David Habusha, VP of product at WhiteSource, said that the copyleft license was created by the Free Software Foundation in 1985 &amp;ldquo;to ensure the evil corporations of that time would not be able to use open-source software and then restrict its redistribution.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;But times have changed, he argues. &amp;ldquo;It is no longer an &amp;lsquo;us&amp;rsquo; vs. &amp;rsquo;them&amp;rsquo; scenario, meaning the open-source community vs. commercial corporations,&amp;rdquo; he said.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I counted myself among those who believed we had buried the hatchet and as-open-as-possible with permissive licensing was the default way forward in the future. Academics expand the boundary of human knowledge for the sake of humanity, including corporate humanity, right?&lt;/p&gt;
&lt;h1 id=&#34;the-death-of-corporate-open-source&#34;&gt;
  The Death of Corporate Open Source
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-death-of-corporate-open-source&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;People love telling you to enjoy something while it lasts. We may have reached this point with the corporate commitment to open source. Jeff Geerling recently surveyed the terrain and proclaimed that
&lt;a href=&#34;https://www.jeffgeerling.com/blog/2024/corporate-open-source-dead&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;Corporate Open Source is Dead&amp;rdquo; (Geerling 2024)&lt;/a&gt;. I am inclined to believe him.&lt;/p&gt;
&lt;p&gt;The list of high-profile casualties in recent years is impressive:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MongoDB&lt;/strong&gt; invented an entirely new license in 2018, the Server Side Public License, with draconian terms that were unacceptable to almost everyone &lt;a href=&#34;https://www.mongodb.com/company/newsroom/press-releases/mongodb-issues-new-server-side-public-license-for-mongodb-community-server&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(MongoDB 2018)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confluent&lt;/strong&gt; switched licenses for some components from Apache 2.0 to the Confluent Community License in 2018 &lt;a href=&#34;https://www.confluent.io/blog/license-changes-confluent-platform/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Confluent 2018)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cockroach Labs&lt;/strong&gt; switched the license for CockroachDB from Apache 2.0 to the Business Source License (BSL) in 2019 &lt;a href=&#34;https://www.cockroachlabs.com/blog/oss-relicensing-cockroachdb/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Cockroach Labs 2019)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HashiCorp&lt;/strong&gt; switched their default license from Mozilla Public License v2.0 (MPL 2.0) to the Business Source License (BSL/BUSL) in 2021 &lt;a href=&#34;https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(HashiCorp 2021)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elastic&lt;/strong&gt; switched their default licenses from Apache 2.0 to Elastic License and Server Side Public License (SSPL) in 2021 &lt;a href=&#34;https://www.elastic.co/pricing/faq/licensing&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Elastic 2021)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat&lt;/strong&gt; took over and killed CentOS in 2021 &lt;a href=&#34;https://www.centos.org/centos-linux-eol/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(CentOS 2021)&lt;/a&gt;, an Open Source project that was competing with Red Hat Enterprise Linux (RHEL), later stopping the publication of RHEL source code and making the inferior &amp;ldquo;CentOS Stream (&amp;hellip;) the sole repository for public RHEL-related source code releases&amp;rdquo; in 2023 &lt;a href=&#34;https://www.redhat.com/en/blog/furthering-evolution-centos-stream&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Red Hat 2023)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis&lt;/strong&gt; switched their default licenses from three-clause BSD to the Redis Source Available License (RSALv2) and Server Side Public License (SSPLv1) in 2024 &lt;a href=&#34;https://redis.io/blog/redis-adopts-dual-source-available-licensing/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Redis 2024)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The incident that hit hardest for me was Red Hat closing down CentOS and scaling back its Open Source commitments, but the last straw was when I learned about Red Hat&amp;rsquo;s long-running attempts to circumvent the GPL by contractually forcing customers to decide between a) exercising their GPL rights or b) remaining a customer of Red Hat &lt;a href=&#34;https://sfconservancy.org/blog/2023/jun/23/rhel-gpl-analysis/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Software Freedom Conservancy 2023)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was a long-time user of Fedora and switched to Debian for reasons of stability, but it&amp;rsquo;s safe to say that I am never going back. There are philosophical reasons, of course, but considering how Red Hat alienated the CentOS community I wonder if even Fedora has a viable long-term future as a community project.&lt;/p&gt;
&lt;p&gt;There is nothing inherently wrong with people looking to earn money. There is also nothing inherently wrong with proprietary software, if it is necessary to keep the lights on. In practice it does seem that, according to the White House cyber policy director, companies like Microsoft need to be &amp;ldquo;dragged kicking and screaming&amp;rdquo; &lt;a href=&#34;https://www.theregister.com/AMP/2024/04/21/microsoft_national_security_risk/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(The Register 2024)&lt;/a&gt; to do the right thing, such as providing basic security tooling.&lt;/p&gt;
&lt;p&gt;It is, however, deceptive and unethical to present a project as Open Source when it is not. It is deceptive and unethical to solicit generous contributions from a community with no financial stake in the success of the software and later to revoke the reciprocal arrangement in the hopes of wringing out some extra dollars.&lt;/p&gt;
&lt;p&gt;And this brings us to the age of generative AI.&lt;/p&gt;
&lt;!-- ADD on microsoft security: https://www.schneier.com/blog/archives/2024/04/microsoft-and-security-incentives.html --&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;I have serious doubts as to whether &amp;ldquo;artificial intelligence&amp;rdquo; (AI) is an honest or even useful term in 2024, but let us call it that for the sake of the people coming from LinkedIn. I briefly considered putting every mention of &amp;ldquo;AI&amp;rdquo; in scare quotes, but I was just too damned lazy.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;the-pillage-of-ai&#34;&gt;
  The (Pill)Age of AI
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-pillage-of-ai&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;It is forbidden to violate copyright; therefore all pirates are punished unless they scrape in large numbers and to the sound of AI trumpets.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It would seem like the corporate world was inspired by Voltaire, but missed the irony.&lt;/p&gt;
&lt;p&gt;The Age of AI is the death of corporate open source writ large,  magnified to global scale. Fueled by insensible amounts of venture capital since the launch of ChatGPT in November 2022, many for-profit corporations and some non-profit initiatives on the generative AI hype train have been rampaging across the internet and damaging the information ecosystem and public trust in ways that will not be fully understood for years to come. Instead of swindling contributions from a few willing stakeholders, AI companies are pillaging every bit of content they can get their hands on. Technical security measures, copyright laws and data protection regulations be damned.&lt;/p&gt;
&lt;p&gt;Mustafa Suleyman, the CEO of Microsoft AI, had this to say in 2024:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think that with respect to content that&amp;rsquo;s already on the open web, the social contract of that content since the ‘90s has been that it is fair use. Anyone can copy it, recreate with it, reproduce with it. That has been &amp;ldquo;freeware,&amp;rdquo; if you like, that&amp;rsquo;s been the understanding.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.theverge.com/2024/6/28/24188391/microsoft-ai-suleyman-social-contract-freeware&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;CNBC via The Verge (2024)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Suleyman is not a lawyer and presumably has not watched any DVDs with anti-piracy infomercials in some time, so he can perhaps be forgiven for being ignorant of the finer points of copyright law. Then again, for proper pirates &lt;a href=&#34;https://en.wikiquote.org/wiki/Pirates_of_the_Caribbean:_The_Curse_of_the_Black_Pearl&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;the Code is more what you&amp;rsquo;d call &amp;lsquo;guidelines&amp;rsquo; than actual rules&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What bothers me most is his invocation of the social contract. Even a commercial contract implies a reasonably balanced give-and-take. A social contract implies a similarly balanced exchange in society at large. People publish openly on the Web in the expectation that others will return the sentiment and general welfare increases. However, Microsoft and OpenAI only take, they do not give back. The same is true for almost all AI companies.&lt;/p&gt;
&lt;p&gt;OpenAI hasn&amp;rsquo;t published an open model since GPT-2 and is now one of Wall Street&amp;rsquo;s wolves pretending to be a non-profit sheep. Microsoft remains the archetype of a closed source company. Google is keeping its cards close to its chest. Only Meta has been making waves with its &amp;ldquo;open&amp;rdquo; models and offering to provide source code and weights on request. However, this is a deceptive marketing strategy as the Llama license does not comply with the OSI Open Source Definition and whether access requests are honored or denied is opaque. Also, we know what Facebook/Meta is like as a company. This commitment to &amp;ldquo;open&amp;rdquo; is likely no more than a maneuver to temporarily undercut the competition. As soon as Meta is ahead it will certainly &amp;ldquo;do a Red Hat&amp;rdquo;. We&amp;rsquo;ve seen this before.&lt;/p&gt;
&lt;p&gt;More recently the French company Mistral AI rose to prominence on its claim of being an Open Source company &lt;a href=&#34;https://mistral.ai/news/about-mistral-ai/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Mistral AI 2023)&lt;/a&gt;.Then a massive Microsoft investment in Mistral was disclosed. Conveniently right after the EU AI Act was adopted and the French government had secured concessions on its behalf due to its standing as a good corporate citizen &lt;a href=&#34;https://www.theverge.com/24087008/microsoft-mistral-openai-azure-europe&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(The Verge 2024)&lt;/a&gt;. Mistral continues to publish &amp;ldquo;open weight&amp;rdquo; models, but has begun excluding commercial use cases from its licenses (e.g. Codestral 22B).&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;Followers of my work might note that &lt;a href=&#34;https://seanfobbe.com/data&#34; &gt;I publish a large number of legal and political data sets&lt;/a&gt;, so perhaps this is a case of pot calling kettle black? The difference being that I exclusively republish legal and political data created by public authorities, sourced from official public databases, with clear legal provenance and permission to re-use.&lt;/p&gt;
&lt;p&gt;If laws are adopted and judgments are issued in the name of the people, then the people have a right to acquire, analyze, criticize and re-use judgments to become active participants in the rule of law.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;the-breaking-of-the-social-contract&#34;&gt;
  The Breaking of the Social Contract
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-breaking-of-the-social-contract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;While OpenAI and a couple of others had first crack at the Web, it is now open season with thousands of AI companies going at it full force. This wholesale pillage has an ethical, a legal and an economic dimension.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ethical dimension &amp;mdash; Is it acceptable to take a mind-numbing collection of intellectual works, repackage them as AI and give nothing in return? What does this do to the social contract of the Web?&lt;/li&gt;
&lt;li&gt;Legal dimension &amp;mdash; Is it permissible under copyright and data protection laws to take legally protected intellectual works, compress them into a machine learning model for profit to and give nothing in return?&lt;/li&gt;
&lt;li&gt;Economic dimension &amp;mdash; What happens to the creator economy if you repackage a large number of intellectual works, do not provide compensation and use the result to compete with the original creators?&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;This section was inspired by Judith Donath and Bruce Schneier&amp;rsquo;s essay &lt;a href=&#34;https://www.schneier.com/blog/archives/2024/04/the-rise-of-large.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;The Rise of Large-Language-Model Optimization (Donath/Schneier 2024)&lt;/a&gt;, which I strongly recommend you read. Donath and Schneier have covered most of what I write here with far greater elegance and insight.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I&amp;rsquo;m not going to spend much time on the ethical and legal dimensions of this problem.&lt;/p&gt;
&lt;p&gt;The ethical dimension is a matter of personal integrity and philosophical depth. Both qualities tend to be lacking in the executive suites of companies in the AI space, so I will save myself the effort of building an elaborate argument that will persuade exactly no one. Suffice to say that if you invoke a social contract to take all you can without giving back, you have understood neither the concept of &amp;ldquo;social&amp;rdquo;, nor &amp;ldquo;contract&amp;rdquo;, but you do know what &amp;ldquo;privatization&amp;rdquo; means.&lt;/p&gt;
&lt;p&gt;The legal dimension is largely uncharted territory, so we will probably have to wait a few years for results from ongoing litigation and legislative processes to discover whether AI data set preparation, training or model usage count as copyright events and whether companies producing for-profit models can rely on established copyright exemptions such as &amp;ldquo;fair use&amp;rdquo;. I&amp;rsquo;m not a copyright lawyer, so I recommend you look up your favorite pundit for a legal opinion. I do believe this problem will have to be solved with laws, not litigation.&lt;/p&gt;
&lt;p&gt;What I do want to focus on is the economics of the problem. The &amp;ldquo;creator economy&amp;rdquo; in the modern digital age provides much more freedom to creators than earlier economic eras did, particularly because now there is a much greater selection of viable intermediaries.&lt;/p&gt;
&lt;p&gt;As an academic wanting to share your research in the pre-internet era you had a choice between submitting a book or journal article to one of a few publishers, write a technical report in the rare case that an established organization invited you to participate or send honest-to-goodness physical letters to your academic friends.&lt;/p&gt;
&lt;p&gt;These days you can post random thoughts to thousands of strangers on social media (e.g. Mastodon, LinkedIn, Facebook,&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; Reddit, Instagram, TikTok, YouTube), publish very lengthy posts (yes, I know that this essay is too long) on any subject under the sun to a managed blog in minutes, set up your self-compiled blog in however many weeks you need to get Hugo to work, share draft manuscripts instantly on arXiv or Zenodo, record a podcast, dance your research on TikTok (if you are young) or YouTube (if you are old) and do any number of more or less advisable things that will get your work noticed and draw the ire or admiration of your peers.&lt;/p&gt;
&lt;p&gt;Myself, I have made good use of &lt;a href=&#34;https://fediscience.org/@seanfobbe&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mastodon&lt;/a&gt; and &lt;a href=&#34;https://www.linkedin.com/in/sean-fobbe/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;LinkedIn&lt;/a&gt; and depend greatly on my personal website to share my work. It&amp;rsquo;s probably fair to say that without social media and blogging I could not have published the research that interested me and gained the audience that I have. My experiences with traditional intermediaries have been mixed, to say it politely.&lt;/p&gt;
&lt;p&gt;However, intermediaries remain. They simply have become more colorful, more exciting, more addictive and more algorithmic. This is certainly true of social media, but even academic publishing is becoming more and more like social media every year. Whether you are chasing likes on LinkedIn or citations on Google Scholar, the desire to conform to the expectations of the algorithms is intense. Nevertheless, it is anyone&amp;rsquo;s guess if today&amp;rsquo;s algorithms are more opaque than the backroom dealings and ego-driven editorial work of past centuries.&lt;/p&gt;
&lt;p&gt;It is important to remember that intermediaries do not just mediate content between a creator and an audience, they also mediate the primary rewards: money and status.  Financial rewards can be direct (e.g. subscriptions, shared advertising revenue from platforms) or indirect (e.g. subscriptions, jobs, consulting contracts, paid speaking gigs). Status rewards include short-term recognition (e.g. likes, comments, shares, citations) and long-term recognition (e.g. followers, visibility/mindshare, Board/advisor positions, academic h-index). Status rewards can often be converted into indirect financial rewards with some delay.&lt;/p&gt;
&lt;p&gt;A basic model of the creator economy might look something like this:&lt;/p&gt;
&lt;div style =&#34;text-align: center&#34;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init: {&#39;theme&#39;:&#39;dark&#39;}}%%
graph LR

	Creator --&gt;|Content| Intermediary --&gt;|Content| Audience
	Audience --&gt;|Money| Intermediary --&gt;|Money| Creator
	Audience --&gt;|Status| Intermediary --&gt;|Status| Creator


&lt;/div&gt;

&lt;/div&gt;
&lt;p&gt;The promise of the old creator economy was that if creators publish content through intermediaries, an audience would reward the intermediary and the intermediary would in turn share the rewards with the original creator. For example, &lt;a href=&#34;https://krebsonsecurity.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Brian Krebs&lt;/a&gt; does great cybercrime journalism, publishes it for free on the Web, an audience looks for current research, Google directs readers to the website and profits from the ads served alongside, while Krebs profits from the additional traffic &lt;a href=&#34;https://krebsonsecurity.com/cpm/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;via ads on his website and by offering paid speaking engagements&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Under the new emerging AI economy this link to the original creator is broken. Instead of directing the user to the original content, AI companies intend to process the entire information request from the audience themselves in order to fully capture the revenue and status streams for themselves. Need current journalism? AI will provide. Need a recipe? AI will provide. Need financial advice? AI will provide. Need a solution to a complicated software problem? AI will provide.&lt;/p&gt;
&lt;div style =&#34;text-align: center&#34;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init: {&#39;theme&#39;:&#39;dark&#39;}}%%
graph LR

	Creator --&gt;|Content| Intermediary --&gt;|Content| Audience
	Audience --&gt;|Money| Intermediary 
	Audience --&gt;|Status| Intermediary


&lt;/div&gt;

&lt;/div&gt;
&lt;p&gt;There are no language models that can continue to function in the medium and long term without human creators publishing new content for it them repackage. However, in the new AI paradigm the content is identity-laundered and served by the intermediary to compete with the original human creator, starving them of the financial and social rewards they need to continue producing content. Artists are already regretting their generous sharing of images on the Web. Human translation work is dying. Journalists are being laid off by the thousands. More will follow.&lt;/p&gt;
&lt;p&gt;Break the link to the creator, break the creator economy. It is economically unsustainable.&lt;/p&gt;
&lt;p&gt;However, as Donath and Schneier remind us &lt;a href=&#34;https://www.schneier.com/blog/archives/2024/04/the-rise-of-large.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Donath/Schneier 2024)&lt;/a&gt;, there is more at stake here: human connections. Earlier in this essay I wrote that calling the Web an &amp;ldquo;economy&amp;rdquo; does it injustice, because there is more at stake than just an exchange of goods and services. Much of what makes the Web so interesting was built with altruistic motives in mind and a simple economic model is insufficient to explain this. The theory of a social contract is much nearer the mark, because the Web is about building a global commons, whether for profit, non-profit or simply as a byproduct of wanting to connect with other human beings.&lt;/p&gt;
&lt;p&gt;And breaking the link between humans breaks the entire social contract of the Web.&lt;/p&gt;
&lt;!-- https://arstechnica.com/information-technology/2019/10/is-the-software-world-taking-too-much-from-the-open-source-community/2/ --&gt;
&lt;h1 id=&#34;from-open-source-to-free-software&#34;&gt;
  From Open Source to Free Software
  &lt;a class=&#34;heading-link&#34; href=&#34;#from-open-source-to-free-software&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;It is now clear that the corporate world has broken the social contract of the Web and is doing its best to commodify and re-sell every last part of it. Then again, perhaps this has been happening for much longer and it just took me this long to figure it out.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Have a look at this excellent plea for strong copyleft licensing: &lt;a href=&#34;https://ploum.net/2024-07-01-opensource_sustainability.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;On Open Source and the Sustainability of the Commons (Ploum 2024)&lt;/a&gt;. Ploum argues that this privatization effort has been going on for much longer than just the AI years.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;So, where do we go from here? What do we do in the face of AI data pillage and corporate withdrawal from Open Source?&lt;/p&gt;
&lt;p&gt;There is, of course, the option to stop sharing any valuable knowledge online. However, I don&amp;rsquo;t think this is right. The Web has become one of the greatest global commons ever created and this would be like burning down the Library of Alexandria because people have been selling cheap knock-off copies of the books near the entrance.&lt;/p&gt;
&lt;p&gt;Technical countermeasures are always an option, but simple ones like &lt;a href=&#34;https://en.wikipedia.org/wiki/Robots.txt&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;robots.txt&lt;/a&gt; are routinely ignored by AI scrapers. I can&amp;rsquo;t say I&amp;rsquo;m surprised with so much money on the line. Authwalls are not feasible for sites that depend on casual traffic and even big media companies have had trouble generating enough revenue with subscriptions. Some services like Cloudflare offer counter-scraper machine learning-based blocking, but this can have unintended consequences for legitimate traffic. I&amp;rsquo;ve had to suspend updates to the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt; because the Court is now blocking all automated access to its case law.&lt;/p&gt;
&lt;p&gt;If history is any guide, this is a battle that has to be fought with legal and political countermeasures. It is also the time to make  clear that the tacit social contract has been broken. A number of strategic litigants are already doing admirable work in the courts of law, but this fight needs to be taken into the court of public opinion and the political process as well.&lt;/p&gt;
&lt;p&gt;This essay is a small contribution to the ongoing public debate. I think the much greater contribution to the court of public opinion (and a legal countermeasure at the same time) would be the widespread resurrection of viral copyleft licensing.&lt;/p&gt;
&lt;p&gt;In the past 15 years or so, copyleft licenses have taken a heavy hit in terms of popularity. The proportion of GPL family licenses used in Open Source projects has dipped significantly compared to permissive licenses (e.g. BSD, MIT and Apache) &lt;a href=&#34;https://en.wikipedia.org/wiki/GNU_General_Public_License#Adoption&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Wikipedia 2024)&lt;/a&gt;. Many have argued that with publicly available software licensing questions had become irrelevant  and practicality is now the order of the day. According to Matt Asay, a developer relations manager at MongoDB:&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It&amp;rsquo;s time for the open source Rambos to stop fighting and agree that developers care more about software&amp;rsquo;s access and ease of use than the purity of its license. &lt;a href=&#34;https://www.infoworld.com/article/3703768/the-open-source-licensing-war-is-over.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(Infoworld 2023)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The opposite is true. In every instance where a company abandoned their OSI-approved Open Source licenses this has led to significant backlash from the relevant community and the forking of the project. With the death of corporate open source and the ravages of AI it seems to me that now is a good time to dust off the old Rambo spirit of Free Software and return to a strong and principled stance on software and content licensing. All the healthiest projects I know (Linux, Debian, Emacs, R, Wikipedia) were built on copyleft licensing, which is a good sign.&lt;/p&gt;
&lt;p&gt;I do not mind if people use my published work products in commercial settings (and my chosen licenses explicitly allow this) but a robust reminder is in order that they are intended as part of a global commons to advance the knowledge of humanity and not as exploitable data sludge for greedy executives.&lt;/p&gt;
&lt;p&gt;We are still in the opening stages of conflict between creators and AI developers, with claims being staked and the scales of justice being weighted with competing interests. Because of the economics of the problem (and hopefully the ethics, too, but I&amp;rsquo;m not holding my breath).&lt;/p&gt;
&lt;p&gt;I assume that one of two things will happen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Current copyright laws will be interpreted to cover model preparation, training and deployment&lt;/li&gt;
&lt;li&gt;Sui generis rules will be adopted that cover the licensing of intellectual works for model preparation, training and deployment (comparable to the development of database protection rights)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first outcome is perfectly covered by adopting current-generation copyleft licenses like GPLv3 or CC BY-SA 4.0. So this is the strategy I will adopt for now.&lt;/p&gt;
&lt;p&gt;The second outcome will require updating standard licenses to include the to-be-developed rules. I am confident that standard-setting organizations will get behind this. I have much faith that Creative Commons will get this done and much less faith in the Free Software Foundation, but we&amp;rsquo;ll cross this bridge when we get there.&lt;/p&gt;
&lt;p&gt;I have been GPL-curious for a long time, but have held off until I had time to think about the details and long-term implications. Now it is time to make a point. Instead of pragmatic and open distribution there is a need to clarify to the public and to the corporate world that a global commons needs Free Software based on robust and clear expectations that the commons will remain the commons.&lt;/p&gt;
&lt;p&gt;Let us return to copyleft licensing to ensure that the social contract of the Web is enforceable.&lt;/p&gt;
&lt;p&gt;Bring back the free software and open source Rambos.&lt;/p&gt;
&lt;h1 id=&#34;conclusion&#34;&gt;
  Conclusion
  &lt;a class=&#34;heading-link&#34; href=&#34;#conclusion&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Effective immediately, I am switching to copyleft licensing for all future software publications. This includes new software, new versions of existing software, libraries, active projects, public development versions on GitHub and anything new or current.&lt;/p&gt;
&lt;p&gt;I prefer the &lt;a href=&#34;https://www.gnu.org/licenses/gpl-3.0.en.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNU General Public License v3 (GPLv3)&lt;/a&gt;, but will decide on a case-by-case basis if another copyleft license is appropriate. I am considering the &lt;a href=&#34;https://www.gnu.org/licenses/agpl-3.0.en.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNU Affero General Public License (AGPLv3)&lt;/a&gt; for certain projects, but haven&amp;rsquo;t decided yet.&lt;/p&gt;
&lt;p&gt;I am committed to backwards-compatible licensing for all past projects. All past and inactive software publications will remain under the licenses they were originally published with. Usually this is MIT No Attribution (MIT-0).&lt;/p&gt;
&lt;p&gt;My academic writing will also move to copyleft licensing, usually CC BY-SA 4.0. This website is already licensed under CC BY-SA 4.0 and this will remain as is.&lt;/p&gt;
&lt;p&gt;I will continue to release academic datasets under the least restrictive license possible. For example, if the raw data is in the public domain, the finished dataset will be in the public domain. With official legal and political data there are different principles that are important to me, primarily advancing the rule of law and legal scholarship. This requires the unlimited availability of official legal data.&lt;/p&gt;
&lt;!-- # What happens next? --&gt;
&lt;!--  There seem to be a number of plausible outcomes at the moment: --&gt;
&lt;!-- - Courts decide that ML model training engages copyright  --&gt;
&lt;!-- - Public pressure forces legislative action to ensure that ML model training engages copyright or some novel compensation mechanism --&gt;
&lt;!-- - ML model training does not engage any kind of protection mechanism, individual creators are forced out of the internet by the competitive pressures from ML companies --&gt;
&lt;!-- - It turns out that most creators and ML companies do not compete for the same audience and an uneasy co-existence develops --&gt;
&lt;!-- The courts and legislature of different jurisdictions may head down different paths for a time, but due to the global reach fo the internet and as with existing copyright law there will probably a rough kind of convergence over time, similar to how database rights are protected in the US and EU, but some differences in the detail. --&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;User satisfaction and good engineering do contribute to sales, but they are just two among many factors that decide whether a product is successful in the marketplace. There are outliers in both directions, of course. There exist products with exceptional engineering and user experience offered at a fair price and there are  products that are an embarrassment to their developers on top of not meeting any real user needs, despite being sold for hefty sums to top management.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Some might argue that most digital markets end up as oligopolies, due to the failure of capturing the complete market. I do wonder if this is not in fact a mischaracterization of the relevant market in many cases. While Facebook and Instagram are technically both social media networks, they serve very different user demographics and in any case belong to the same parent company.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Wikipedia has ascended from &amp;ldquo;don&amp;rsquo;t trust anything on the internet, anyone can edit Wikipedia!&amp;rdquo; to &amp;ldquo;our AI product uses Wikipedia as the primary source of truth and we trust it completely&amp;rdquo;.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;You are probably not surprised that a lawyer turns to social contract theory instead of economics, but we&amp;rsquo;ll get there.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;This is my take on a famous quote by Voltaire: &amp;ldquo;It is forbidden to kill; therefore all murderers are punished unless they kill in large numbers and to the sound of trumpets.&amp;rdquo;&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Is anyone under 60 still on Facebook?&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:7&#34;&gt;
&lt;p&gt;MongoDB specially invented a new software license, the &lt;a href=&#34;https://www.mongodb.com/legal/licensing/server-side-public-license&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Server Side Public License (SSPL)&lt;/a&gt;, to secure its commercial interests. The SSPL caused much consternation and shaking of heads in the Open Source community, since using any SSPL components in a service requires publishing the source code for the entire service and all its infrastructure. These terms are so draconian that they are entirely unacceptable to anyone who relies on proprietary components and probably many other users, too. The SSPL was submitted by MongoDB for approval by the Open Source Initiative (OSI), but was withdrawn when it appeared that it would be rejected &lt;a href=&#34;https://web.archive.org/web/20220810175744/http://lists.opensource.org/pipermail/license-review_lists.opensource.org/2019-March/003989.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(OSI 2019)&lt;/a&gt;. The Board of the OSI later clearly stated that the SSPL could not be considered an Open Source license and called it a &amp;ldquo;fauxpen source license&amp;rdquo; &lt;a href=&#34;https://web.archive.org/web/20220820133332/https://opensource.org/node/1099/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;(OSI 2019)&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Slides and Materials for the UN Security Council Corpus Launch Event</title>
      <link>https://seanfobbe.com/posts/2024-05-28_unsc-launch-event-slides-materials-online/</link>
      <pubDate>Tue, 28 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-05-28_unsc-launch-event-slides-materials-online/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.11205639&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Slides and Materials for the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo; Launch Event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolution: UN Security Council (CR-UNSC)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;slides-and-materials-online&#34;&gt;
  Slides and Materials Online
  &lt;a class=&#34;heading-link&#34; href=&#34;#slides-and-materials-online&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.11205639&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;slides and materials&lt;/a&gt; for the UNSC launch event are now available on Zenodo!&lt;/p&gt;
&lt;p&gt;The presentation was delivered online on 20 May 2024 during the &lt;a href=&#34;https://seanfobbe.com/posts/2024-05-09_launch-event-corpus-of-resolutions-un-security-council/&#34; &gt;launch event for the Corpus of Resolution: UN Security Council (CR-UNSC)&lt;/a&gt;, organized by the Interest Group on International Organizations (IG-IO) of the European Society of International Law (ESIL) and chaired by Professor Christiane Ahlborn (Trinity College Dublin)&lt;/p&gt;
&lt;h1 id=&#34;abstract&#34;&gt;
  Abstract
  &lt;a class=&#34;heading-link&#34; href=&#34;#abstract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolution: UN Security Council (CR-UNSC)&lt;/a&gt; collects and presents for the first time in human and machine-readable form all resolutions, drafts, and meeting records of the UN Security Council, including detailed metadata, as published by the UN Digital Library and revised by the authors.&lt;/p&gt;
&lt;p&gt;The United Nations Security Council (UNSC) is the most influential of the principal UN organs. Composed of five permanent and ten non-permanent members, its functioning is constrained by the political context in which it operates. During the Cold War, the complex political relationships between the permanent members and their veto powers significantly affected the capacity of the UNSC to address violations of international peace and security, with only 646 resolutions passed from 1946 to 1989. Since the 1990s, the activity of the UN Security Council has increased dramatically and produced 2721 resolutions up to the end of 2023.&lt;/p&gt;
&lt;p&gt;In this presentation I provide an overview of the main dataset and its specialized variants, a bibliographic database and the UNSC citation network. I discuss the uses of the UNSC corpus for both traditional and quantitative legal research, including a breakdown of the variable groupings and OCR quality. A special emphasis is placed on the citation data. The slides include many visual representations to provide a quick understanding of the dataset.&lt;/p&gt;
&lt;h1 id=&#34;live-demo-keyword-search&#34;&gt;
  Live Demo: Keyword Search
  &lt;a class=&#34;heading-link&#34; href=&#34;#live-demo-keyword-search&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The event included a live demo of keyword searches (with context lines) via &lt;a href=&#34;https://en.wikipedia.org/wiki/Grep&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;grep&lt;/a&gt;, a well-known command line utility. Grep is included with all Linux systems and can be installed on Windows and Mac. Variants of grep with a graphical user interface (GUI) are available. Free grep GUI tools are &lt;a href=&#34;https://astrogrep.sourceforge.net/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;AstroGrep&lt;/a&gt; and &lt;a href=&#34;https://dngrep.github.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;dnGrep&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Zenodo record includes results from keyword searches suggested by the audience during the launch event. Results are given as a) simple text file with relevant lines extracted and b) HTML files with keywords colored and one context line above/below the relevant line.&lt;/p&gt;
&lt;p&gt;Also included is a Bash script to replicate these findings. Instructions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the &lt;a href=&#34;https://zenodo.org/records/11205640/files/UNSC_Demo_Keyword-Search_Grep_Script.sh?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Bash script&lt;/a&gt; from Zenodo&lt;/li&gt;
&lt;li&gt;Download the &lt;a href=&#34;https://zenodo.org/records/11212056/files/CR-UNSC_2024-05-19_ALL_TXT.zip&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;TXT files for Version 2024-05-19&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ensure that the Bash script and a folder containing the TXT files named &amp;ldquo;CR-UNSC_2024-05-19_EN_TXT_BEST&amp;rdquo; are in the same location&lt;/li&gt;
&lt;li&gt;Open a terminal in this folder and run &amp;ldquo;bash UNSC_Demo_Keyword-Search_Grep_Script.sh&amp;rdquo;&lt;/li&gt;
&lt;li&gt;All result files should now be in the same folder&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;live-demo-network-analysis&#34;&gt;
  Live Demo: Network Analysis
  &lt;a class=&#34;heading-link&#34; href=&#34;#live-demo-network-analysis&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Following the keyword search demo I also demonstrated network analysis with &lt;a href=&#34;https://gephi.github.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gephi&lt;/a&gt;. Gephi is free and open source software with a graphical user interface for interactive network analysis. The &lt;a href=&#34;https://zenodo.org/records/11212056/files/CR-UNSC_2024-05-19_CITATIONS_GRAPHML.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GraphML file of the UNSC dataset&lt;/a&gt; can easily be imported into Gephi by simply opening it.&lt;/p&gt;
&lt;p&gt;The Zenodo record also includes the Gephi project shown during the live demo, with some configuration already set.&lt;/p&gt;
&lt;p&gt;For ideas on how to explore the network data I recommend reading through the Gephi manual. Gephi is the easiest way to explore the UNSC citation network data without code.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>UN Security Council: Complete Internal Citation Network Published</title>
      <link>https://seanfobbe.com/posts/2024-05-14_complete-citation-network-un-security-council-published/</link>
      <pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-05-14_complete-citation-network-un-security-council-published/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/7319781/files/CR-UNSC_2024-05-03_CITATIONS_GRAPHML.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;UN Security Council Citation Network Data (GraphML Format)&lt;/a&gt; (Zenodo 2024)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt; (Zenodo 2024)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source Code for the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo;&lt;/a&gt; (Zenodo 2024)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;un-security-council-citation-network-data&#34;&gt;
  UN Security Council Citation Network Data
  &lt;a class=&#34;heading-link&#34; href=&#34;#un-security-council-citation-network-data&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The complete internal citation network of the UN Security Council (UNSC) up to resolution 2722 (1946&amp;ndash;2023) with 54 metadata variables is now Open Access and &lt;a href=&#34;%28https://zenodo.org/records/7319781/files/CR-UNSC_2024-05-03_CITATIONS_GRAPHML.zip?download=1%29&#34; &gt;available for download&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;It is part of the &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The citation practice of the UN Security Council  is special for a number of reasons. First, the text of every UNSC resolution undergoes intense diplomatic negotiations and every word, phrasing and citation is there for a reason. Second, citations to previous resolutions follow a clear, structured and easy-to-extract format. Third, they structure the practice of the UN Security Council into a web of context that is necessary to understand the impact and consequences of individual resolutions.&lt;/p&gt;
&lt;p&gt;My colleagues Niccolò Ridi (King’s College London) and Lorenzo Gasbarri (Scuola Superiore Sant&amp;rsquo;Anna) have published a long and very interesting paper on these questions and the added value that citation analysis can bring to the study of the UNSC:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ridi, Niccolo, &amp;amp; Gasbarri, Lorenzo. (2023). The role of previous resolutions in the
practice of the security council. Columbia Journal of Transnational Law, 61(3),
571-640.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4123116&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pre-print is available Open Access via SSRN&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;how-to-use-the-citation-data&#34;&gt;
  How to use the Citation Data
  &lt;a class=&#34;heading-link&#34; href=&#34;#how-to-use-the-citation-data&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/records/7319781/files/CR-UNSC_2024-05-03_CITATIONS_GRAPHML.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;UN Security Council Citation Network Data (GraphML Format)&lt;/a&gt; (Zenodo 2024)&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;There are many good network analysis packages for widely used data science programming languages such as R or Python. My favorites for R are &lt;a href=&#34;https://cran.r-project.org/package=igraph&#34;&gt;&amp;lcub;igraph&amp;rcub;&lt;/a&gt;
 for analysis and &lt;a href=&#34;https://cran.r-project.org/package=ggraph&#34;&gt;&amp;lcub;ggraph&amp;rcub;&lt;/a&gt;
 for visualization. You might also like &lt;a href=&#34;https://cran.r-project.org/package=tidygraph&#34;&gt;&amp;lcub;tidygraph&amp;rcub;&lt;/a&gt;
 or &lt;a href=&#34;https://cran.r-project.org/package=qgraph&#34;&gt;&amp;lcub;qgraph&amp;rcub;&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Igraph is also available for Python.&lt;/p&gt;
&lt;p&gt;No Code? No Problem! You can use the citation data without coding skills and with a graphical user interface (GUI) via &lt;a href=&#34;https://gephi.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gephi&lt;/a&gt;.  Simply create a new project, open the GraphML file and off you go!&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h1 id=&#34;visual-representation-of-the-unsc-citation-network&#34;&gt;
  Visual Representation of the UNSC Citation Network
  &lt;a class=&#34;heading-link&#34; href=&#34;#visual-representation-of-the-unsc-citation-network&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CR-UNSC_2024-05-03_Citations_Network_blue-1500x1500.png&#34;
         alt=&#34;A visual representation of the UN Security Council internal citation network up to resolution 2722. It was created with {ggraph} and a high-resolution version of the image is published in the &amp;amp;lsquo;analysis&amp;amp;rsquo; ZIP archive released with the CR-UNSC.&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;A visual representation of the UN Security Council internal citation network up to resolution 2722. It was created with {ggraph} and a high-resolution version of the image is published in the &amp;lsquo;analysis&amp;rsquo; ZIP archive released with the CR-UNSC.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h1 id=&#34;technical-information-on-citation-data&#34;&gt;
  Technical Information on Citation Data
  &lt;a class=&#34;heading-link&#34; href=&#34;#technical-information-on-citation-data&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The citations were extracted automatically with regular expressions from the English text of the resolutions. Resolutions 1 through 899, 902, 1445 and 1454 are expert-reviewed OCR text and all other resolutions from 900 to 2722 are extracted from born-digital PDF files.&lt;/p&gt;
&lt;p&gt;The citation data is published in the widely used GraphML format, distributed within a ZIP archive.&lt;/p&gt;
&lt;p&gt;UNSC resolution nodes are associated with as much metadata as makes sense from a network perspective. 54 variables from the main data set are included.&lt;/p&gt;
&lt;p&gt;Note that the GraphML file does &lt;em&gt;not&lt;/em&gt; contain the full texts of the resolutions to save space.&lt;/p&gt;
&lt;p&gt;The main dataset in tabular form is a better choice natural language processing (NLP) tasks. If you wish to combine NLP and citation analysis I suggest you use both in your workflow: the main dataset to select the approriate node set(s), then pass these on to the citation analysis component.&lt;/p&gt;
&lt;h1 id=&#34;about-the-dataset&#34;&gt;
  About the Dataset
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-the-dataset&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt; collects and presents for the first time in human and machine-readable form all resolutions, drafts, and meeting records of the UN Security Council, including detailed metadata, as published by the UN Digital Library and revised by ourselves.&lt;/p&gt;
&lt;p&gt;The current version collects resolutions 1 (1946) through 2722 (2024) in all six official UN languages (English, French, Spanish, Arabic, Chinese, Russian), with drafts and meeting records in English and a massive number of features.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;https://seanfobbe.com/posts/2024-05-06_new-dataset-corpus-of-resolutions-un-security-council/&#34; &gt;this blog post introducing the dataset&lt;/a&gt; for an overview of the dataset and its functionality.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Resolution 2722 was adopted in 2024, but I the citation network is complete up to 2023. I mention 2023 here to avoid the impression that the citation network also fully covers 2024.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;While I do strongly recommend approaching quantitative projects with an open source programming language, release of the source code and reproducible analyses. However, there are a good number of use cases where non-programmers can enhance their own research with network data and the assistance of graphical programs. Following chains of precedent is an important one in legal work.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>[20 May 2024] Launch Event for the &#39;Corpus of Resolutions: UN Security Council&#39;</title>
      <link>https://seanfobbe.com/posts/2024-05-09_launch-event-corpus-of-resolutions-un-security-council/</link>
      <pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-05-09_launch-event-corpus-of-resolutions-un-security-council/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.11205639&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Slides and Materials for the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo; Launch Event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt; (Zenodo 2024)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source Code for the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo;&lt;/a&gt; (Zenodo 2024)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;launch-event-coming-up-on-20-may&#34;&gt;
  Launch Event Coming Up on 20 May!
  &lt;a class=&#34;heading-link&#34; href=&#34;#launch-event-coming-up-on-20-may&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;We will officially launch the &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt; at an online event on Monday, 20 May 2024, organized by the European Society of International Law (ESIL) Interest Group on International Organisations (IG-IO).&lt;/p&gt;
&lt;p&gt;During the event we will give an overview of the dataset, provide background on its construction and offer practical advice on its various uses and limitations, both for traditional and quantitative scholars/practitioners.&lt;/p&gt;
&lt;p&gt;You will also have the opportunity to ask the authors any and all questions related to the dataset!&lt;/p&gt;
&lt;p&gt;The event will be chaired by Professor Christiane Ahlborn (Trinity College Dublin).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Date:&lt;/strong&gt; 20 May 2024&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time:&lt;/strong&gt; 16.30 to 18.00 (CET)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conference link:&lt;/strong&gt; &lt;a href=&#34;https://santannapisa.webex.com/santannapisa/j.php?MTID=mba3098eaebd4ba2e60f4eabc5069db50&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://santannapisa.webex.com/santannapisa/j.php?MTID=mba3098eaebd4ba2e60f4eabc5069db50&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questions about the event? &lt;a href=&#34;https://seanfobbe.com/contact/&#34; &gt;Drop me a message!&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;The slides and materials are now &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.11205639&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;available on Zenodo&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>[New Dataset] The Corpus of Resolutions: UN Security Council</title>
      <link>https://seanfobbe.com/posts/2024-05-06_new-dataset-corpus-of-resolutions-un-security-council/</link>
      <pubDate>Mon, 06 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-05-06_new-dataset-corpus-of-resolutions-un-security-council/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt; (Zenodo 2024)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source Code for the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo;&lt;/a&gt; (Zenodo 2024)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.11205639&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Slides and Materials for the &amp;lsquo;Corpus of Resolutions: UN Security Council&amp;rsquo; Launch Event&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;A new dataset is online! And what a dataset it is!&lt;/p&gt;
&lt;p&gt;This is joint work with my colleagues &lt;a href=&#34;https://www.santannapisa.it/en/lorenzo-gasbarri&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Lorenzo Gasbarri&lt;/a&gt; (Scuola Superiore Sant&amp;rsquo;Anna) and &lt;a href=&#34;https://www.kcl.ac.uk/people/niccolo-ridi&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Niccolò Ridi&lt;/a&gt; (King&amp;rsquo;s College London) and together we proudly present:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;The Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This is by an order of magnitude the most ambitious and complex legal data science project I&amp;rsquo;ve ever built and I am very excited for it to finally see the light of day!&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Resolutions: UN Security Council (CR-UNSC)&lt;/a&gt; collects and presents for the first time in human and machine-readable form all resolutions, drafts, and meeting records of the UN Security Council, including detailed metadata, as published by the &lt;a href=&#34;https://digitallibrary.un.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;UN Digital Library&lt;/a&gt; and revised by ourselves.&lt;/p&gt;
&lt;p&gt;The current version collects resolutions 1 (1946) through 2722 (2024) in all six official UN languages (English, French, Spanish, Arabic, Chinese, Russian), with drafts and meeting records in English and a massive number of features. See the list of features below for specifics!&lt;/p&gt;
&lt;p&gt;We have also included an &lt;a href=&#34;https://zenodo.org/records/7319781/files/CR-UNSC_2024-05-03_Codebook.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;extensive Codebook&lt;/a&gt; that includes a detailed explanation of the dataset and instructions on how to make use of it. Please have a look before using the dataset.&lt;/p&gt;
&lt;p&gt;Oh, and do scroll down this post until you see the workflow diagram. It&amp;rsquo;s worth it, I promise.&lt;/p&gt;
&lt;h1 id=&#34;features&#34;&gt;
  Features
  &lt;a class=&#34;heading-link&#34; href=&#34;#features&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;82 Variables&lt;/li&gt;
&lt;li&gt;Resolution texts in all six official UN languages (English, French, Spanish, Arabic, Chinese, Russian)&lt;/li&gt;
&lt;li&gt;Draft texts of resolutions in English&lt;/li&gt;
&lt;li&gt;Meeting record texts in English&lt;/li&gt;
&lt;li&gt;URLs to draft texts in all other languages (French, Spanish, Arabic, Chinese, Russian)&lt;/li&gt;
&lt;li&gt;URLs to meeting record texts in all other languages (French, Spanish, Arabic, Chinese, Russian)&lt;/li&gt;
&lt;li&gt;Citation data as GraphML (UNSC-to-UNSC resolutions and UNSC-to-UNGA resolutions)&lt;/li&gt;
&lt;li&gt;Bibliographic database in BibTeX/OSCOLA format for e.g. Zotero, Endnote and Jabref&lt;/li&gt;
&lt;li&gt;Extensive Codebook to explain the uses of the dataset&lt;/li&gt;
&lt;li&gt;Compilation Report and Quality Assurance Report explain construction and validation of the data set&lt;/li&gt;
&lt;li&gt;Publication quality diagrams for teaching, research and all other purposes (PDF for printing, PNG for web)&lt;/li&gt;
&lt;li&gt;Open and platform independent file formats (CSV, PDF, TXT, GraphML)&lt;/li&gt;
&lt;li&gt;Software version controlled with Docker&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319780&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Publication of full data set (Open Data)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Data published under Public Domain waiver (CC Zero 1.0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Publication of full source code (Open Source)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Free Software published under the GNU General Public License Version 3 (GNU GPL v3)&lt;/li&gt;
&lt;li&gt;Secure cryptographic signatures for all files in version of record (SHA2-256 and SHA3-512)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;workflow-diagram&#34;&gt;
  Workflow Diagram
  &lt;a class=&#34;heading-link&#34; href=&#34;#workflow-diagram&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CR-UNSC_2024-05-03_Workflow_blue.png&#34;/&gt;
&lt;/figure&gt;

&lt;h1 id=&#34;about-the-un-security-council&#34;&gt;
  About the UN Security Council
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-the-un-security-council&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The &lt;a href=&#34;https://en.wikipedia.org/wiki/United_Nations_Security_Council&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;United Nations Security Council (UNSC)&lt;/a&gt; is the most influential of the principal UN organs. Composed of five permanent and ten non-permanent members, its functioning is constrained by the political context in which it operates. During the Cold War, the complex political relationships between the permanent members and their veto powers significantly affected the capacity of the UNSC to address violations of international peace and security, with only 646 resolutions passed from 1946 to 1989. Since the 1990s, the activity of the UN Security Council has increased dramatically and produced 2721 resolutions up to the end of 2023. The length, complexity and thematic breadth of the resolutions has also increased, prompting calls to redefine it as a quasi-legislative body.&lt;/p&gt;
&lt;p&gt;Under Articles 24 and 25 of the UN Charter, member states have conferred upon the UNSC the &amp;ldquo;primary responsibility for the maintenance of international peace and security&amp;rdquo; and have agreed &amp;ldquo;to accept and carry out&amp;rdquo; its decisions. The discharge of this function is carried out through the powers bestowed upon it under Chapter VI of the UN Charter, &amp;ldquo;Pacific Settlement of Disputes&amp;rdquo;, Chapter VII, &amp;ldquo;Action with Respect to Threats to the Peace, Breaches of the Peace, and Acts of Aggression&amp;rdquo;, Chapter VIII, &amp;ldquo;Regional Arrangements&amp;rdquo;, and Chapter XII, &amp;ldquo;International Trusteeship System&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Under the peace and security mandate, its areas of activity cover disarmament, pacific settlement of disputes, enforcement, and, until 1994, strategic areas in a trusteeship agreement. Its functions also pertain to the correct working of the United Nations, covering issues of membership, the appointment of the Secretary General, the elections of judges of the International Court of Justice (ICJ), the calling of special and emergency sessions of the General Assembly, the amendment of the Charter and of the ICJ Statute.&lt;/p&gt;
&lt;h1 id=&#34;updates&#34;&gt;
  Updates
  &lt;a class=&#34;heading-link&#34; href=&#34;#updates&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The CR-UNSC will be updated at least once per year.&lt;/p&gt;
&lt;p&gt;In case of serious errors an update will be provided at the earliest opportunity and a highlighted advisory issued on the Zenodo page of the current version. Minor errors will be documented in the GitHub issue tracker and fixed with the next scheduled release.&lt;/p&gt;
&lt;p&gt;The CR-UNSC is versioned according to the day of the last run of the data pipeline, in the ISO format YYYY-MM-DD. Its initial release version is 2024-05-03.&lt;/p&gt;
&lt;p&gt;Notifications regarding new and updated data sets will be published on my academic website at &lt;a href=&#34;https://seanfobbe.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.seanfobbe.com&lt;/a&gt; or on the Fediverse at &lt;a href=&#34;https://fediscience.org/@seanfobbe&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;@seanfobbe@fediscience.org&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;compilation-report-and-quality-assurance-report&#34;&gt;
  Compilation Report and Quality Assurance Report
  &lt;a class=&#34;heading-link&#34; href=&#34;#compilation-report-and-quality-assurance-report&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;With every compilation of the full data set, an extensive Compilation Report and detailed Quality Assurance Report  are created and published in PDF format.&lt;/p&gt;
&lt;p&gt;The Compilation Report includes the source code for the pipeline architecture, comments and explanations of design decisions, relevant computational results, exact timestamps and a table of contents with clickable internal hyperlinks to each section.&lt;/p&gt;
&lt;p&gt;The Quality Assurance Report contains a count of all hard tests and expectations, additional visualizations and documented test results for all soft tests that require further interpretation&lt;/p&gt;
&lt;p&gt;The Compilation Report, Quality Assurance Report and Source Code are published under the following DOI: &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7319783&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://zenodo.org/doi/10.5281/zenodo.7319783&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;attribution-and-copyright&#34;&gt;
  Attribution and Copyright
  &lt;a class=&#34;heading-link&#34; href=&#34;#attribution-and-copyright&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;This data is derived from the United Nations Digital Library at &lt;a href=&#34;https://digitallibrary.un.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://digitallibrary.un.org&lt;/a&gt;. Records were accessed and downloaded on 13 and 26 March 2024, with additional work on revisions and corrections up to and including 3 May 2024.&lt;/p&gt;
&lt;p&gt;Pursuant to &lt;a href=&#34;https://en.wikisource.org/wiki/Administrative_Instruction_ST/AI/189/Add.9/Rev.2&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;UN Administrative Instruction ST/AI/189/Add.9/Rev.2&lt;/a&gt; of 17 September 1987 all official records and United Nations Documents (including resolutions, compilations of resolutions, drafts and meeting records) are in the public domain. We wish to honor the letter and spirit of this UN policy. To ensure the widest possible distribution of official UN documents and to promote the international rule of law we waive any copyright that might have accrued by creating the dataset under a &lt;a href=&#34;https://creativecommons.org/public-domain/cc0/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Creative Commons CC0 1.0 Universal (CC0 1.0) Public Domain Dedication&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;contact&#34;&gt;
  Contact
  &lt;a class=&#34;heading-link&#34; href=&#34;#contact&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Did you discover any errors? Do you have suggestions on how to improve the data set? You can either post these to the &lt;a href=&#34;https://github.com/SeanFobbe/cr-unsc/issues&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Issue Tracker on GitHub&lt;/a&gt; or contact me via &lt;a href=&#34;https://seanfobbe.com/contact/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/contact/&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Tutorial] Distributions and Summary Statistics</title>
      <link>https://seanfobbe.com/posts/2024-02-26_tutorial-distributions-summary-statistics/</link>
      <pubDate>Mon, 26 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-02-26_tutorial-distributions-summary-statistics/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Tutorial]&lt;/strong&gt; &lt;a href=&#34;https://seanfobbe.com/tutorials/distributions/&#34; &gt;Distributions and Summary Statistics&lt;/a&gt;  (Fobbe 2024)&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>RSS Feeds on this Website and Elsewhere</title>
      <link>https://seanfobbe.com/posts/2024-02-15_rss-feeds-on-my-website/</link>
      <pubDate>Thu, 15 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-02-15_rss-feeds-on-my-website/</guid>
      <description>&lt;h1 id=&#34;about-rss-feeds&#34;&gt;
  About RSS Feeds
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-rss-feeds&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Do you read my blog semi-regularly and keep refreshing the article list to check if I published something new? Let me introduce you to RSS feeds:&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;RSS (RDF Site Summary or Really Simple Syndication) is a web feed that allows users and applications to access updates to websites in a standardized, computer-readable format. Subscribing to RSS feeds can allow a user to keep track of many different websites in a single news aggregator, which constantly monitor sites for new content, removing the need for the user to manually check them. News aggregators (or &amp;ldquo;RSS readers&amp;rdquo;) can be built into a browser, installed on a desktop computer, or installed on a mobile device.&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&#34;https://en.wikipedia.org/wiki/RSS&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://en.wikipedia.org/wiki/RSS&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Why should you consider using RSS?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aggregate as many information sources and as many topics as you like&lt;/li&gt;
&lt;li&gt;Get a better cross-section of the news than what strangers&amp;rsquo; likes and machine learning can deliver&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t lose your feed when a platform dies (Exhibit A: Twitter)&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Avoid the outrage machine of modern social media&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Avoid having your feed gamed by bots&lt;/li&gt;
&lt;li&gt;Avoid much of the vapid, self-congratulatory and artificial posts that are popular in machine learning-directed social media feeds&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the current decline of traditional social media platforms, RSS feeds may be experiencing something of a Renaissance. Maybe it&amp;rsquo;s just me, but people once more seem willing to take the time to curate their own news feeds instead of relying on Twitter et al. to serve them up the news of the day.&lt;/p&gt;
&lt;p&gt;It takes some time to curate your own collection of RSS feeds, but it will probably remain relatively stable and useful for several years (excluding a change in your interests and the occasional blogger quitting).&lt;/p&gt;
&lt;h1 id=&#34;my-rss-feeds&#34;&gt;
  My RSS Feeds
  &lt;a class=&#34;heading-link&#34; href=&#34;#my-rss-feeds&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;If you took a close look at the icons on the &lt;a href=&#34;https://seanfobbe.com/&#34; &gt;front page&lt;/a&gt;, you may have noticed that the rightmost icon is the &lt;a href=&#34;https://upload.wikimedia.org/wikipedia/en/4/43/Feed-icon.svg&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;RSS feed icon&lt;/a&gt;. It contains a link to the RSS feed for all the posts of this blog.&lt;/p&gt;
&lt;p&gt;And not just titles or short descriptions! Unlike many commercial offerings I publish the full text of each post via the RSS feed.&lt;/p&gt;
&lt;p&gt;Unfortunately I can&amp;rsquo;t promise that the occasional diagrams, math and code in my posts will render well in your RSS reader, but neither do they in mine (Newsboat is plain-text only). For those posts there is usually an option to open a regular browser and visit the website.&lt;/p&gt;
&lt;p&gt;There are two RSS feeds, one for each language version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;English RSS Feed: &lt;a href=&#34;https://seanfobbe.com/posts/index.xml&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/posts/index.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;German RSS Feed: &lt;a href=&#34;https://seanfobbe.com/de/posts/index.xml&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/de/posts/index.xml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can simply add these to the RSS reader of your choice. For example, the e-mail client &lt;a href=&#34;https://www.thunderbird.net/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Thunderbird&lt;/a&gt; supports RSS natively. There are many, many more free RSS readers out there on the web, just spend a few minutes searching for them.&lt;/p&gt;
&lt;p&gt;Personally, I use the command line RSS reader &lt;a href=&#34;https://newsboat.org/index.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Newsboat&lt;/a&gt;. I like its no-nonsense approach to news very much, but I&amp;rsquo;ll freely admit it&amp;rsquo;s probably not mainstream material.&lt;/p&gt;
&lt;p&gt;By the way, this is a &lt;a href=&#34;https://seanfobbe.com/posts/2023-10-19_zero-tracking-website/&#34; &gt;zero tracking website&lt;/a&gt;. Neither the blog nor the RSS feed track whether or how you access any of the content on this website. The only info I see is aggregate monthly traffic in MB and HTTP hits, which tells me nothing. As it should.&lt;/p&gt;
&lt;h1 id=&#34;finding-more-rss-feeds-to-follow&#34;&gt;
  Finding more RSS Feeds to Follow
  &lt;a class=&#34;heading-link&#34; href=&#34;#finding-more-rss-feeds-to-follow&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;So, you like RSS but aren&amp;rsquo;t keen on setting up new software just for one blog? Fair enough. There are millions of other feeds on the web. But how do you find them?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;News websites (e.g. &lt;a href=&#34;https://www.bbc.co.uk/news/10628494&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;BBC&lt;/a&gt; or &lt;a href=&#34;https://www.theguardian.com/help/feeds&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;The Guardian&lt;/a&gt;) almost always offer an RSS feed with their content, usually a headline, short description and link to the main article. Some news outlets also offer full-text RSS feeds for subscribers.&lt;/li&gt;
&lt;li&gt;Any website created with WordPress has an RSS feed built-in. You can access it by adding &lt;code&gt;/feed&lt;/code&gt; to the end of the URL. For examples and details see the &lt;a href=&#34;https://wordpress.com/support/feeds/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;WordPress RSS Feed help section&lt;/a&gt;. WordPress is supposed to power around &lt;a href=&#34;https://w3techs.com/technologies/details/cm-wordpress&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;40% of the web&lt;/a&gt;, but regardless of the numbers it&amp;rsquo;s a lot of websites.&lt;/li&gt;
&lt;li&gt;Static website builders like Hugo also create RSS feeds. In this case you have to add &lt;code&gt;/index.xml&lt;/code&gt; to the blog URL, for example: &lt;a href=&#34;https://seanfobbe.com/posts/index.xml&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/posts/index.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/SeanFobbe/dotfiles-config/blob/main/.newsboat/urls&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;My own blog roll&lt;/a&gt; is available via GitHub. It contains a list of URLs, tags and comments that are Newsboat-compatible, but you can also just copy &amp;amp; paste them into your own feed reader.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Not be confused with the &lt;a href=&#34;rss.org.uk/&#34; &gt;Royal Statistical Society&lt;/a&gt;, who also go by the acronym &amp;lsquo;RSS&amp;rsquo;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;To be entirely fair, you can also lose your Mastodon account if your  instance unexpectedly goes down, but you can prevent this by making regular backups. I doubt that most users are comfortable with doing their backups themselves, but at least the functionality is not terribly difficult to operate once you have located it.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Traditional media does have its own outrage mechanics, but you can keep this contained in individual feeds and stack your overall feed with fun science blogs, knitting tips or whatever you are currently into.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>[New Tutorial] Keyword in Context Analysis (KWIC) and Lexical Dispersion Plots</title>
      <link>https://seanfobbe.com/posts/2024-02-07_new-tutorial-keyword-in-context-kwic-lexical-dispersion-plots/</link>
      <pubDate>Wed, 07 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-02-07_new-tutorial-keyword-in-context-kwic-lexical-dispersion-plots/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[New Tutorial]&lt;/strong&gt; &lt;a href=&#34;https://seanfobbe.com/tutorials/kwic-lexical-dispersion/&#34; &gt;Keyword in Context Analysis (KWIC) and Lexical Dispersion Plots&lt;/a&gt;  (Fobbe 2024)&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>[Essay] Visualizing Permutation Matrices as Graphs</title>
      <link>https://seanfobbe.com/posts/2024-02-04_visualizing-permutation-matrices-as-graphs/</link>
      <pubDate>Sun, 04 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-02-04_visualizing-permutation-matrices-as-graphs/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Switching the rows of a matrix by multiplying the matrix with a compatible permutation matrix is an elementary operation in linear algebra. This computational essay shows that interpreting a permutation matrix as a transposed graph and plotting it provides a visual understanding of what the permutation matrix will do.&lt;/p&gt;
&lt;p&gt;Visualization may aid in understanding the purpose of permutation matrices, show an interesting link between linear algebra and graph theory, as well as provide an introduction to working with matrices in R.&lt;/p&gt;
&lt;p&gt;I assume this post will be primarily of interest to beginners in linear algebra or graph theory, but I originally wrote it to explore permutation matrices for myself.&lt;/p&gt;
&lt;h1 id=&#34;permutation-matrices&#34;&gt;
  Permutation Matrices
  &lt;a class=&#34;heading-link&#34; href=&#34;#permutation-matrices&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;One of the elementary operations in &lt;a href=&#34;https://en.wikipedia.org/wiki/Linear_algebra&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;linear algebra&lt;/a&gt; is the &lt;a href=&#34;https://en.wikipedia.org/wiki/Matrix_%28mathematics%29#Row_operations&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;switching of rows&lt;/a&gt; in a matrix. This is particularly useful when solving systems of linear equations through &lt;a href=&#34;https://en.wikipedia.org/wiki/Gaussian_elimination&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gaussian Elimination&lt;/a&gt; based on the classic $ LU $ factorization.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Let us assume we wish to solve the following system of linear equations:&lt;/p&gt;
&lt;p&gt;$$
\begin{align}
2y + 3z &amp;amp;= 2 \\
3x + 5y +  6z &amp;amp;= 1\\
9z &amp;amp;= 3 \\
\end{align}
$$&lt;/p&gt;
&lt;p&gt;We can then construct a square matrix $ A_1 $  to represent the coefficients of the left-hand side of this system of equations:&lt;/p&gt;
&lt;p&gt;$$
A_1 =
\begin{bmatrix}
0 &amp;amp; 2 &amp;amp; 3 \\
3 &amp;amp; 5 &amp;amp; 6 \\
0 &amp;amp; 0 &amp;amp; 9 \\
\end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;In the course of an $ LU $ factorization we need to find an &lt;a href=&#34;https://en.wikipedia.org/wiki/Triangular_matrix&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;upper-triangular matrix&lt;/a&gt; $ U_1 $ with non-zero pivots (the numbers on the diagonal) and all zeros below the diagonal.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;  Therefore, in an upper-triangular matrix $ U_1 $ the value in the diagonal at position $ (1,1) $ cannot be zero as it is at the moment.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Matrix Index Notation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The notation for the position of a value in a matrix is (row, column). The index $ (2,1) $ means the value in row 2, column 1.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To achieve this we will want to switch the first and second rows to give the first row a non-zero pivot and save us the bother of performing further row operations on the second row. We can accomplish the switching of the first two rows with the following permutation matrix $ P_1 $:&lt;/p&gt;
&lt;p&gt;$$
P_1 =
\begin{bmatrix}
0 &amp;amp; 1 &amp;amp; 0 \\
1 &amp;amp; 0 &amp;amp; 0 \\
0 &amp;amp; 0 &amp;amp; 1 \\
\end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;Our permutation matrix $ P_1 $ does the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A value $ 1 $  in position $ (2,1) $ when multiplied with another matrix $ A_1 $ moves row 1 of $ A_1 $ to row 2.&lt;/li&gt;
&lt;li&gt;Correspondingly, a value $ 1 $  in position $ (1,2) $ when multiplied with another matrix $ A_1 $ moves row 2 of $ A_1 $ to row 1.&lt;/li&gt;
&lt;li&gt;The value $ 1 $ in position $ (3,3) $ means that row 3 stays where it is&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Permutation Matrices&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The values in a  &lt;strong&gt;permutation matrix&lt;/strong&gt; are all $ 0 $, except for a single $ 1 $ per row. The placement of the $ 1 $ values determines the type of permutation. Permutation matrices are derived from an identity matrix with the rows switched around, which is also what the permutation matrix does when pre-multiplied with another matrix: switching rows.&lt;/p&gt;
&lt;p&gt;In terms of a pre-multiplied permutation matrix the value at a particular index position means (&lt;em&gt;destination&lt;/em&gt;, &lt;em&gt;source&lt;/em&gt;) of a row operation.&lt;/p&gt;
&lt;p&gt;Post-multiplying a matrix with a permutation matrix changes its columns &amp;mdash; matrix multiplication is not commutative!&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In a nutshell: our matrix $ P_1 $ switches rows 1 and 2 with each other and row 3 remains where it is. When we multiply matrix $ P_1 $ with matrix $ A_1 $  we obtain:&lt;/p&gt;
&lt;p&gt;$$
P_1A_1 =
\begin{bmatrix}
0 &amp;amp; 1 &amp;amp; 0 \\
1 &amp;amp; 0 &amp;amp; 0 \\
0 &amp;amp; 0 &amp;amp; 1 \\
\end{bmatrix}
\begin{bmatrix}
0 &amp;amp; 2 &amp;amp; 3 \\
3 &amp;amp; 5 &amp;amp; 6 \\
0 &amp;amp; 0 &amp;amp; 9 \\
\end{bmatrix}
=
\begin{bmatrix}
3 &amp;amp; 5 &amp;amp; 6 \\
0 &amp;amp; 2 &amp;amp; 3 \\
0 &amp;amp; 0 &amp;amp; 9 \\
\end{bmatrix}
= U_1
$$&lt;/p&gt;
&lt;div class=&#34;notice warning&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-triangle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Warning
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Matrix multiplication is not commutative. $ P_1A_1 $ is not the same as $ A_1P_1 $ !&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In terms of the original system of linear equations we would now be solving this form, which presents a more obvious path to a solution:&lt;/p&gt;
&lt;p&gt;$$
\begin{align}
3x + 5y +  6z &amp;amp;= 1\\
2y + 3z &amp;amp;= 2 \\
9z &amp;amp;= 3 \\
\end{align}
$$&lt;/p&gt;
&lt;p&gt;With the back substitution algorithm we first solve the last row and obtain $ z = \frac{1}{3} $. We insert $ z $ into the second row and find that $ y = \frac{1}{2} $. Inserting $ y $ and $ z $ into the first row we conclude with $ x = -\frac{7}{6} $.&lt;/p&gt;
&lt;p&gt;Note that this is simple example to explain a particular technique and as humans we could have solved the original system of linear equations directly without switching any rows. In cases that include other types of row operations this would not have been possible.&lt;/p&gt;
&lt;h1 id=&#34;load-igraph&#34;&gt;
  Load Igraph
  &lt;a class=&#34;heading-link&#34; href=&#34;#load-igraph&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Now to visualize the permutation matrix. For analyzing and visualizing graphs we will rely on &lt;a href=&#34;https://cran.r-project.org/package=igraph&#34;&gt;&amp;lcub;igraph&amp;rcub;&lt;/a&gt;
, one the most comprehensive network analysis packages available in R. While I usually use &lt;a href=&#34;https://cran.r-project.org/package=ggraph&#34;&gt;&amp;lcub;ggraph&amp;rcub;&lt;/a&gt;
 to visualize graphs, in this simple example &lt;a href=&#34;https://cran.r-project.org/package=igraph&#34;&gt;&amp;lcub;igraph&amp;rcub;&lt;/a&gt;
 will do just fine.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(igraph)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;## 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;## Attaching package: &amp;#39;igraph&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;## The following objects are masked from &amp;#39;package:stats&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;## 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;##     decompose, spectrum
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;## The following object is masked from &amp;#39;package:base&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;## 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;##     union
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;input-permutation-matrix--p_1-&#34;&gt;
  Input Permutation Matrix $ P_1 $
  &lt;a class=&#34;heading-link&#34; href=&#34;#input-permutation-matrix--p_1-&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;First we input the permutation matrix into R. By arranging the code a little we can code the matrix almost as we see it.&lt;/p&gt;
&lt;p&gt;Nevertheless, it is a good idea to print the stored matrix to make sure the input code is correct. Hard-coding matrices can easily go wrong when columns and rows are switched accidentally. Or when we set &lt;code&gt;nrow&lt;/code&gt; or &lt;code&gt;byrow&lt;/code&gt; incorrectly.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;P1  &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;matrix&lt;/span&gt;(&lt;span style=&#34;color:#57c7ff&#34;&gt;c&lt;/span&gt;(&lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;              nrow &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;3&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;              byrow &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;print&lt;/span&gt;(P1)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;##      [,1] [,2] [,3]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;## [1,]    0    1    0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;## [2,]    1    0    0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;## [3,]    0    0    1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;visualize-small-permutation-matrix--p_1-&#34;&gt;
  Visualize Small Permutation Matrix $ P_1 $
  &lt;a class=&#34;heading-link&#34; href=&#34;#visualize-small-permutation-matrix--p_1-&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Now that we have the matrix loaded into R, we create a graph from it. This trick works because a graph can be expressed as a square matrix, so a square matrix can again be interpreted as a graph. The technical term in graph theory is &lt;a href=&#34;https://en.wikipedia.org/wiki/Adjacency_matrix&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;adjacency matrix&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here we treat the permutation matrix as a &lt;a href=&#34;https://en.wikipedia.org/wiki/Directed_graph&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;directed graph&lt;/a&gt; (a &amp;lsquo;digraph&amp;rsquo;) and transform it first into a graph object, then calculate the transpose, then plot it.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Note that most of the plotting code below is just to align the optics of the plot with the optics of my website,  a simple &lt;code&gt;plot(g1t)&lt;/code&gt; call would do just fine.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;set.seed&lt;/span&gt;(&lt;span style=&#34;color:#ff9f43&#34;&gt;999&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;g1 &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;graph_from_adjacency_matrix&lt;/span&gt;(P1, mode &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;directed&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;g1t &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;t&lt;/span&gt;(g1) &lt;span style=&#34;color:#78787e&#34;&gt;# Transpose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;par&lt;/span&gt;(bg &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;#212121&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;plot&lt;/span&gt;(g1t,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;     vertex.size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;40&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;     vertex.color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;img src=&#34;https://seanfobbe.com/posts/2024-02-04_visualizing-permutation-matrices-as-graphs_files/figure-html/permutation-matrix-graph-small-1.png&#34; width=&#34;672&#34; /&gt;
&lt;p&gt;As we expected, the plot shows that rows 1 and 2 are to be switched, while row 3 is left unchanged.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Graph Transpose&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The transpose $ G^T $ of a directed graph $ G $ is just the directed graph with all its edge directions reversed.&lt;/p&gt;
&lt;p&gt;Why do we use the transpose $ G^T $ instead of plotting $ G $ directly? This is because &lt;strong&gt;igraph&lt;/strong&gt; adopts the graph theoretic and social science convention of using the row index to describe the source node and the column index for the destination node. Pre-multiplied matrix permutation uses the column index of a permutation matrix  as the source row in the target matrix and row index as the destination row in the target matrix. That is why we need to switch the notation with transposition.&lt;/p&gt;
&lt;p&gt;In this small example it does not make a difference, since we are just switching two rows with each other. In the more complicated rotating case below it does make a difference.&lt;/p&gt;
&lt;p&gt;We could also have transposed the matrix first before plotting it, but this is equivalent to transposing the graph and a graph transpose can be interpreted visually (reversing edges), which is after all what this essay is about.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;large-permutation-matrix--p_2-&#34;&gt;
  Large Permutation Matrix $ P_2 $
  &lt;a class=&#34;heading-link&#34; href=&#34;#large-permutation-matrix--p_2-&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The previous  matrix $ P_1 $  was fairly small ( $ n = 3 $ ), but it is interesting to try the exercise with larger matrices, as the advantage of visualization increases with size. The matrices $ P_2 $ and $ A_2 $  are now of size $ n = 5 $ and look a lot more intimidating:&lt;/p&gt;
&lt;p&gt;$$
P_2 =
\begin{bmatrix}
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 \\
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \\
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 \\
1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \\
\end{bmatrix}
\quad
A_2 =
\begin{bmatrix}
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 25\\
0 &amp;amp; 0 &amp;amp; 13 &amp;amp; 14 &amp;amp; 15\\
0 &amp;amp; 7 &amp;amp; 8 &amp;amp; 9 &amp;amp; 10\\
1 &amp;amp; 2 &amp;amp; 3 &amp;amp; 4 &amp;amp; 5\\
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 19 &amp;amp; 20\\
\end{bmatrix}
$$&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Matrix Size&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The concept of a &amp;rsquo;large&amp;rsquo; matrix is relative. Calling a square matrix of size $ n = 5 $ &amp;rsquo;large&amp;rsquo; would be silly in the context of Large Language Models (LLM), but is a fair description when performing calculations by hand or hard-coding the matrix by hand, like yours truly had to do when writing this essay. Coincidentally, $ n = 5 $ is also the maximum matrix size I could nicely fit onto a line to show multiplication of the full matrices without sidescrolling.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;input-large-permutation-matrix--p_2--and-matrix--a_2-&#34;&gt;
  Input Large Permutation Matrix $ P_2 $ and Matrix $ A_2 $
  &lt;a class=&#34;heading-link&#34; href=&#34;#input-large-permutation-matrix--p_2--and-matrix--a_2-&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;We input the two matrices into R and print them to verify that they have been coded correctly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;P2  &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;matrix&lt;/span&gt;(&lt;span style=&#34;color:#57c7ff&#34;&gt;c&lt;/span&gt;(&lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;              nrow &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;5&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;              byrow &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;9&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;print&lt;/span&gt;(P2)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;##      [,1] [,2] [,3] [,4] [,5]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;## [1,]    0    0    0    1    0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;## [2,]    0    0    1    0    0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;## [3,]    0    1    0    0    0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;## [4,]    0    0    0    0    1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;## [5,]    1    0    0    0    0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;A2 &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;matrix&lt;/span&gt;(&lt;span style=&#34;color:#57c7ff&#34;&gt;c&lt;/span&gt;(&lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;25&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;               &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;13&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;14&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;15&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;               &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;9&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;10&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;               &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;5&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;               &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;19&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;20&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;             nrow &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;5&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;             byrow &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;9&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;print&lt;/span&gt;(A2)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;##      [,1] [,2] [,3] [,4] [,5]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;## [1,]    0    0    0    0   25
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;## [2,]    0    0   13   14   15
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;## [3,]    0    7    8    9   10
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;## [4,]    1    2    3    4    5
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;## [5,]    0    0    0   19   20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;visualizing-the-large-permutation-matrix--p_2-&#34;&gt;
  Visualizing the Large Permutation Matrix $ P_2 $
  &lt;a class=&#34;heading-link&#34; href=&#34;#visualizing-the-large-permutation-matrix--p_2-&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;We proceed as we did with the smaller matrix, by creating a graph from an adjacency matrix, then transposing and plotting it. We see that the permutation matrix:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rotates rows 1, 4 and 5&lt;/li&gt;
&lt;li&gt;Switches rows 2 and 3 with each other&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;g2 &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;graph_from_adjacency_matrix&lt;/span&gt;(P2, mode &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;directed&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;g2t &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;t&lt;/span&gt;(g2) &lt;span style=&#34;color:#78787e&#34;&gt;# Transpose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;par&lt;/span&gt;(bg &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;#212121&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;plot&lt;/span&gt;(g2t,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;     vertex.size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;40&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&lt;/span&gt;&lt;span&gt;     vertex.color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;img src=&#34;https://seanfobbe.com/posts/2024-02-04_visualizing-permutation-matrices-as-graphs_files/figure-html/permutation-matrix-graph-large1-1.png&#34; width=&#34;672&#34; /&gt;
&lt;h1 id=&#34;matrix-multiplication&#34;&gt;
  Matrix Multiplication
  &lt;a class=&#34;heading-link&#34; href=&#34;#matrix-multiplication&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;To round off this post, let us multiply the matrices $ P_2 $ and $ A_2 $ to make sure that the permutation matrix does exactly what we expect it to do, namely the following:&lt;/p&gt;
&lt;p&gt;$$
P_2A_2 =
\begin{bmatrix}
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 \\
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \\
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 \\
1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \\
\end{bmatrix}
\begin{bmatrix}
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 25\\
0 &amp;amp; 0 &amp;amp; 13 &amp;amp; 14 &amp;amp; 15\\
0 &amp;amp; 7 &amp;amp; 8 &amp;amp; 9 &amp;amp; 10\\
1 &amp;amp; 2 &amp;amp; 3 &amp;amp; 4 &amp;amp; 5\\
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 19 &amp;amp; 20\\
\end{bmatrix}
=
\begin{bmatrix}
1 &amp;amp; 2 &amp;amp; 3 &amp;amp; 4 &amp;amp; 5\\
0 &amp;amp; 7 &amp;amp; 8 &amp;amp; 9 &amp;amp; 10\\
0 &amp;amp; 0 &amp;amp; 13 &amp;amp; 14 &amp;amp; 15\\
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 19 &amp;amp; 20\\
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 25\\
\end{bmatrix}
= U_2
$$&lt;/p&gt;
&lt;p&gt;We multiply $ P_2 $ with $ A_2 $ in R to obtain:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;U2 &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; P2 &lt;span style=&#34;color:#ff6ac1&#34;&gt;%*%&lt;/span&gt; A2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;print&lt;/span&gt;(U2)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;##      [,1] [,2] [,3] [,4] [,5]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;## [1,]    1    2    3    4    5
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;## [2,]    0    7    8    9   10
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;## [3,]    0    0   13   14   15
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;## [4,]    0    0    0   19   20
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;## [5,]    0    0    0    0   25
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This result matches what we derived from the visualization of the permutation matrix. It worked!&lt;/p&gt;
&lt;h1 id=&#34;conclusion&#34;&gt;
  Conclusion
  &lt;a class=&#34;heading-link&#34; href=&#34;#conclusion&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;It is possible to transform a permutation matrix into a graph, then transpose and plot it to understand what the permutation will do. This may aid in understanding the purpose of permutation matrices, show an interesting link between linear algebra and graph theory, as well as provide an introduction to working with matrices in R.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Note that this post is intended to provide a better understanding of the concept of permutation matrices. There exist efficient software implementations for Gaussian elimination  that can be used out of the box and do not require an understanding of the details of matrix multiplication.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Square matrices of this form are called &lt;em&gt;upper triangular&lt;/em&gt;. Upper triangular matrices are also always in &lt;em&gt;row echelon form&lt;/em&gt;, which is the more generalized description of all matrices that look like (inverted) staircases, not just square ones.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;An adjacency matrix can also be treated as an undirected graph or include weights. Here we only interpret it as an unweighted directed graph.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>[Essay] Against the AfD</title>
      <link>https://seanfobbe.com/posts/2024-01-16_wider-die-afd-eine-streitschrift/</link>
      <pubDate>Tue, 16 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-01-16_wider-die-afd-eine-streitschrift/</guid>
      <description>&lt;h1 id=&#34;the-afd-deportation-conference&#34;&gt;
  The AfD Deportation Conference
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-afd-deportation-conference&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;If you&amp;rsquo;ve been reading the news, you will have heard that Germany is at a boiling point right now, as the &lt;a href=&#34;https://www.bbc.com/news/world-europe-67948861&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;German far-right met to plan &amp;lsquo;mass deportations&amp;rsquo;&lt;/a&gt;. The event was located not very far from the original &lt;a href=&#34;https://en.wikipedia.org/wiki/Wannsee_Conference&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wannsee Conference&lt;/a&gt;, during which the mass deportation of Jews was planned during the Holocaust.&lt;/p&gt;
&lt;p&gt;I wrote a long and angry essay about this, arguing for a ban of the extremist AfD party, which was at the center of this conference and is posed to achieve somewhere between 20% and 30% of the vote in some of the German federal states in 2024 and in the federal elections coming up in 2025. We&amp;rsquo;ve seen this before in German history and it &lt;a href=&#34;https://en.wikipedia.org/wiki/Nazi_Party&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ended badly&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;[Essay] &lt;a href=&#34;https://seanfobbe.com/de/posts/2024-01-16_wider-die-afd-eine-streitschrift/&#34; &gt;Wider die AfD: Eine Streitschrift&lt;/a&gt;  (Fobbe 2024)&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The full essay is available in German only, but I have translated the executive summary for you below.&lt;/p&gt;
&lt;h1 id=&#34;against-the-afd-exective-summary&#34;&gt;
  Against the AfD: Exective Summary
  &lt;a class=&#34;heading-link&#34; href=&#34;#against-the-afd-exective-summary&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;We&amp;rsquo;re taking a break from the regular Data Science programming for a serious national crisis in German democracy. It is the year 2024 and the Federal Republic of Germany must once again confront one of the most awful questions since 1945:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;Pray tell, what are we to do with the Nazis?&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It is widely known that the right-wing and extremist &lt;a href=&#34;https://de.wikipedia.org/wiki/Alternative_f%C3%BCr_Deutschland&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Alternative für Deutschland (AfD)&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; party has been openly promoting &lt;a href=&#34;https://www.institut-fuer-menschenrechte.de/fileadmin/Redaktion/Publikationen/Analyse_Studie/Analyse_Warum_die_AfD_verboten_werden_koennte.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;inhuman ideas&lt;/a&gt; for years, its state-level sections in Thüringen, Sachsen und Sachsen-Anhalt are classified as &lt;a href=&#34;https://www.tagesschau.de/inland/innenpolitik/verfassungsschutz-afd-sachsen-rechtsextremistisch-100.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;proven right-wing extremist&amp;rdquo;&lt;/a&gt; and the leading figure of the party is a &lt;a href=&#34;https://www.hessenschau.de/politik/demonstranten-duerfen-afd-politiker-bjoern-hoecke-als-nazi-bezeichnen-v1,ermittlungen-hoecke-ist-ein-nazi-eingesellt-100.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Court-approved Nazi&lt;/a&gt; and &lt;a href=&#34;https://cdn.prod.www.spiegel.de/media/64a8f9a1-0001-0014-0000-000000044935/media-44935.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fascist&lt;/a&gt;. As with the legend of the frog who does not notice the slowly rising water temperature while being cooked alive, German public discourse has only formed a lukewarm consensus on how to &lt;a href=&#34;https://www.lto.de/recht/nachrichten/n/brak-dav-drb-verbaende-organisationen-juristische-verurteilen-rechtsextremen-masterplan/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;deal with the AfD&lt;/a&gt;.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;It is often said that the AfD should be defeated in the marketplace of ideas. But it is now 2024 and who hasn&amp;rsquo;t yet gotten the memo that Nazis are bad people and the &lt;em&gt;Grundgesetz&lt;/em&gt; (Basic Law) is an &lt;a href=&#34;https://verfassungsblog.de/wo_die_toleranz_endet/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;Anti-Nazi-Constitution&amp;rdquo;&lt;/a&gt; (Steinbeis)? The actual question is this: is the Nazi level of the AfD significant enough to have transformed them from harmless idiots to dangerous idiots in order for us to activate all political and legal measures of the &lt;em&gt;wehrhafte Demokratie&lt;/em&gt; (robust democracy) against them?&lt;/p&gt;
&lt;p&gt;The restraint of the political establishment in Germany has so far been based on a reading of the AfD as a party suported by protest voters and establishment skeptics. Dissatisfaction is permitted under the &lt;em&gt;Grundgesetz&lt;/em&gt;. Harsh criticism of the government and its policies as well. Thus, under the constitution it is permissible to agitate against European unification and immigration. The AfD was originally founded as an anti-euro party and was able radicalize itself under this cover for a long time. In contrast to the &lt;a href=&#34;https://de.wikipedia.org/wiki/Die_Heimat_%28Partei%29&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;National Democratic Party of Germany (NPD)&lt;/a&gt;, it was at least partially able to preserve the appearance of a right-wing conservative party, although the ideas and actions of its followers suggest much worse.&lt;/p&gt;
&lt;p&gt;This indecisive wait-and-see attitude of public discourse was shattered by new research published by the journalistic network &lt;a href=&#34;https://correctiv.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Correctiv&lt;/a&gt;: &lt;a href=&#34;https://correctiv.org/current/new-right/2024/01/10/geheimplan-remigration-vert-afd-rechtsextreme-november-treffen/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;Secret Plan Against Germany&amp;rdquo;&lt;/a&gt;. The teaser reads:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;High-level AfD politicians, neo-Nazis and rich executives met in a hotel near Potsdam in November. They planned nothing less than the expulsion of millions of people from Germany.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We have reached the boiling point. There is no longer just evidence of the extremism of individual state-level units and officials. There are credible signs that the federal AfD and powerful supporters are preparing measures that are reminiscent of the darkest Nazi era. The meeting was held in a location hardly eight kilometers from the &lt;a href=&#34;https://en.wikipedia.org/wiki/Wannsee_Conference&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wannsee Conference&lt;/a&gt; of 20 January 1942, during which the deportation of European Jews was planned.&lt;/p&gt;
&lt;p&gt;It is time to take action against the AfD and activate the &lt;em&gt;robust democracy&lt;/em&gt; provisions of the constitution against the party. This includes a party ban (Art. 21 (2) GG), a prohibition on financing the AfD (Art. 21 (3) GG) and the loss of political rights (including the ability to  be elected and serve in public office) for key AfD leaders (Art. 18 GG, § 39 BVerfGG). A party ban will not fail for the same reasons as the proceedings against the NPD because it is probable that no government spies are in AfD leadership positions and the AfD poses a significant threat to democracy in truth.&lt;/p&gt;
&lt;p&gt;Legal measures must be accompanied by intense efforts of democracy defenders in civil society, politics and business because otherwise the establishment parties will not find the courage to petition the Constitutional Court and go through with proceedings against the AfD.&lt;/p&gt;
&lt;p&gt;Public trust in democracy is upheld by the great majority of democratic voters, not by AfD followers alone. Constitutional proceedings to ban the AfD will not weaken trust in democracy, but strengthen it.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&amp;ldquo;Alternative für Deutschland&amp;rdquo; translates to &amp;ldquo;Alternative for Germany&amp;rdquo;. These days it probably means an alternative constitution based on racial hatred.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;The story of the &lt;a href=&#34;https://en.wikipedia.org/wiki/Boiling_frog&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;boiling frog&lt;/a&gt; is an urban legend. Based on current scientific research even frogs will jump out of the water as soon as the temperature becomes uncomfortable.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Tags, Categories and Language Versions on this Website</title>
      <link>https://seanfobbe.com/posts/2024-01-05_tags-categories-language-versions-on-this-website/</link>
      <pubDate>Fri, 05 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-01-05_tags-categories-language-versions-on-this-website/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;As this website has grown, it has become more important to find efficient ways to organize and manage the increasing number of blog posts and individual pages. Both for the sake of readers and for myself when managing the site.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gohugo.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Hugo&lt;/a&gt;, the website builder engine underlying &lt;a href=&#34;https://cran.r-project.org/package=blogdown&#34;&gt;&amp;lcub;blogdown&amp;rcub;&lt;/a&gt;
 and therefore this website, provides two types of built-in taxonomies to help manage this problem: tags and categories.&lt;/p&gt;
&lt;p&gt;While I&amp;rsquo;ve added tags to posts from the very beginning, I recently started using categories and decided on how each of these should be used. This post collects and explains some of the details for interested readers, but also serves as a reminder to myself in case I forget what I had in mind.&lt;/p&gt;
&lt;h1 id=&#34;multilingual-mode&#34;&gt;
  Multilingual Mode
  &lt;a class=&#34;heading-link&#34; href=&#34;#multilingual-mode&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Beyond tags and categories, this website is actually two websites in one: an English and a German version. Hugo&amp;rsquo;s multilingual mode has worked quite well for me so far, but it also means that I maintain separate content and taxonomies for both language versions.&lt;/p&gt;
&lt;p&gt;Attentive readers may have noticed me posting links to my website with two separate domains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.seanfobbe.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.seanfobbe.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.seanfobbe.de&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.seanfobbe.de&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The .com domain is in fact the primary one under which the website is hosted. The .de domain redirects to &lt;a href=&#34;https://www.seanfobbe.com/de&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.seanfobbe.com/de&lt;/a&gt; but can otherwise be used as a drop-in replacement for this subfolder and all deeplinks will be honored.&lt;/p&gt;
&lt;p&gt;Switching between languages is also possible via the small flag icon in the top right of the website.&lt;/p&gt;
&lt;p&gt;I try to keep both language versions as much in sync as possible, but there are exceptions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sometimes it takes me a while to translate content.&lt;/li&gt;
&lt;li&gt;Sometimes there is very long content or strongly language-dependent content that I feel should be read in the original language; here I will link to the other language version.&lt;/li&gt;
&lt;li&gt;Sometimes there is content, esp. German blog posts, that is quite probably not of interest to an international audience that does not speak German; here I neither link nor translate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you speak both English and German and feel adventurous, try toggling between the language versions occasionally.&lt;/p&gt;
&lt;h1 id=&#34;tags&#34;&gt;
  Tags
  &lt;a class=&#34;heading-link&#34; href=&#34;#tags&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;All tags, including the number of posts/pages for each tag, are listed here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://seanfobbe.com/tags/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/tags/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For tags I have come up with the following strategy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tags describe thematic content&lt;/li&gt;
&lt;li&gt;Each blog post or page should have one or more tags, but no more than 10&lt;/li&gt;
&lt;li&gt;Blog posts must have tags, pages may have tags&lt;/li&gt;
&lt;li&gt;Tags should generalize to multiple posts, but having a large number of tags to describe thematic content is fine&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During the past few days I went over the tags on a number of posts and did some cleaning, but there is still some work to be done. Expect existing tags to change for a while.&lt;/p&gt;
&lt;p&gt;You can access thematic content by either clicking the link to the full list of tags above or any of the tags on a post, which will show similarly tagged posts.&lt;/p&gt;
&lt;h1 id=&#34;categories&#34;&gt;
  Categories
  &lt;a class=&#34;heading-link&#34; href=&#34;#categories&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;All categories, including the number of posts/pages for each category, are listed here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://seanfobbe.com/categories/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/categories/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For categories I have decided on the following strategy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Categories describe the type of post/page&lt;/li&gt;
&lt;li&gt;Each blog post or page can be assigned a maximum of one (1) category&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Blog posts must have categories, pages may have categories&lt;/li&gt;
&lt;li&gt;Categories must generalize to multiple posts/pages and the number of categories should be kept small and tightly controlled&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Currently I maintain the following categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Announcement&lt;/strong&gt; concerns future events (e.g. upcoming events or publications) and should always be associated with a date.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data&lt;/strong&gt; collects all posts about my open data work and possible information on other data publications that may be of interest to readers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Essay&lt;/strong&gt; describes long-form content. Essays are deeper reflections on certain topics, will usually contain a fair amount of opinion, sometimes math, code or diagrams and may be as long as I feel is warranted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Media&lt;/strong&gt; is for past interviews, podcasts and other media appearances.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publications&lt;/strong&gt; posts inform about new publications such as peer-reviewed papers, reports, articles and similar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Speaking&lt;/strong&gt; is for follow-ups on academic speaking engagements, particularly for slides or recordings of talks. This category is more retrospective, upcoming events are categorized under &lt;em&gt;Announcement&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tutorial&lt;/strong&gt; is for posts and pages with a teaching purpose.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Website&lt;/strong&gt; is for posts like this one, which inform about features or reflect on the state of this website.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;This is a conscious website design decision and not required by Hugo or the Coder theme. In fact, you can have as many categories as you like.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>The Top 10 Most Structurally Complex German Federal Laws</title>
      <link>https://seanfobbe.com/posts/2024-01-04_structural-complexity-top-10-federal-laws-germany/</link>
      <pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2024-01-04_structural-complexity-top-10-federal-laws-germany/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;In December 2023 I created a rough list of the top 10 most structurally complex German federal laws and posted them to social media. The diagrams were drawn from the &lt;a href=&#34;https://zenodo.org/records/8402567/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus des Deutschen Bundesrechts (C-DBR)&lt;/a&gt;. For this article I&amp;rsquo;ve written down the list and collected all diagrams into ordered collages.&lt;/p&gt;
&lt;p&gt;The original diagrams are available as high-resolution vector graphics from this link: &lt;a href=&#34;https://zenodo.org/records/8402567/files/C-DBR_2023-10-03_DE_Netzwerke.zip?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Fobbe, S. (2023). Corpus des Deutschen Bundesrechts (C-DBR) (2023-10-03) [Data set]. Zenodo.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All diagrams are in the public domain and can be used for any and all purposes. Especially for research and teaching!&lt;/p&gt;
&lt;p&gt;Want to create  better diagrams than I did? I wrote a tutorial for RECHTS|EMPIRE (in German only) on how to do this: &lt;a href=&#34;https://rechtsempirie.de/10.25527/re.2021.11/juristische-netzwerkdaten-fuer-einsteiger/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Juristische Netzwerkdaten für Einsteiger:innen&lt;/a&gt;. Although to be fair, you only need to grab the GraphML files from the data set, import them into &lt;a href=&#34;https://gephi.github.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gephi&lt;/a&gt; and off you go.&lt;/p&gt;
&lt;h1 id=&#34;structural-complexity-of-german-federal-laws&#34;&gt;
  Structural Complexity of German Federal Laws
  &lt;a class=&#34;heading-link&#34; href=&#34;#structural-complexity-of-german-federal-laws&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;What is the structural complexity of a law? Before I say anything, let me mention that my colleague &lt;a href=&#34;https://people.mpi-inf.mpg.de/~coupette/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dr. Corinna Coupette&lt;/a&gt; is the true authority in this field and anyone who is interested in this line of research should check the list of publications on her personal website. Most of her papers are in English, although her main book on legal network analysis is available only in German: &lt;a href=&#34;https://zenodo.org/record/2617115&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Juristische Netzwerkforschung &amp;mdash; Modellierung, Quantifizierung und Visualisierung relationaler Daten im Recht (Mohr Siebeck 2019)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My definition of complexity for this list was a lot more relaxed: I listed all PDF files of the dendograms (headings only, that is, excluding individual norms) of all German federal laws in order of their file sizes. The PDF diagrams are vector graphics and their file size increases with the number of nodes and edges, but also the longer the labels are. For a first approximation this turned out to be a surprisingly good heuristic.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h1 id=&#34;the-top-10-most-structurally-complex-german-federal-laws&#34;&gt;
  The Top 10 Most Structurally Complex German Federal Laws
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-top-10-most-structurally-complex-german-federal-laws&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The list is led by civil law, in particular the Civil Code and the Commercial Code, following by three books of social law. Positions 5 through 10 are held by laws from different subject areas, but civil law is again notably strong. I give rough translations in &lt;strong&gt;[brackets]&lt;/strong&gt;, followed by the original German names below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;[Civil Code]&lt;/strong&gt; &amp;mdash; Bürgerliches Gesetzbuch (BGB)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Commercial Code]&lt;/strong&gt; &amp;mdash; Handelsgesetzbuch (HGB)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Sixth Social Code]&lt;/strong&gt; &amp;mdash; Sechstes Sozialgesetzbuch (SGB-VI)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Fifth Social Code]&lt;/strong&gt; &amp;mdash; Fünftes Sozialgesetzbuch (SGB-V)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Third Social Code]&lt;/strong&gt; &amp;mdash; Drittes Sozialgesetzbuch (SGB-III)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Civil Procedure Code]&lt;/strong&gt; &amp;mdash; Zivilprozesordnung (ZPO)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Tax Code]&lt;/strong&gt; &amp;mdash; Abgabenordnung (AO)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Corporate Transformation Law]&lt;/strong&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; &amp;mdash; Umwandlungsgesetz (UmwG)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Capital Investment Code]&lt;/strong&gt; &amp;mdash; Kapitalanlagegesetzbuch (KAGB)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Farmer Insurance Law]&lt;/strong&gt; &amp;mdash; Gesetz über die Alterssicherung der Landwirte (ALG)&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;ordered-collages-of-all-diagrams&#34;&gt;
  Ordered Collages of all Diagrams
  &lt;a class=&#34;heading-link&#34; href=&#34;#ordered-collages-of-all-diagrams&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The collages are ordered from top left to bottom right. Top 1 and top 2 are the top left and top right, respectively. Then top 3 and top 4 are second row left and right. And so on.&lt;/p&gt;
&lt;h2 id=&#34;dendrograms&#34;&gt;
  Dendrograms
  &lt;a class=&#34;heading-link&#34; href=&#34;#dendrograms&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/C-DBR_2023-10-03_Collage_Dendrogramm.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;sunburst&#34;&gt;
  Sunburst
  &lt;a class=&#34;heading-link&#34; href=&#34;#sunburst&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/C-DBR_2023-10-03_Collage_Sunburst.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;circlepacking&#34;&gt;
  Circlepacking
  &lt;a class=&#34;heading-link&#34; href=&#34;#circlepacking&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/C-DBR_2023-10-03_Collage_Circlepack.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;This is fine for social media, but you probabily will never make peer review with this ;-)&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;This refers to the transformation of corporate entities into different corporate entities.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>UN Human Rights Council Workshop on Cultural Rights and the Protection of Cultural Heritage</title>
      <link>https://seanfobbe.com/posts/2023-12-04_human-rights-council-workshop-cultural-rights/</link>
      <pubDate>Mon, 04 Dec 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-12-04_human-rights-council-workshop-cultural-rights/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://www.ohchr.org/en/events/events/2023/intersessional-workshop-cultural-rights-and-protection-cultural-heritage&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Materials related to the Third Intersessional Workshop on Cultural Rights and the Protection of Cultural Heritage&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;intersessional-workshop-on-cultural-rights-and-the-protection-of-cultural-heritage&#34;&gt;
  Intersessional Workshop on Cultural Rights and the Protection of Cultural Heritage
  &lt;a class=&#34;heading-link&#34; href=&#34;#intersessional-workshop-on-cultural-rights-and-the-protection-of-cultural-heritage&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;On 1 December 2023 the UN Office of the High Comissioner for Human Rights (OHCHR) convened a one-day &lt;a href=&#34;https://www.ohchr.org/en/events/events/2023/intersessional-workshop-cultural-rights-and-protection-cultural-heritage&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Intersessional Workshop on Cultural Rights and the Protection of Cultural Heritage&lt;/a&gt;, as requested by the UN Human Rights Council (UNHRC) in &lt;a href=&#34;https://daccess-ods.un.org/tmp/3456749.02200699.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;resolution 49/7&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The UNHRC and OHCHR regularly convene workshops to better study human rights issues and clarify questions of international law. This was the third intersessional workshop on cultural rights and the protection of cultural heritage. The &lt;a href=&#34;https://www.ohchr.org/en/human-rights/economic-social-cultural-rights/cultural-rights-protection-cultural-heritage&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;first was held in 2017&lt;/a&gt; and the &lt;a href=&#34;https://www.ohchr.org/en/intersessional-workshop-cultural-rights-and-protection-cultural-heritage&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;second in 2021&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am grateful to the United Nations for their kind invitation to speak at the event, as well as for their significant efforts in organizing the workshop. The hybrid format was well-executed and attracted a diverse and interesting range of speakers from all around the world.&lt;/p&gt;
&lt;h1 id=&#34;opening-remarks-of-un-special-rapporteur-xanthaki&#34;&gt;
  Opening Remarks of UN Special Rapporteur Xanthaki
  &lt;a class=&#34;heading-link&#34; href=&#34;#opening-remarks-of-un-special-rapporteur-xanthaki&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;During her opening statement the UN Special Rapporteur in the field of cultural rights, Professor Alexandra Xanthaki, raised a number of important points that deserve attention. In particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The international community often focuses too much on cultural heritage &lt;em&gt;per se&lt;/em&gt;, instead of on individuals,  communities and their right to participate in cultural life&lt;/li&gt;
&lt;li&gt;What do we mean by &amp;ldquo;cultural heritage&amp;rdquo;? Most States focus on tangible cultural heritage and push aside living heritage and natural heritage; where there are such initiatives, they are not framed in such terms&lt;/li&gt;
&lt;li&gt;Cultural rights are for humans, not for States&lt;/li&gt;
&lt;li&gt;Cultural rights  are granted to all inhabitants, not just citizens&lt;/li&gt;
&lt;li&gt;There is not just one cultural heritage, but many cultural heritages (the plural is important!)&lt;/li&gt;
&lt;li&gt;Who represents cultural heritage? Even among minorities, indigenous peoples and non-State communities the louder voices attempt to dominate the discourse; we need an effective right to participation for all&lt;/li&gt;
&lt;li&gt;Women are often called the &amp;ldquo;carers of culture&amp;rdquo;, but are pushed aside when cultural heritage is defined and managed&lt;/li&gt;
&lt;li&gt;The folklorization of indigenous peoples and minorities is a problem; in particular, what are the effects of tourism on their cultures?&lt;/li&gt;
&lt;li&gt;The World Bank, International Monetary Fund (IMF), the UN Development Program (UNDP) and the World Intellectual Property Organization (WIPO) have not even begun a cultural rights discussion&lt;/li&gt;
&lt;li&gt;The redress for violations of cultural heritage has not been addressed much&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;remarks-by-the-head-of-the-cultural-mission-of-timbuktu-mali&#34;&gt;
  Remarks by the Head of the Cultural Mission of Timbuktu (Mali)
  &lt;a class=&#34;heading-link&#34; href=&#34;#remarks-by-the-head-of-the-cultural-mission-of-timbuktu-mali&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The entire meeting is worth re-watching, but one other contribution I would like to highlight was the testimony provided by Mr. El-Boukhari Ben Essayouti, the Head of the Cultural Mission of Timbuktu, Mali.&lt;/p&gt;
&lt;p&gt;Mr. Ben Essayouti provided first-hand insights on the time when Timbuktu was held by Islamists and much of the destruction of mosques and mausolea occurred that was later the subject of the &lt;a href=&#34;https://www.icc-cpi.int/mali/al-mahdi&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;criminal proceedings against Ahmed Al Faqi Al Mahdi&lt;/a&gt; before the International Criminal Court (ICC). In 2016 &lt;a href=&#34;https://www.icc-cpi.int/sites/default/files/CaseInformationSheets/Al-MahdiEng.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Al Mahdi was found guilty&lt;/a&gt; of directing attacks against nine mausolea and one mosque in Timbuktu during the 2012 occupation.&lt;/p&gt;
&lt;p&gt;I think the experiences of Mr. Ben Essayouti are best listened to directly. I&amp;rsquo;ll post the link to the recording as soon as it is available. His &lt;a href=&#34;https://www.ohchr.org/sites/default/files/documents/issues/culturalrights/2023-cultural-rights-heritage-stm-El-Boukhari-BEN-ESSAYOUTI-session2.docx&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;written statement&lt;/a&gt; is already online.&lt;/p&gt;
&lt;h1 id=&#34;my-statement-during-the-workshop&#34;&gt;
  My Statement during the Workshop
  &lt;a class=&#34;heading-link&#34; href=&#34;#my-statement-during-the-workshop&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Later, during the discussion part of Panel II, the Chair of the meeting kindly granted me the floor to intervene on behalf of &lt;a href=&#34;https://rashid-international.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;RASHID International&lt;/a&gt;, an international NGO in special consultative status with the United Nations since 2019. I raised two points that deserve the attention of the international community:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Advanced &lt;a href=&#34;https://www.czap.org/protecting-iraqi-cultural-heritage&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;chemical tracer technology&lt;/a&gt; to protect cultural objects&lt;/li&gt;
&lt;li&gt;Lack of attention to the &lt;a href=&#34;https://zenodo.org/records/3822202/files/Policy%20Brief-No-5-April-2019-low-res.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;List of Cutural Property under Enhanced Protection&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The statement reflects intense work carried out by the international non-profit organization &lt;a href=&#34;https://rashid-international.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;RASHID International&lt;/a&gt; over the years in the field of cultural heritage and cultural rights. The full statement is reproduced below.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;PANEL II: Cultural Heritage in Crisis and Work of Cultural Rights Defenders (15.00&amp;ndash;17.00 CET)&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Distinguished Delegates,
Ladies and Gentlemen,&lt;/p&gt;
&lt;p&gt;my name is Seán Fobbe and I serve as the Chief Legal Officer of RASHID International, an international non-profit organization dedicated to protecting the cultural heritage of Iraq. We have been in consultative status with the Economic and Social Council of the United Nations since 2019.&lt;/p&gt;
&lt;p&gt;A core recommendation to protect cultural heritage during crisis is the advance preparation of inventories. We urge all actors to think beyond standard procedures such as written descriptions, drawings and photographs by also considering more advanced technology. Our own work in Iraq, led by Professor Roger Matthews, has focused on applying invisible chemical tracer liquids with encoded signatures to inorganic artefacts, such as stone, metal, glass and clay. This security technology was applied to more than half a million artefacts in five Iraqi museums, permanently protecting them from theft as it clearly documents provenance and allows recovery and prosecution decades down the line. Furthermore, it is impervious to forgery of provenance, as well as loss of records at the relevant site.&lt;/p&gt;
&lt;p&gt;Legal measures are another important part of the mosaic of international heritage protection. We are concerned that the List of Cultural Property under Enhanced Protection remains almost unused. The List was created under the 1999 Second Protocol to the 1954 Hague Convention in order to protect heritage of the greatest importance for humanity. It currently lists only 18 sites under full Enhanced Protection and 20 sites under provisional Enhanced Protection. Compare this to the approximately 1,200 sites on the World Heritage List. We urge the international community to not let this instrument fall by the wayside and to ensure that more sites are given Enhanced Protection.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title>100,000&#43; Legal Dataset Downloads</title>
      <link>https://seanfobbe.com/posts/2023-12-03_100k-legal-data-set-downloads/</link>
      <pubDate>Sun, 03 Dec 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-12-03_100k-legal-data-set-downloads/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;Open Data Repository&lt;/strong&gt;   &amp;mdash;   &lt;a href=&#34;https://data.seanfobbe.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;data.seanfobbe.com&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;thank-you&#34;&gt;
  Thank you!
  &lt;a class=&#34;heading-link&#34; href=&#34;#thank-you&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Thank you all for for your interest in my work! My Open Access repository of legal datasets &lt;a href=&#34;https://data.seanfobbe.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;over at Zenodo&lt;/a&gt; passed the milestone of 100,000 downloads sometime during November. I am ecstatic that something appears to be changing in the legal world and interest in Legal Data Science is increasing.&lt;/p&gt;
&lt;p&gt;That being said, as you can see from the diagram below, the distribution of attention has been rather asymmetric and skews towards a few especially popular datasets. There are plenty of interesting applications to be worked on with some of the lesser known data sets, so I encourage you to browse around a bit and see if you find anything interesting.&lt;/p&gt;
&lt;p&gt;Some top recommendations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.4643065&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;corpus of German parliamentary materials (CDRS-BT)&lt;/a&gt; is vast (more than 800 million tokens) and contains draft laws, in addition to other materials, dating back to 1949&lt;/li&gt;
&lt;li&gt;The set of &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.3995593&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;German legal stopwords (SW-DE-RS)&lt;/a&gt; is an auxiliary data set that can save you a huge amount of work when cleaning your own German legal data&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.3824281&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Collection of International Treaties and Legal Documents (CITLD)&lt;/a&gt; is an excellent companion to traditional international law research &amp;mdash; myself, I use it almost daily&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;applications&#34;&gt;
  Applications
  &lt;a class=&#34;heading-link&#34; href=&#34;#applications&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;If you happen to have built and published any interesting applications or research with these datasets, &lt;a href=&#34;https://seanfobbe.com/contact&#34; &gt;write me and let me know&lt;/a&gt;!&lt;/p&gt;
&lt;h1 id=&#34;zenodo-download-statistics&#34;&gt;
  Zenodo Download Statistics
  &lt;a class=&#34;heading-link&#34; href=&#34;#zenodo-download-statistics&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/Fobbe_Stats_Data_2023-11-28.png&#34; alt=&#34;Zenodo Fobbe Download Statistics&#34; title=&#34;Zenodo Fobbe Download Statistics&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Essay] Modeling Data Workflows with {targets}</title>
      <link>https://seanfobbe.com/posts/2023-11-12_modeling-data-workflows-with-targets/</link>
      <pubDate>Sun, 12 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-11-12_modeling-data-workflows-with-targets/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;In this article I discuss my experience modeling data pipelines with the R package &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; (Landau 2023) and some of the principles I follow in constructing them.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; pipelines are a significant departure from the monolithic linear data workflows that are common in data science and which I myself have used heavily in the past (you can still see one at work in the &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ICJ corpus&lt;/a&gt;). Declarative workflows break up the pipeline into different components that are run in an order determined by the &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; framework and the interlinked dependencies of the individual components.&lt;/p&gt;
&lt;p&gt;This has many benefits. In particular, this type of pipeline significantly decreases development time, is easier to fix when broken and allows for shorter development increments. It is possible to spend an hour here and there instead of having to reserve an entire afternoon while working through a linear pipeline.&lt;/p&gt;
&lt;p&gt;The downside is a fair amount of additional work when setting up the pipeline and the added intellectual complexity of the &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; framework, but on the whole I am very satisfied will never go back to linear workflows (except for minor analyses).&lt;/p&gt;
&lt;p&gt;I won&amp;rsquo;t claim that the principles for modeling pipelines presented in this article are best practice or comprehensive, but there are nevertheless some finer points that colleagues may appreciate.&lt;/p&gt;
&lt;h1 id=&#34;table-of-contents&#34;&gt;
  Table of Contents
  &lt;a class=&#34;heading-link&#34; href=&#34;#table-of-contents&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#overview&#34;&gt;Overview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#data-workflow&#34;&gt;Data Workflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#modeling-targets&#34;&gt;Modeling Targets&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#parallelism&#34;&gt;Parallelism&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#complete-pipeline-data-functions-and-globals&#34;&gt;Complete Pipeline (Data, Functions and Globals)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#reproducing-data-workflow-diagram&#34;&gt;Reproducing Data Workflow Diagram&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#reproduce-complete-pipeline-diagram-data-functions-and-globals&#34;&gt;Reproduce Complete Pipeline Diagram (Data, Functions and Globals)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#a-word-of-thanks&#34;&gt;A Word of Thanks&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;h1 id=&#34;data-workflow&#34;&gt;
  Data Workflow
  &lt;a class=&#34;heading-link&#34; href=&#34;#data-workflow&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;If you follow my work you may have seen me post striking neon-on-black network visualizations of my data pipelines. I use these for three purposes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the structure of my computations&lt;/li&gt;
&lt;li&gt;Discuss the details of my work with a technical audience&lt;/li&gt;
&lt;li&gt;Explain the general outline of data workflows to a non-technical audience&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The most common visual I use to display pipelines is a network representation of the data workflow, also called a directed acyclic graph (DAG). Data workflow means that the diagram below includes only &lt;strong&gt;targets&lt;/strong&gt;, the primary data components of the pipeline. Excluded are functions (i.e. computational instructions) and global variables.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/C-DBR_2023-11-11_Pipeline_Data-Only_20x20.png&#34;/&gt;
&lt;/figure&gt;

&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;The workflow diagrams shown in this article represent a pipeline that connects to the official source of German federal legislation and constructs a complete and cleaned data set of all German federal laws and regulations, the &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.3832111&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus des Deutschen Bundesrechts (C-DBR)&lt;/a&gt; (Zenodo 2023). Note that the documentation is in German.&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Network Viz Algorithms&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have tried every algorithm under the sun &amp;mdash; or at least as contained in &lt;a href=&#34;https://ggraph.data-imaginist.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{ggraph}&lt;/a&gt; &amp;mdash; to visualize data pipelines and have found that the only one that works well for data workflows is &lt;strong&gt;sugiyama&lt;/strong&gt;. I encourage you to try different options yourself, but always remember &lt;strong&gt;sugiyama&lt;/strong&gt; as a good option. At the end of the article you will find R code to produce these diagrams based on this algorithm.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Each &lt;strong&gt;target&lt;/strong&gt;  is a self-contained part of the pipeline that is computed in its own R process, with a specified reproducible seed and with its output stored as an individual R object, which can be accessed individually with &lt;code&gt;tar_load()&lt;/code&gt; or &lt;code&gt;tar_read()&lt;/code&gt;. Every target is defined by three elements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Data input&lt;/li&gt;
&lt;li&gt;Code&lt;/li&gt;
&lt;li&gt;Data output&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The small white dots in this diagram show the output and the link to the input(s), but not the functions. Target outputs usually are vectors or data frames (in my case almost always &lt;a href=&#34;https://cran.r-project.org/package=data.table&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;data.tables&lt;/a&gt;). Sometimes these vectors reference files on disk (e.g. when a target downloads thousands of PDF files). The framework computes hashes of all stored results (including references files on disk) and tracks changes to them. When the pipeline runs it automatically skips over targets that have already been computed and for which input and output remain unchanged. This feature alone makes it worthwhile to build &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; pipelines.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Targets Storage Format&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The default storage format for targets is &lt;a href=&#34;https://books.ropensci.org/targets-design/data.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Rds&lt;/a&gt;. You can easily change this to the &lt;a href=&#34;https://cran.r-project.org/package=qs&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;qs&lt;/a&gt; format, which is faster to read/write and uses less disk space due to better compression.&lt;/p&gt;
&lt;p&gt;Simply add &lt;code&gt;tar_option_set(format = &amp;quot;qs&amp;quot;)&lt;/code&gt; to your global targets settings and make sure the &lt;a href=&#34;https://cran.r-project.org/package=qs&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;qs package&lt;/a&gt; is installed in your package library.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I almost always use a targets-only visual of the workflow. Why?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The full structure (including functions) and globals becomes cluttered very quickly even with moderately-sized pipelines&lt;/li&gt;
&lt;li&gt;A data pipeline is about the flow of the data, everything else is incidental to it&lt;/li&gt;
&lt;li&gt;I find it easier to anchor my inspection of the code with data targets and then look at the associated function in the pipeline manifest  &lt;code&gt;.Rmd&lt;/code&gt; if there is an issue&lt;/li&gt;
&lt;li&gt;It is visually more attractive&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When I review the pipeline diagram, I always ask myself the same questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Are there dangling targets?&lt;/li&gt;
&lt;li&gt;Are all targets connected to the proper upstream/downstream targets?&lt;/li&gt;
&lt;li&gt;Does the overall pipeline concept make sense?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dangling targets tend to happen fairly often during development, particularly when I&amp;rsquo;ve written all the necessary functional code but have forgotten to add downstream targets to the pipeline. Visual inspection shows this quickly. Sometimes I also comment out parts of the pipeline because I am working on upstream parts where frequent changes would cause the downstream part to rerun often. Visual inspection reminds me to uncomment these parts when I am done with upstream development work.&lt;/p&gt;
&lt;p&gt;Checking proper connections is more tricky, but there are some elements of my own modeling style that are prone to improper links, so I re-check them often. For example, I tend to build a preliminary metadata download manifest from whatever database or file set I am currently extracting data from, but this often requires additional cleaning before I run the full data content extraction. Sometimes I continue to work on the pipeline before I have done the cleaning, so I hook up the preliminary data to downstream targets. When I add the cleaned download manifest to the pipeline I always check if I&amp;rsquo;ve severed the downstream connections with the preliminary data and added the final download manifest as a data source.&lt;/p&gt;
&lt;p&gt;Most importantly, the overall workflow needs to make sense. If the pipeline structure is all over the place and doesn&amp;rsquo;t seem very intelligible I try to redesign the pipeline to make the process clearer, group similar targets together in the manifest and workflow and so on. Mistakes in programming happen more frequently if structure is poor, one of the reasons why re-use of functions and use of control flow is encouraged instead of burying problems under mountains of code.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Literate Programming with {targets}&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With complex pipelines it becomes cumbersome to write the &lt;code&gt;_targets.R&lt;/code&gt; file by hand. &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; offers a convenient style of literate programming at the pipeline level, which enables construction of the pipeline in an &lt;code&gt;.Rmd&lt;/code&gt; file. This is what I always use. See the &lt;a href=&#34;https://books.ropensci.org/targets/literate-programming.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;literate programming section&lt;/a&gt; of the &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; manual for details.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;modeling-targets&#34;&gt;
  Modeling Targets
  &lt;a class=&#34;heading-link&#34; href=&#34;#modeling-targets&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The construction of individual targets is more of an art than a science. At its core, each target can be thought of as a building block or component of the full workflow. The &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; package forces you to use a single R expression (commonly a custom function) to create each target.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The question is then, how much should you fit into each target and its associated function? There are several criteria I use to decide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the runtime of the target?&lt;/li&gt;
&lt;li&gt;Can I avoid re-running computations by creating new targets?&lt;/li&gt;
&lt;li&gt;How often will I be refactoring/fixing the target?&lt;/li&gt;
&lt;li&gt;How interested am I in the results for a specific step of the workflow?&lt;/li&gt;
&lt;li&gt;Can I collect several related computations into a conceptual unit?&lt;/li&gt;
&lt;li&gt;Does it improve intelligibility in the context of the entire pipeline?&lt;/li&gt;
&lt;li&gt;Can I reuse the function that builds a target across different projects?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;runtime-and-re-run-avoidance&#34;&gt;
  Runtime and Re-Run Avoidance
  &lt;a class=&#34;heading-link&#34; href=&#34;#runtime-and-re-run-avoidance&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Runtime means taking advantage of the fact that &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; skips steps that have have already been computed for which the input data, code and output file(s) remain unchanged. For example, if I have a component that a) runs for 60 min, b) could be easily split into two parts and c) keeps producing errors in the second 30 min, it can make a lot of sense to split it into two targets so I don&amp;rsquo;t have to rerun the first 30 min all the time. This is one of the major reasons why I love &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; so much. This happens a lot in my line of work.&lt;/p&gt;
&lt;h2 id=&#34;code-changes&#34;&gt;
  Code Changes
  &lt;a class=&#34;heading-link&#34; href=&#34;#code-changes&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Runtime ties directly into my next point: how often do I need to change the code or input data that goes into a target? Some components of some pipelines just get continuous or regular development attention, for example if they frequently produce downstream problems, are affected by input data changes (particular if the target fixes data coming from a source I don&amp;rsquo;t control) or contain features that I have not fully developed yet. Partially developed features especially are good candidates for separate targets that branch out from the main pipeline.&lt;/p&gt;
&lt;h2 id=&#34;pipeline-inspection&#34;&gt;
  Pipeline Inspection
  &lt;a class=&#34;heading-link&#34; href=&#34;#pipeline-inspection&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Some targets I am especially interested in and would like to review their results often. This can be as part of a formal test in a literate programming report or as informal testing if I suspect something will often go wrong at a certain step.&lt;/p&gt;
&lt;p&gt;This may also be a concern if a target contains many strict data quality checks that can cause it to error out if the computational result is questionable. I build scientific pipelines that tend to err on the side of perfection rather than aiming for high uptime, so this may or may not be as relevant to you.&lt;/p&gt;
&lt;h2 id=&#34;conceptual-units-and-pipeline-intellibility&#34;&gt;
  Conceptual Units and Pipeline Intellibility
  &lt;a class=&#34;heading-link&#34; href=&#34;#conceptual-units-and-pipeline-intellibility&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Some targets have low runtime, don&amp;rsquo;t change often and don&amp;rsquo;t need much inspection, but I nonetheless model them separately to have sensible conceptual units from which I can continue to build the pipeline and which make the entire workflow more intelligible. This comes up in particular  when I am extracting new variables from existing variables (e.g. via REGEX from a string variable). I like to have each variable or group of variables as a conceptual unit before I recombine and merge them with the data they were extracted from.&lt;/p&gt;
&lt;h2 id=&#34;function-reuse&#34;&gt;
  Function Reuse
  &lt;a class=&#34;heading-link&#34; href=&#34;#function-reuse&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;An important concern for those who work on multiple projects is function reuse. When you have a custom function with generic applicability that is useful across many projects it makes sense to always model it as an individual target. My classic use cases are my custom download function &lt;code&gt;f.download&lt;/code&gt; (it has a silly amount of features) and the conversion of PDF to TXT files. These are components that I reuse in almost all projects and always model as their own target(s).&lt;/p&gt;
&lt;h1 id=&#34;parallelism&#34;&gt;
  Parallelism
  &lt;a class=&#34;heading-link&#34; href=&#34;#parallelism&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Parallelism also factors into these considerations. Every data pipeline I write  includes some form of parallel computation to reduce runtime. Parallelism can be an intimidating subject at first, but even if you have never used it before, I recommend reading an introduction as soon as you reach intermediate level as an R programmer. In terms of pipeline construction, parallelism determines the type and number of targets you are likely to create, so familiarity with the basics is important.&lt;/p&gt;
&lt;p&gt;You might encounter parallelism in R at four different levels:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; framework permits processing multiple targets in parallel based on &lt;a href=&#34;https://cran.r-project.org/package=future&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{future}&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Explicit parallelism when you use functions like &lt;code&gt;mclapply&lt;/code&gt; or the &lt;a href=&#34;https://cran.r-project.org/package=future&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{future}&lt;/a&gt; framework&lt;/li&gt;
&lt;li&gt;Implict parallelism when package authors have added parallel processing to their functions&lt;/li&gt;
&lt;li&gt;Parallelization at the system level, such as with the basic linear algebra subsystem (BLAS)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Watch out for implicit parallelism, as this may throw off your allocation of system resources if you overlook it. I haven&amp;rsquo;t encountered parallelism at the system level very often. The &lt;a href=&#34;https://cran.r-project.org/package=stm&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{stm}&lt;/a&gt; package in combination with a compiled BLAS is the only surprise I&amp;rsquo;ve encountered so far. If system parallelization is used it is probably  part of an R package design decision and documented as such.&lt;/p&gt;
&lt;p&gt;Most often you&amp;rsquo;ll encounter some kind of implicit parallelism as part of R packages. Often there will be an option in a function like &lt;code&gt;cores = parallel::detectCores()&lt;/code&gt; that sets the number of cores to maximum by default. In a linear workflow this is not an issue, but if you add your own explicit parallel framework or process targets in parallel this may become a concern through overloading your machine&amp;rsquo;s resources.&lt;/p&gt;
&lt;p&gt;For pipeline design the important considerations are a) explicit parallelism and b) parallel target processing. If you have a single machine, the former is likely to be your method of choice, if you have multiple machines or nodes, a combination of the two.&lt;/p&gt;
&lt;p&gt;In my workflows I usually encounter a few targets that must process a heavy workload, but are strict upstream dependencies for the rest of the workflow (bottlenecks). I tend to model these bottlenecks with explicit parallelism contained in a single target, since creating additional targets for each would cause too much computational overhead and negatively impact the legibility of the workflow diagram (in case of manual or static branching, not applicable to dynamic branching). If your workflow has fewer or no bottlenecks (i.e. is conceptually more parallel when viewed in the diagram) it may make more sense to run several targets (or parallel lines of targets) in parallel.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Parallel Frameworks in R&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are quite the number of parallel frameworks in R, so I am just going to mention my favorites. If you are already using higher-order functions from base R like &lt;code&gt;lapply()&lt;/code&gt; or &lt;code&gt;sapply&lt;/code&gt; in your workflow, it is easiest to simply use companion functions prefixed with &amp;lsquo;mc&amp;rsquo; such as &lt;code&gt;mclapply()&lt;/code&gt; or &lt;code&gt;mcsapply&lt;/code&gt; and you are instantly running everything in parallel.&lt;/p&gt;
&lt;p&gt;For those (like me) who have more advanced needs, the &lt;a href=&#34;https://cran.r-project.org/package=future&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{future}&lt;/a&gt; framework is your best bet. The &lt;a href=&#34;https://cran.r-project.org/package=future&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{future}&lt;/a&gt; framework is more than just a package, it allows you to select a custom frontend and backend to adapt the system to your personal needs. For example, I use &lt;a href=&#34;https://cran.r-project.org/package=future.apply&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{future.apply}&lt;/a&gt; as a frontend, which provides functions that behave almost like the &lt;code&gt;apply()&lt;/code&gt; family in base R. If you happen to prefer the &lt;code&gt;foreach&lt;/code&gt; frontend, you can use this with &lt;a href=&#34;https://dofuture.futureverse.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{doFuture}&lt;/a&gt;. There is also the &lt;a href=&#34;https://furrr.futureverse.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{furrr}&lt;/a&gt; package which interfaces with the tidyverse. I usually use the standard &lt;strong&gt;parallel&lt;/strong&gt; backend, but sometimes also &lt;strong&gt;callr&lt;/strong&gt;, which is the parallel backend that &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; uses for parallel processing of targets.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;complete-pipeline-data-functions-and-globals&#34;&gt;
  Complete Pipeline (Data, Functions and Globals)
  &lt;a class=&#34;heading-link&#34; href=&#34;#complete-pipeline-data-functions-and-globals&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;A visual of the complete pipeline can be quite intimidating. It displays a  harsh beauty, but there is usually too much going on to make much sense of it. Even dynamic tools like the function &lt;code&gt;tar_visnetwork()&lt;/code&gt; have trouble making sense of it all. I would recommend exporting the graph to a &lt;code&gt;.graphml&lt;/code&gt; file and loading it into &lt;a href=&#34;https://gephi.github.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gephi&lt;/a&gt;, which is a more convenient tool to view graph diagrams at this level of complexity.&lt;/p&gt;
&lt;p&gt;Nonetheless, adding functions and globals to the diagram can provide us with some important clues:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Are all functions hooked up to the right targets?&lt;/li&gt;
&lt;li&gt;Are there dangling functions that are not used in the pipeline?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As you can see, there is a dangling set of three function nodes on the right of this diagram. These are part of an older PDF to TXT extraction workflow that I will probably clean up at a future point in time, but are still part of the project in case I want to refer to them.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/C-DBR_2023-11-11_Pipeline_Data-Functions-Globals_20x20.png&#34;/&gt;
&lt;/figure&gt;

&lt;h1 id=&#34;reproducing-data-workflow-diagram&#34;&gt;
  Reproducing Data Workflow Diagram
  &lt;a class=&#34;heading-link&#34; href=&#34;#reproducing-data-workflow-diagram&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;To reproduce the above diagram, run the C-DBR pipeline at least once (the pipeline is stored in &lt;code&gt;.Rmd&lt;/code&gt; and needs to be rendered to &lt;code&gt;.R&lt;/code&gt; first), then execute the below code in the same working directory as the project. You can quickly get the project by git cloning &lt;a href=&#34;https://github.com/SeanFobbe/c-dbr&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/SeanFobbe/c-dbr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The dimensions for the static image are 20x20 inches at 150 dpi as PNG.&lt;/p&gt;
&lt;p&gt;Note that every publication of the C-DBR corpus alwys contains a static snapshot visual of the pipeline as PDF/PNG in the &lt;code&gt;analysis&lt;/code&gt; archive.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(targets)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(data.table)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(igraph)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(ggraph)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;edgelist &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;tar_network&lt;/span&gt;(targets_only &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;$&lt;/span&gt;edges
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;setDT&lt;/span&gt;(edgelist)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;g  &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; igraph&lt;span style=&#34;color:#ff6ac1&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;graph.data.frame&lt;/span&gt;(edgelist,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;                               directed &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;ggraph&lt;/span&gt;(g,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;       &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;sugiyama&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_edge_diagonal&lt;/span&gt;(colour &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;darkgoldenrod2&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_node_point&lt;/span&gt;(size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;                    color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_node_text&lt;/span&gt;(&lt;span style=&#34;color:#57c7ff&#34;&gt;aes&lt;/span&gt;(label &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; name),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;                   color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;                   size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;                   repel &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;theme_void&lt;/span&gt;()&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;labs&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;        title &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;paste&lt;/span&gt;(&lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;C-DBR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;                      &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;| Complete dataset creation process (data only)&amp;#34;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;        caption &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;Fobbe | DOI: 10.5281/zenodo.3832111&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;    )&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;theme&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;        plot.title &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;element_text&lt;/span&gt;(size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;14&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30&lt;/span&gt;&lt;span&gt;                                  face &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;bold&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31&lt;/span&gt;&lt;span&gt;                                  color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;),                        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32&lt;/span&gt;&lt;span&gt;        plot.background &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;element_rect&lt;/span&gt;(fill &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;black&amp;#34;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33&lt;/span&gt;&lt;span&gt;        plot.caption &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;element_text&lt;/span&gt;(color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;34&lt;/span&gt;&lt;span&gt;        plot.margin &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;margin&lt;/span&gt;(&lt;span style=&#34;color:#ff9f43&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;20&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;10&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;35&lt;/span&gt;&lt;span&gt;    )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;reproduce-complete-pipeline-diagram-data-functions-and-globals&#34;&gt;
  Reproduce Complete Pipeline Diagram (Data, Functions and Globals)
  &lt;a class=&#34;heading-link&#34; href=&#34;#reproduce-complete-pipeline-diagram-data-functions-and-globals&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The complete pipeline diagram is almost the same as the data workflow above, except that we set &lt;code&gt;tar_network(targets_only = FALSE)&lt;/code&gt; and the plot title is slightly different.&lt;/p&gt;
&lt;p&gt;To reproduce the above diagram, run the C-DBR pipeline at least once (the pipeline is stored in &lt;code&gt;.Rmd&lt;/code&gt; and needs to be rendered to &lt;code&gt;.R&lt;/code&gt; first), then execute the below code in the same working directory as the project. You can quickly get the project by git cloning &lt;a href=&#34;https://github.com/SeanFobbe/c-dbr&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/SeanFobbe/c-dbr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The dimensions for the static image are 20x20 inches at 150 dpi as PNG.&lt;/p&gt;
&lt;p&gt;Note that every publication of the C-DBR corpus alwys contains a static snapshot visual of the pipeline as PDF/PNG in the &lt;code&gt;analysis&lt;/code&gt; archive.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(targets)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(data.table)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(igraph)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;library&lt;/span&gt;(ggraph)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;edgelist &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;tar_network&lt;/span&gt;(targets_only &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;FALSE&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;$&lt;/span&gt;edges
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;setDT&lt;/span&gt;(edgelist)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;g  &lt;span style=&#34;color:#ff6ac1&#34;&gt;&amp;lt;-&lt;/span&gt; igraph&lt;span style=&#34;color:#ff6ac1&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;graph.data.frame&lt;/span&gt;(edgelist,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;                               directed &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;ggraph&lt;/span&gt;(g,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;       &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;sugiyama&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_edge_diagonal&lt;/span&gt;(colour &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;darkgoldenrod2&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_node_point&lt;/span&gt;(size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;                    color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;geom_node_text&lt;/span&gt;(&lt;span style=&#34;color:#57c7ff&#34;&gt;aes&lt;/span&gt;(label &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; name),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;                   color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;                   size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;                   repel &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff6ac1&#34;&gt;TRUE&lt;/span&gt;)&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;theme_void&lt;/span&gt;()&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;labs&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;        title &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;paste&lt;/span&gt;(&lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;C-DBR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;                      &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;| Complete dataset creation process (with functions and globals)&amp;#34;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;        caption &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;Fobbe | DOI: 10.5281/zenodo.3832111&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;    )&lt;span style=&#34;color:#ff6ac1&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#57c7ff&#34;&gt;theme&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;        plot.title &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;element_text&lt;/span&gt;(size &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff9f43&#34;&gt;14&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30&lt;/span&gt;&lt;span&gt;                                  face &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;bold&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31&lt;/span&gt;&lt;span&gt;                                  color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;),                        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32&lt;/span&gt;&lt;span&gt;        plot.background &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;element_rect&lt;/span&gt;(fill &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;black&amp;#34;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33&lt;/span&gt;&lt;span&gt;        plot.caption &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;element_text&lt;/span&gt;(color &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;white&amp;#34;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;34&lt;/span&gt;&lt;span&gt;        plot.margin &lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57c7ff&#34;&gt;margin&lt;/span&gt;(&lt;span style=&#34;color:#ff9f43&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;20&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#ff9f43&#34;&gt;10&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;35&lt;/span&gt;&lt;span&gt;    )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;a-word-of-thanks&#34;&gt;
  A Word of Thanks
  &lt;a class=&#34;heading-link&#34; href=&#34;#a-word-of-thanks&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;My special thanks go to &lt;a href=&#34;https://wlandau.github.io/about.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;William Michael Landau&lt;/a&gt; and the &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; contributors for creating such an amazing piece of software. Next to &lt;a href=&#34;https://cran.r-project.org/package=data.table&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{data.table}&lt;/a&gt; and &lt;a href=&#34;https://cran.r-project.org/package=future&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{future}&lt;/a&gt;
this is one of my all-time favorites of the R ecosystem.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;The exception to this are target factories, that is, functions that create multiple targets at once. Refer to the sections on static and dynamic branching in the &lt;a href=&#34;https://books.ropensci.org/targets/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;{targets}&lt;/a&gt; manual and have a look at some of the functions in the {tarchetypes} package.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>This is a Zero Tracking Website</title>
      <link>https://seanfobbe.com/posts/2023-10-19_zero-tracking-website/</link>
      <pubDate>Thu, 19 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-10-19_zero-tracking-website/</guid>
      <description>&lt;p&gt;I have zero trackers or cookies on my personal/academic website. Not even open-source variants.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;When I set up the website I realized I really, really don&amp;rsquo;t care who reads what when for how long&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I also realized I am too lazy to set up extra software&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cookie banners are annoying as hell&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Site loads faster&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Can&amp;rsquo;t compromise data you don&amp;rsquo;t have&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you find anything on &lt;a href=&#34;https://seanfobbe.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/&lt;/a&gt; that contradicts this (and is under my control), please let me know and I&amp;rsquo;ll take care of it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Dataset] German Federal Court of Finance Corpus (CE-BFH)</title>
      <link>https://seanfobbe.com/posts/2023-10-17_corpus-entscheidungen-bundesfinanzhof-release/</link>
      <pubDate>Tue, 17 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-10-17_corpus-entscheidungen-bundesfinanzhof-release/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7691840&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesfinanzhofs (CE-BFH)&lt;/a&gt; (Zenodo 2023)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7691842&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source Code des &amp;lsquo;Corpus der Entscheidungen des Bundesfinanzhofs&amp;rsquo; (CE-BFH-Source)&lt;/a&gt; (Zenodo 2023)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Following a long period of consolidating my previous work I am happy to announce a new dataset release!&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/doi/10.5281/zenodo.7691840&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesfinanzhofs (CE-BFH)&lt;/a&gt; is a complete collection of all decisions published by the German Federal Court of Finance (&lt;em&gt;Bundesfinanzhof&lt;/em&gt; or just &lt;em&gt;BFH&lt;/em&gt;). The dataset connects to the &lt;a href=&#34;https://www.bundesfinanzhof.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;official database&lt;/a&gt; of the  &lt;em&gt;Bundesfinanzhof&lt;/em&gt; and transforms it into a machine-readable dataset.&lt;/p&gt;
&lt;p&gt;Please make sure to read the accompanying &lt;a href=&#34;https://zenodo.org/records/7691841/files/CE-BFH_2023-10-15_Codebook.pdf?download=1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Codebook&lt;/a&gt;! The Codebook is essentially the user manual for the dataset. It contains important information if you wish to use the dataset correctly and should be the first port of call for any new and experienced user. It will also help you decide which variant is right for you. Usually I recommend the CSV variants for quantitative applications and the PDF variant for traditional research.&lt;/p&gt;
&lt;p&gt;For practitioners there is an additional variant that contains only the decisions published in the official collection (BFHE), also known as &lt;em&gt;V-Entscheidungen&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The dataset will likely be updated once or twice per year. I always post recent news about new and updated datasets to Mastodon at &lt;a href=&#34;https://fediscience.org/@seanfobbe&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;@seanfobbe@fediscience.org&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;Please note that the dataset documentation and variables are in German. One reason for this is the loss of information when translating something from German to English and back again. Another is that anyone conducting NLP on German-language documents should speak either enough German to be able to read the documentation or probably doesn&amp;rsquo;t care about the details anyway since everything is fed into an LLM without much consideration for data quality.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;workflow-diagram&#34;&gt;
  Workflow Diagram
  &lt;a class=&#34;heading-link&#34; href=&#34;#workflow-diagram&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;figure&gt;&lt;img src=&#34;https://seanfobbe.com/images/CE-BFH_2023-10-15_Pipeline_Graph_karmesinrot-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;h1 id=&#34;key-facts&#34;&gt;
  Key Facts
  &lt;a class=&#34;heading-link&#34; href=&#34;#key-facts&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Reference date: 15 October 2023&lt;/li&gt;
&lt;li&gt;Scope: 10,310 Decisions of the Federal Court of Finance (&lt;em&gt;Bundesfinanzhof&lt;/em&gt;) of the Federal Republic of Germany&lt;/li&gt;
&lt;li&gt;Formats: CSV, PDF, TXT and HTML&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;features&#34;&gt;
  Features
  &lt;a class=&#34;heading-link&#34; href=&#34;#features&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;34 variables&lt;/li&gt;
&lt;li&gt;Regular updates&lt;/li&gt;
&lt;li&gt;Public Domain (CC-Zero 1.0)&lt;/li&gt;
&lt;li&gt;Open and platform independent file formats (PDF, TXT, CSV, HTML)&lt;/li&gt;
&lt;li&gt;Extensive Codebook&lt;/li&gt;
&lt;li&gt;Compilation Report explains construction and validation of the data set in detail&lt;/li&gt;
&lt;li&gt;Large number of diagrams for all purposes (see the &amp;lsquo;ANALYSIS&amp;rsquo; archive)&lt;/li&gt;
&lt;li&gt;Diagrams are available as PDF (for printing) and PNG (for web display), tables are available as CSV for easy readability by humans and machines&lt;/li&gt;
&lt;li&gt;Secure cryptographic signatures&lt;/li&gt;
&lt;li&gt;Publication of full source code (Open Source)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;no-copyright-public-domain&#34;&gt;
  No Copyright: Public Domain
  &lt;a class=&#34;heading-link&#34; href=&#34;#no-copyright-public-domain&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The texts and metadata are in the public domain (§ 5 para 1 UrhG) as they are court decisions and official works. § 5 para 1 UrhG is also applicable to official databases via analogy, as the German Federal Court of Justice has decided (BGH, Beschluss vom 28.09.2006 - I ZR 261/03, &amp;ldquo;Sächsischer Ausschreibungsdienst&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;All of my own contributions are released into the public domain through the CC0 1.0 Universal Public Domain License.&lt;/p&gt;
&lt;h1 id=&#34;disclaimer&#34;&gt;
  Disclaimer
  &lt;a class=&#34;heading-link&#34; href=&#34;#disclaimer&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;This dataset is a private academic initiative and is in no way associated with agencies, courts or other public authorities of the Federal Republic of Germany.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Open Source Tools List Updated and Expanded</title>
      <link>https://seanfobbe.com/posts/2023-10-11_tools-update/</link>
      <pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-10-11_tools-update/</guid>
      <description>&lt;p&gt;Curious about my tech tools and workflow? I&amp;rsquo;ve updated and greatly expanded the annotated list of favorite open source tools on my website: &lt;a href=&#34;https://seanfobbe.com/code/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://seanfobbe.com/code/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Includes both general tools (browser, e-mail, operating system) and data science specific tools (R, R packages, reproducible science).&lt;/p&gt;
&lt;p&gt;German translation coming soon!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Essay] Some Thoughts on the Use of Large Language Models in the Legal Domain</title>
      <link>https://seanfobbe.com/posts/2023-07-27_some-thoughts-on-large-language-models-in-the-legal-domain/</link>
      <pubDate>Thu, 27 Jul 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-07-27_some-thoughts-on-large-language-models-in-the-legal-domain/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;Recommended Reading&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://aclanthology.org/2020.acl-main.463.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Climbing towards NLU&lt;/a&gt; (Bender and Koller 2020)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dl.acm.org/doi/10.1145/3442188.3445922&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;On the Dangers of Stochastic Parrots&lt;/a&gt; (Bender et al 2021)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dl.acm.org/doi/10.1145/3498366.3505816&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Situating Search&lt;/a&gt; (Shah and Bender 2022)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://peertube.dair-institute.org/w/o6sb7f7RwapWBJd9VC61t4&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mystery AI Hype Theater, Episode 10 - Don&amp;rsquo;t Be A Lawyer, ChatGPT&lt;/a&gt; (DAIR)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;fake-filings-in-federal-court&#34;&gt;
  Fake Filings in Federal Court
  &lt;a class=&#34;heading-link&#34; href=&#34;#fake-filings-in-federal-court&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&amp;rsquo;tis the season for AI unreason once again.&lt;/p&gt;
&lt;p&gt;This post was prompted by the recent-ish (but inevitable) news item in which an attorney used ChatGPT to generate a legal brief (including fake citations and fake case law) for another attorney to file in US Federal Court on behalf of his client (Mata v. Avianca, Inc.). And, of course, it went very, very wrong.&lt;/p&gt;
&lt;p&gt;Yes, we are at stage of the hype cycle where the output of Large Language Models (LLM) is prompting humans, not the other way around.&lt;/p&gt;
&lt;p&gt;The full case history is &lt;a href=&#34;https://www.courtlistener.com/docket/63107798/mata-v-avianca-inc/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;available on CourtListener&lt;/a&gt;. The Guardian offers a &lt;a href=&#34;https://www.theguardian.com/technology/2023/jun/23/two-us-lawyers-fined-submitting-fake-court-citations-chatgpt&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;brief review&lt;/a&gt;. I just want to highlight a few notable nuggets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&#34;https://storage.courtlistener.com/recap/gov.uscourts.nysd.575368/gov.uscourts.nysd.575368.32.1.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;apology&lt;/a&gt; is particularly interesting, esp. as a cautionary tale&lt;/li&gt;
&lt;li&gt;The attorney did not just submit fake citations, but also &lt;a href=&#34;https://www.courtlistener.com/docket/63107798/29/mata-v-avianca-inc/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fake excerpts and notarized them&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the end the attorneys and their firm were fined USD 5,000. Judge P. Kevin Castel had the following to say:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In researching and drafting court submissions, good lawyers appropriately obtain assistance from junior lawyers, law students, contract lawyers, legal encyclopedias and databases such as Westlaw and LexisNexis. Technological advances are commonplace and there is nothing inherently improper about using a reliable artificial intelligence tool for assistance. But existing rules impose a gatekeeping role on attorneys to ensure the accuracy of their filings. [The attorneys and law firm] abandoned their responsibilities when they submitted non-existent judicial opinions with fake quotes and citations created by the artificial intelligence tool ChatGPT, then continued to stand by the fake opinions after judicial orders called their existence into question.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://storage.courtlistener.com/recap/gov.uscourts.nysd.575368/gov.uscourts.nysd.575368.54.0_6.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mata v Avianca, Opinion and Order on Sanctions, 22 June 2023&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In other words: check your sources and don&amp;rsquo;t lie to the judge.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;ChatGPT Lawyer&amp;rdquo; is likely to end up becoming part of modern tech history, much as the &lt;a href=&#34;https://en.wikipedia.org/wiki/Zoom_Cat_Lawyer&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;Zoom Cat Lawyer&amp;rdquo;&lt;/a&gt; did. Although the latter is far more wholesome and one of my favorite pieces of legal internet trivia.&lt;/p&gt;
&lt;h1 id=&#34;table-of-contents&#34;&gt;
  Table of Contents
  &lt;a class=&#34;heading-link&#34; href=&#34;#table-of-contents&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#fake-filings-in-federal-court&#34;&gt;Fake Filings in Federal Court&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#side-note-on-citations&#34;&gt;Side Note on Citations&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#hype-and-hallucination&#34;&gt;Hype and Hallucination&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#large-language-models-in-the-legal-domain&#34;&gt;Large Language Models in the Legal Domain&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#legal-research&#34;&gt;Legal Research&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#legal-drafting&#34;&gt;Legal Drafting&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#summarization&#34;&gt;Summarization&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#programming-for-lawyers&#34;&gt;Programming for Lawyers&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#acknowledgements&#34;&gt;Acknowledgements&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;h1 id=&#34;side-note-on-citations&#34;&gt;
  Side Note on Citations
  &lt;a class=&#34;heading-link&#34; href=&#34;#side-note-on-citations&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The problem of fake legal citations is fixable at the technology level, but simply wasn&amp;rsquo;t a concern for the ChatGPT developers. Since LLMs operate at the word level (more often called a &lt;a href=&#34;https://en.wikipedia.org/wiki/Type%E2%80%93token_distinction&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;token&amp;rdquo;&lt;/a&gt;), one would only need to pre-process the training data to concatenate legal citations into single tokens. A citation string like &amp;ldquo;1 BvR 141/16&amp;rdquo; would be converted into 1_BvR_141/16&amp;quot; or similar.&lt;/p&gt;
&lt;p&gt;As far as we know, LLM hallucinations are not due to the creation of entirely new tokens, but due to the senseless or incorrect arrangement of known tokens from the training data. So a specialized legal LLM would not necesarily suffer from incorrect citations, but the fake quotes are more difficult to fix.&lt;/p&gt;
&lt;p&gt;One would, of course, need to invest a fair amount of money to gather all relevant citation patterns. Presumably many legal publishers have already done so years ago. Even for new entrants into the market, given the volume of announced investments, this seems like a feasible effort.&lt;/p&gt;
&lt;h1 id=&#34;hype-and-hallucination&#34;&gt;
  Hype and Hallucination
  &lt;a class=&#34;heading-link&#34; href=&#34;#hype-and-hallucination&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Following the recent hype arounds LLMs it is unsurprising that all sorts of actors are under pressure to invest in and deliver LLMs for their customers and stakeholders. OpenAI led the charge with ChatGPT, GPT-3 and GPT-4, Microsoft immediately partnered with OpenAI to bring Bing out of its twilight exile and Google was forced to prematurely announce Bard in a desperate bid to maintain control of the search market. A number of other organizations have announced billion dollar investments into generative AI.&lt;/p&gt;
&lt;p&gt;The legal profession has  been anything but unaffected by the hype, with many firms trying to apply one of the GPT variants to legal problems, some companies offering custom legal models of unknown quality or developing entirely new offerings. Even the famously  tech-averse, risk-averse  and conservative German judiciary has announced the development of a &lt;a href=&#34;https://www.bayern.de/einsatz-kuenstlicher-intelligenz-in-der-justiz-bayern-und-nrw-entwickeln-und-erproben-gemeinsam-juristisches-sprachmodell-wissenschaftlich-begleitet-von-der-tum-und-der-universitaet-zu-koeln-ant/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;custom language model for judicial use&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But is this a reasonable response? People who stand to earn a lot of money from generative AI certainly think so. Already there are claims that the &lt;a href=&#34;https://podclips.com/c/f4v5xg&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;The AI Revolution Will Be More Significant Than the Agricultural Revolution&amp;rdquo;&lt;/a&gt;  (Sam Altman, CEO of OpenAI) or that &lt;a href=&#34;https://a16z.com/2023/06/06/ai-will-save-the-world/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;AI will save the world&amp;rdquo;&lt;/a&gt; (Marc Andreessen).&lt;/p&gt;
&lt;p&gt;If I were hoping to sell a billion subscriptions that&amp;rsquo;s what I&amp;rsquo;d be telling my customers and investors as well. In his &lt;a href=&#34;https://a16z.com/2023/06/06/ai-will-save-the-world/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;article&lt;/a&gt; Andreessen lambasts bootleggers, meaning &amp;ldquo;self-interested opportunists who stand to financially profit by the imposition of new restrictions, regulations, and laws&amp;rdquo;. He conveniently  forgets to mention  &lt;a href=&#34;https://en.wikipedia.org/wiki/Snake_oil&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;snake oil salesmen&lt;/a&gt; &amp;mdash; people who profit immensely from selling the &amp;ldquo;next big thing&amp;rdquo;, regardless of whether it is useful or not.&lt;/p&gt;
&lt;p&gt;On a technical level, LLMs currently rely on &amp;ldquo;Transformer&amp;rdquo; technology. Transformers &amp;ldquo;learn&amp;rdquo; about text by being fed sequences of words, with the final word masked. The model then has to guess the masked word. &lt;a href=&#34;https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Stephen Wolfram&lt;/a&gt; has a more detailed and excellent write-up of the details.&lt;/p&gt;
&lt;p&gt;So the sentence &amp;ldquo;It is illegal to commit murder&amp;rdquo; is fed to the algorithm as &amp;ldquo;It is illegal to commit [???]&amp;rdquo;. After being fed incredible amounts of data, the model might learn that &amp;ldquo;murder&amp;rdquo; is 30% probably, &amp;ldquo;theft&amp;rdquo; is 20% probable and &amp;ldquo;crimes&amp;rdquo; is 10% probable. With a larger context window than this short sentence the guesses become better suited to the prompt.&lt;/p&gt;
&lt;p&gt;There is also a &amp;ldquo;temperature&amp;rdquo; parameter, which defines a certain probability to randomly select a lower-ranked word, because this makes texts &amp;ldquo;more interesting&amp;rdquo;. Essentially this means two levels of probability: the probabilities of the next likely words mixed with the probability of a lower-ranked word being selected.&lt;/p&gt;
&lt;p&gt;On a more philosophical level, much has been made of the emergent abilities of LLMs, which at certain scales appear to suddenly exhibit abilities like natural language understanding, logical reasoning or even conscience. But do they? &lt;a href=&#34;https://arxiv.org/pdf/2304.15004.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Schaeffer, Miranda and Koyejo (2023 / pre-print)&lt;/a&gt; call this view into question, arguing that &amp;ldquo;emergent&amp;rdquo; abilities are simply a result of nonlinear/discontinuous metrics and completely disappear if you change the evaluation method.&lt;/p&gt;
&lt;p&gt;In brief, Transformers try to guess the next word based on the input prompt, given the probabilities it has learned from large amounts of text. This also means that Transformers create plausible text, but at the fundamental technical level do not understand it (&lt;a href=&#34;https://dl.acm.org/doi/10.1145/3442188.3445922&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Bender et al 2021&lt;/a&gt;), whatever &amp;ldquo;understanding&amp;rdquo; may mean in this context. Nor does the underlying technology provide them with any reasoning capabilities, except by accidental and plausible regurgitation of training data (&lt;a href=&#34;https://dl.acm.org/doi/pdf/10.1145/3498366.3505816&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shah and Bender 2022: 222&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Where does that leave us? There are plenty of theoretical reasons to suppose that LLMs are unlikely to be some kind of super-intelligence, but instead are more akin to &lt;a href=&#34;https://aclanthology.org/2020.acl-main.463.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;stochastic parrots&amp;rdquo; (Bender et al 2021)&lt;/a&gt; or &amp;ldquo;spicy autocomplete&amp;rdquo;.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;I am not an expert in LLMs so I cannot speak to the technical and mathematical quality of the critiques, but it seems rather likely that a huge string prediction engine trained on (allegedly) mostly internet text would turn out to be nothing more than a huge string prediction engine producing remixed internet text.&lt;/p&gt;
&lt;h1 id=&#34;large-language-models-in-the-legal-domain&#34;&gt;
  Large Language Models in the Legal Domain
  &lt;a class=&#34;heading-link&#34; href=&#34;#large-language-models-in-the-legal-domain&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The legal profession has never had access to one or more all-powerful, all-knowing AIs before (if they are that), nor to fancy string-prediction enginees (my guess). And yet, the work is still getting done. So what would you use LLMs for?&lt;/p&gt;
&lt;p&gt;Some tasks one could apply LLMs to include ideation, legal research, legal drafting, summarization and programming for lawyers. Naturally, there are many more potential applications. This list is certainly not comprehensive, but rather an opportunity to structure my own thinking on this topic.&lt;/p&gt;
&lt;h2 id=&#34;ideating&#34;&gt;
  Ideating
  &lt;a class=&#34;heading-link&#34; href=&#34;#ideating&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Ideating seems like an ideal use case for LLMs. You throw a prompt at your favorite chatbot, the chatbot replies with a couple of ideas, you pick your favorite and voilà, your fantastic new project is out of the brainstorming/-writing phase and on its way to becoming reality.&lt;/p&gt;
&lt;p&gt;At this stage of the process, truth, safety and copyright aren&amp;rsquo;t an issue. Whether something actually works isn&amp;rsquo;t a concern during brainstorming, as long as it plausibly could and can make the shortlist for further investigation. Safety is also not (yet) engaged. Everything occurs under the purview of a human and can only become reality through human action. Finally, ideas aren&amp;rsquo;t copyrightable in general, no matter where the idea is taken from.&lt;/p&gt;
&lt;p&gt;If academic norms apply to you, you might get in trouble for plagiarism, but this a professional code of ethics that is enforced with professional censure, not legal sanctions (usually).&lt;/p&gt;
&lt;p&gt;I assume this might be viable use case, depending on your needs? I&amp;rsquo;ve tried ideating with some of the publicly available chatbots and in my (very limited!) experience it was rather&amp;hellip;disappointing. The results were sort of acceptable, but if you&amp;rsquo;ve spent any amount of time ruminating on your problem the results weren&amp;rsquo;t any kind of game-changer.&lt;/p&gt;
&lt;p&gt;This is probably one of the real limitiations of ideating with LLMs: the suggestions are derivative of whatever exists in its training data. However, we need creative thinking most when we have new problems that need new solutions. Of course human creativity is also derivate of existing cultural patterns, but humans have access to their own lived experience to add a very recent and unique twist to their thoughts, something which is not represented well in textual data alone.&lt;/p&gt;
&lt;p&gt;Maybe LLM ideating will be useful? For some people? I&amp;rsquo;m not sure, but if you find that the more pedestrian creativity hacks like talking a walk, making a cup of tea, talking to people or having some fun don&amp;rsquo;t work for you I suppose it could become a tool in your arsenal.&lt;/p&gt;
&lt;h1 id=&#34;legal-research&#34;&gt;
  Legal Research
  &lt;a class=&#34;heading-link&#34; href=&#34;#legal-research&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Legal research is arguably the hardest problem for an LLM to tackle. The current transformer technology is, at its core, nothing more than a prediction of the next likeliest word given its input context window, with some additional randomness thrown in (&amp;ldquo;temperature&amp;rdquo;) to make the text a little spicier. You might get what you are looking for from your prompt, but maybe there is a 80% chance it&amp;rsquo;ll add some spice to your results to make them more fun, but less relevant to you. Recall the ChatGPT lawyer. If you present fake citations and fake direct quotes to an irate judge, spice will not make them play nice.&lt;/p&gt;
&lt;p&gt;Legal research &amp;mdash; and more generally, information retrieval (IR) &amp;mdash; has two fundamental requirements (&lt;a href=&#34;https://dl.acm.org/doi/10.1145/3498366.3505816&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shah and Bender 2022&lt;/a&gt;):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Truth&lt;/li&gt;
&lt;li&gt;Relevance&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you go looking for something, your result must should be both true and relevant to your search to be useful. If it is untrue, but relevant, you have not retrieved anything, you have created something. If it is true, but irrelevant, you may have learned something new about the world, but not solved your problem.&lt;/p&gt;
&lt;h2 id=&#34;truth&#34;&gt;
  Truth
  &lt;a class=&#34;heading-link&#34; href=&#34;#truth&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Truth in this sense can be either &lt;a href=&#34;https://plato.stanford.edu/entries/truth-correspondence/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;correspondence  (correspond to the &amp;ldquo;real&amp;rdquo; world, whatever that may be)&lt;/a&gt; or &lt;a href=&#34;https://plato.stanford.edu/entries/truth-coherence/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;coherence (deriving from an accepted body of knowledge)&lt;/a&gt;. A true correspondence fact might be a the location of a physical item, a true coherence fact might be the authentic text of a judgment of the European Court of Human Rights, irrespective of whether the content corresponds to reality or not. The kind of truth you are seeking depends on your problem and your associated query.&lt;/p&gt;
&lt;p&gt;In the legal domain, the sources of truth for LLMs are both very good and very bad at the same time.&lt;/p&gt;
&lt;p&gt;The source of truth are bad, since the training data most likely contains all or most of the text on the internet and if you believe everything on the internet you probably have (a) never been online before or (b) are terribly naive. This internet text also contains some of the most offensive and immoral content on the planet, which can only be imperfectly removed from the training data through automatic means and surfaces every once in a while through clever prompting or sheer accident.&lt;/p&gt;
&lt;p&gt;The sources of truth are also very good at the same time, because (modern) law is one of the few domains that possesses one or more authorized corpora of knowledge (laws, regulations, judgments, other government documents) that are both hierarchical and &amp;ldquo;true&amp;rdquo; by fiat. You may feel incandescent rage at the holdings and reasoning of certain Supreme Court judgments, but it doesn&amp;rsquo;t change the fact that they form authentic interpretations of the law of the land and you must either adhere to them or oppose them as such &amp;mdash; but you cannot ignore their power.&lt;/p&gt;
&lt;p&gt;Now, what happens if you combine bad sources of truth and good sources of truth? It is really anyone&amp;rsquo;s guess what kind of fuzzy truth value an individual query will produce and I think that is part of the problem.&lt;/p&gt;
&lt;p&gt;If the query produces novel text that is supposed to contain the answer to your question, every word, every sentence, is potentially suspect and will require you to verify its truth value manually. If the answer to the query is trivial and you can verify it immediately, you probably never needed to search for it with an LLM in the first place. If confirming the veracity of the result is difficult, you will need to rely on a second search engine or other outside knowledge to confirm the truth value, which is silly and time-consuming.&lt;/p&gt;
&lt;p&gt;In most of the interesting cases it will also be hard to decide whether something is true or false in a binary sense, but our willingness to accept something provisionally as truth will depend on the quality of the methods underlying the result. This applies to most empirical research in the natural and social sciences. If you generate a plausible result with a rigorous randomized controlled trial I will be more inclined to believe it than if you probabilistically recombined some input text and claim that your AI god delivered it from heaven in response to your prompting prayer.&lt;/p&gt;
&lt;p&gt;Since it is computatonally infeasible or philosophically impossible to compile a complete list of all possible queries with all possible responses, it also not possible to test either the whole universe of queries or even a representative sample, because there is no sampling frame. No matter how much testing one does, it always remains possible to end up in some kind of local minimum were the training data is sparse and truly bizare results occur.&lt;/p&gt;
&lt;p&gt;And even if it were possible to appropriately sample and test the model, the complex end-to-end interrelations between everything in such a model mean that everytime the training data changes substantially, one would have to rerun all tests to discover how likely a truthful response might be.&lt;/p&gt;
&lt;p&gt;As the ChatGPT lawyer learned, even if the machine appears to be quoting from a judgment and swears to its correctness, you cannot trust it. I am therefore skeptical that this mode of operation will enhance legal research, simply because the cost-benefit ratio of checking the full output will be worse than performing the research some other way. Essentially, you are doing the research twice.&lt;/p&gt;
&lt;p&gt;If the query produces links to a document or provides a selection of authorized excerpts of a document from a trusted database and ranks them for you, I could see LLMs serving a role to meet legal research needs. But this raises the question of relevance.&lt;/p&gt;
&lt;h2 id=&#34;relevance&#34;&gt;
  Relevance
  &lt;a class=&#34;heading-link&#34; href=&#34;#relevance&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Finding relevant legal documents is no fun. Or rather, it is no fun with the commercial and non-commercial legal databases I have had access to in my legal life until now. Let us name no names, because hell hath no fury like a database scorned.&lt;/p&gt;
&lt;p&gt;If you know exactly what you are looking for, most legal databases have worked fine for me, with some notable exceptions. With a few databases, even a single typo in the docket number can invalidate your query (looking at you, official German federal court databases).&lt;/p&gt;
&lt;p&gt;Given that it is 2023, this is awful, but it is how it is. If the databases are publicly indexable, it is often easier to run a Google search and then click the deeplink.&lt;/p&gt;
&lt;p&gt;Now, this would appear to provide an excellent opportunity for an LLM to steal the spotlight by providing search that understands what you &lt;em&gt;really&lt;/em&gt; want and to provide it to you. Again, if it provides you with a custom text to serve your answer, everything is suspect. But what if it only selects from a finite set of responses from an approved database (e.g. documents or parts of documents)?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://dl.acm.org/doi/10.1145/3498366.3505816&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shah and Bender (2022)&lt;/a&gt; have commented much more eloquently and expertly on this problem than I could, so I refer you to their paper for a detailed critique. As I understand the paper, search is a complex activity which relies on much information that cannot easily be transmitted to or reasoned over by the executing machine and therefore the machine alone cannot fully replicate the user&amp;rsquo;s close cooperation, context-bound information needs and regular updating of relevance considerations in response to the machine&amp;rsquo;s output.&lt;/p&gt;
&lt;p&gt;In terms of opacity, the search functionalities of commercial and non-commercial databases are already so opaque that I do not believe that an LLM would add an extra layer of inscrutability, certainly no more than any other algorithms available.&lt;/p&gt;
&lt;p&gt;So. Retrieving approved information objects from a database ranked by relevance via LLM might work? I am told it would be computationally more expensive than current approaches, but I am not expert enough to comment on their efficiency. Time will tell, I think.&lt;/p&gt;
&lt;p&gt;Personally, I use explicit computer-assisted search functionalities almost exclusively to locate pieces of information that I already know or suspect to exist. Of the three search scenarios mentioned in &lt;a href=&#34;https://dl.acm.org/doi/10.1145/3498366.3505816&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shah and Bender (2022: 225)&lt;/a&gt;, I usually only carry out computer search to accomplish specific tasks. For exploration and learning I find a more social and linked reading search on &lt;a href=&#34;https://doi.org/10.1145/3498366.3505816&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Connected Papers&lt;/a&gt; or &lt;a href=&#34;https://www.wikipedia.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wikipedia&lt;/a&gt; to be much more useful, followed by books, review papers, newspaper articles and information nuggets gleaned from social media. This mirrors the search patterns described by &lt;a href=&#34;https://dl.acm.org/doi/10.1145/3498366.3505816&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shah and Bender (2022: 223&amp;ndash;224)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not sure that I would profit much from LLM search, but I have been wrong before.&lt;/p&gt;
&lt;h1 id=&#34;legal-drafting&#34;&gt;
  Legal Drafting
  &lt;a class=&#34;heading-link&#34; href=&#34;#legal-drafting&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Blank page syndrome is bad, writer&amp;rsquo;s block is worse. Everyone who has written more than a few paragraphs knows the dreaded  nothingness of a white screen on which our lucid thoughts and witty banter should be surfacing  in pleasing regularity.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;. And if you stare too long into the abyss of the editor, the editor stares back at you.&lt;/p&gt;
&lt;p&gt;Writer&amp;rsquo;s block is a serious problem. I have been waiting for more than 12 years for Patrick Rothfuss to finish &lt;a href=&#34;https://kingkiller.fandom.com/wiki/The_Doors_of_Stone&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Doors of Stone&lt;/a&gt;. Clients do not have 12 years. Sometimes 12 hours are too long. Perhaps an LLM can speed up this process, at least for the busy lawyer?&lt;/p&gt;
&lt;p&gt;It depends. Legal drafting knows roughly three archetypes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Templating&lt;/li&gt;
&lt;li&gt;Modular drafting (boilerplate)&lt;/li&gt;
&lt;li&gt;Bespoke drafting&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;templates&#34;&gt;
  Templates
  &lt;a class=&#34;heading-link&#34; href=&#34;#templates&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Templates are one of the foundations of the legal world. Templates save time and money, ensure consistent style and reduce legal risk through tried-and-court-tested language. The archetypical template is a complete and internally consistent document designed for a specific purpose (e.g. a non-disclose agreement, but also model laws or instruments of ratification) and only contains some variables such as the names of the parties, addresses and fields for dates and signatures. You create it once and you&amp;rsquo;re done (the exception being updates due to changes in legal or factual circumstances). Variables can be filled automatically from a database or mindlessly by hand.&lt;/p&gt;
&lt;p&gt;The promise of LLMs includes the ability to call up custom templates for any kind of legal situation at a moment&amp;rsquo;s notice. Unfortunately, producing a perfect, ready-to-use and court-proof template is (currently) out of scope for LLMs. The stochastic nature of the text-generating process means that every word is possibly suspect, so the entire text needs to be double-checked by a legal professional with appropriate expertise.&lt;/p&gt;
&lt;p&gt;Whereas standard templates have almost zero marginal labor cost, LLM-generated templates incur a non-trivial cost with each usage, making LLMs unsuitable for on-demand archetypical templates.&lt;/p&gt;
&lt;h2 id=&#34;modular-drafting&#34;&gt;
  Modular Drafting
  &lt;a class=&#34;heading-link&#34; href=&#34;#modular-drafting&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Full templates are quite inflexible and therefore only applicable to a limited class of problems that is easily automated and requires next to no judgment calls. Most legal problems are routine, but do require some measure of customized judgment. Also, lawyers need to keep busy to justify their significant salaries, so &amp;ldquo;templating and chill&amp;rdquo; will not satisfy internal and external clients.&lt;/p&gt;
&lt;p&gt;Modular drafting is a form of semi-templating. The building blocks (modules) are themselves small templates (boilerplate) and then recombined according to data-driven rules at scale or human judgment in an individual workflow. These building blocks could be single sentences, but also paragraphs, whole sections or even entire documents. Like full templates, these modules may be static or contain variables for fields such as dates, currency, names etc.&lt;/p&gt;
&lt;p&gt;Modern contract generators and contract lifecycle management (CLM) systems exemplify this archetype. A database of pre-approved clauses is available, which are selected through automated rules (auto-templates), drag and drop, or by a user working their way through a guided questionnaire. The database manager can then provide suggested clauses (users who used clause A may also want clause B), prohibit combinations (it may be illegal to combine X with Y),  keep the database under centralized version control, roll out updates quickly and perform statistical analysis on usage and gauge legal exposure across an entire organization.&lt;/p&gt;
&lt;p&gt;As I see it, there are two ways to integrate LLMs into modular drafting:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Insofar as modular drafting with LLMs is performed in a manner similar to templating (e.g. LLM-generating building blocks and then custom-combine or LLM-combine them), the issues are the same. Each final document would need to be expert-checked, defeating the speed and cost benefits of modular drafting.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;However, LLMs can also be used elsewhere in the pipeline, such as through suggesting pre-approved modules and extracting variables from source documents (feature extraction) to produce a first draft. It is my understanding that these steps are integrated into the workflow underlying &lt;a href=&#34;https://rsw.beck.de/aktuell/daily/magazin/detail/frauke-richtet&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;FRAUKE&lt;/a&gt;, an electronic drafting assistant for judgments in air passenger rights cases currently being trialled in the district court (Amtsgericht) of Frankfurt (Germany). However, I have no further insight into the project and do not know if FRAUKE uses an LLM or a different machine learning approach.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The second option does have some merit. I am slightly concerned about the use of LLMs as feature extractors, since standard annotated NLP workflows appear to perform better and errors are more easily corrected with updated annotations (&lt;a href=&#34;https://explosion.ai/blog/against-llm-maximalism/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Honnibal 2023&lt;/a&gt;). However, LLM results might be acceptable, since some human review is required in any case.&lt;/p&gt;
&lt;p&gt;LLMs might also come in handy where there are no rule-based methods for extracting the desired features and the setting is zero-shot or few-short learning. Suggesting pre-approved modules is probably fine in terms of legal quality (although it might miss problematic combinations) and might also be acceptable in a normative sense, since both the modules and the final result are subject to human review.&lt;/p&gt;
&lt;h2 id=&#34;bespoke-drafting&#34;&gt;
  Bespoke Drafting
  &lt;a class=&#34;heading-link&#34; href=&#34;#bespoke-drafting&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Bespoke drafting is the most time-consuming type of legal drafting, making the LLM shortcut an especially attractive option. However, it is also the most challenging variant, since the underlying problem is probably rare or unique and requires a custom solution. Examples include international treaties, acts of parliament, superior court judgments, high-value contracts and academic papers, but also less dramatic work products with more interpersonal character such as client correspondence, meeting records or memos.&lt;/p&gt;
&lt;p&gt;Since a custom draft requires custom review and editing of the whole document in any case, using an LLM to produce a first draft or provide helpful suggestions might prove beneficial. Having an LLM produce an unchecked final draft is almost always a terrible idea, since its stochastic nature, disregard of truth and lack of legal subroutines will result in a document that is not fit for use. In the judiciary, a human decision (at least in Germany) is always required.&lt;/p&gt;
&lt;p&gt;However, drafting is only part of the workload. The more complex types of text (e.g. judgments, normative documents) will need much time spent debating and negotiating their content with other humans, work that cannot easily (or at all) be delegated to an LLM. They may also be very research-intensive, so the actual bottleneck in document production may not even be the drafting step. In many cases drafting and research are also a combined activity and cannot be split, with one part being delegated. Complex correspondence or legal memos are no different. The actual time saved might be less than hoped for, particularly since LLM ouput can also be tricky to get right. Spending an hour on prompt engineering instead of drafting and research provides no benefit at all.&lt;/p&gt;
&lt;p&gt;Simple correspondence might be a good use case for an LLM, since it requires little to no research and can be verified quickly. However, there is the very real danger of lawyers &amp;lsquo;fluffing&amp;rsquo; up their texts with an LLM, which are then fed into the busy respondent&amp;rsquo;s LLM to compress them back to a readable size. The result is a loss of information, waste of time, money and energy, since LLMs solve problems they themselves created in the first place.&lt;/p&gt;
&lt;p&gt;All of this applies to business, legal practice and public office. The norms governing the use of LLM-assistance in academic work (as opposed to LLMs as an  object of study) are still very much in flux, but since there are no reliable ways of detecting generated text, I assume the use of LLMs will be tolerated in the long-term, since there is no way of barring them without unacceptable collateral social damage. I do feel that LLMs are at their weakest in academic settings, since they remix known content in a plausible manner but without being properly embedded in accepted bodies of knowledge or access to empirical reality (no, the internet is NOT an acceptable substitute for empirical reality). Although, they might be a boon to English as a Second Language speakers (ESL), who could gain access to more sophisticated phrasings, albeit likely at the price of misrepresenting their own work.&lt;/p&gt;
&lt;h2 id=&#34;mixed-drafting&#34;&gt;
  Mixed Drafting
  &lt;a class=&#34;heading-link&#34; href=&#34;#mixed-drafting&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;While you do encounter these pure archetypes, legal drafting is just as often a combination of two or three of them. You might combine several modular paragraphs with some bespoke drafting to build a full template for a certain class of tasks and then add some further bespoke drafting to individualize each document to a certain set of circumstances. This happens in mass litigation, but also in contract generation, if you have the authority to add custom modifications (as in consumer or small business settings).&lt;/p&gt;
&lt;p&gt;With mixed drafting, one encounters all of the dangers of LLMs at the same time.&lt;/p&gt;
&lt;p&gt;Furthermore, one risks the imposition of bias through the helpful suggestion of specific language. LLM training data is what humans have written and published, which is, naturally, biased and tends to privilege men over women, majorites over minorites, white people over BIPOC, able-bodied over the disabled, neuro-typical over neuro-divergent and so on. The sensitive, experienced and skilled writer may spot these subtle influences and correct them, but the  less sensitive, the less experienced and the less skilled an LLM-assisted legal drafter is, the more these subtle biases will creep into their writing.&lt;/p&gt;
&lt;p&gt;Or maybe they will do so anyway? Legal writing is often unnecessarily obtuse in an attempt by inexperienced writers to signal knowledge through formality (I have been guilty of this many times). This is not a new trend, but I assume LLMs would reinforce it.&lt;/p&gt;
&lt;p&gt;LLMs reproduce averages and defaults. We know from decades of working with computers, that very few people are willing and able to challenge the defaults of programs.&lt;/p&gt;
&lt;h1 id=&#34;summarization&#34;&gt;
  Summarization
  &lt;a class=&#34;heading-link&#34; href=&#34;#summarization&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The automatic summarization of texts seems useful at first glance. I have often been assured by business leaders that they would take an imperfect summary any day over having to read lengthy documents. However, as we know from academic papers, the devil is in the detail. Summarization is actually a form of information retrieval, but limited to a single document instead of a full database. The person reading the summary wants to know what is actually in the document (truth), but also what is most important (relevance).&lt;/p&gt;
&lt;p&gt;Therefore, much of the conderations regarding information retrieval and research also apply to summarization. Relevance is human-made and can change in the blink of an eye due to outside circumstances, changes that are difficult to incorporate into an LLM quickly. Maybe this will change with smaller model sizes?.&lt;/p&gt;
&lt;p&gt;Using an LLM for summarization seems feasible to discover the rough subject of the document, but I would not rely on it to extract key holdings or arguments.&lt;/p&gt;
&lt;h1 id=&#34;programming-for-lawyers&#34;&gt;
  Programming for Lawyers
  &lt;a class=&#34;heading-link&#34; href=&#34;#programming-for-lawyers&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Programming for lawyers is a large maybe. I&amp;rsquo;ve been assured by friends and colleagues that using ChatGPT or GitHub Copilot is great for learning and assisted coding and has helped them very much. On the flip side, I&amp;rsquo;ve also seen someone on Mastodon mention (third-hand account) how a student deleted important data by overlooking an &amp;ldquo;rm -rf *&amp;rdquo; statement (or similar) in the generated code. For the non-programmers: this command recursively force-deletes all files in the current and all sub-directories where it is executed.&lt;/p&gt;
&lt;p&gt;Personally I like puzzling out coding solutions myself and avoid even the basic assistance provided by IDEs like RStudio (I code in Emacs). So I am probably very much the wrong person to sweeping claims about the usefulness of LLM-assisted coding.&lt;/p&gt;
&lt;p&gt;But I do have one point: the challenge in writing code is not writing the code. It&amp;rsquo;s figuring out what you want the code to do. Especially if it&amp;rsquo;s statistical programming and the code is doing some complicated math.&lt;/p&gt;
&lt;p&gt;If you want to generate a plot and format it nicely, that might work. But it might also do something wrong and unless you understand rather well what the code does, the resulting diagram might completely mislead you.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s even worse with statistical modeling. Consider a simple case: linear regression. Of course you can have it create the model for you based on a rough description, run the code and explain the results. But should you trust its output? I think not.&lt;/p&gt;
&lt;p&gt;To be fair, there is enough linear regression content on the internet that it might do a fair job on toy problems. But as soon as you move off the well-trodden path (as you most likely will need to do for a new problem), all bets are off. There are also many more considerations to modeling, such as feature extraction, feature selection, data quality, measurement error, missing data, causal diagrams, researcher degrees of freedom and even the elephant in the room of whether frequentist statistics is appropriate to your research question at all.&lt;/p&gt;
&lt;p&gt;Statistical programming already suffers from too much mindless ritual and too little careful thought. I doubt that LLMs will improve the situation.&lt;/p&gt;
&lt;h1 id=&#34;conclusion&#34;&gt;
  Conclusion
  &lt;a class=&#34;heading-link&#34; href=&#34;#conclusion&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;LLMs and transformer technology are here to stay, although I have serious doubts as to  whether they will improve the practice or business of law as much as their proponents claim. I do see some modest opportunities, but nowhere near the potential that evangelists preach. Mostly, I think, people will be disappointed.&lt;/p&gt;
&lt;p&gt;If you have well-functioning data infrastructure, a competent data team and well-trained end-users there should be a fair number of possibilities one could explore. But who can afford all three?&lt;/p&gt;
&lt;p&gt;The more complex a legal task, the more likely we are to look for some kind of magic to solve our problems. But the quality of Transformers appears to degrade with increasing task complexity (&lt;a href=&#34;https://arxiv.org/abs/2305.18654&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dziri et al 2023&lt;/a&gt; / pre-print). We also stand at the cusp of an era in which LLM-generated text will vastly outstrip human text, probably causing catastrophic failures in future LLMs due to training new models on auto-generated LLM text (&lt;a href=&#34;https://arxiv.org/abs/2305.17493&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shumailov et al 2023&lt;/a&gt; / pre-print). Down-sizing models also appears to be more difficult than first thought (&lt;a href=&#34;https://arxiv.org/abs/2305.15717&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gudibande et al 2023&lt;/a&gt; / pre-print). Securing models is unsuprisingly problematic, given their size, opacity and complexity (&lt;a href=&#34;https://arxiv.org/abs/2209.15259&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;El-Mhamdi et al 2023&lt;/a&gt; / pre-print). The hype around LLMs as some sort of novel intelligence also completely ignores the fact that they are more akin to data-washing, hiding the immense amount of &amp;ldquo;data labor&amp;rdquo; performed by low-paid gig workers or outright data theft from skilled authors and artists that goes into providing their fuel (&lt;a href=&#34;https://arxiv.org/pdf/2305.13238.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Li et al 2023&lt;/a&gt; / pre-print)&lt;/p&gt;
&lt;p&gt;If you take into account these limitations in producing quality output, the sheer amount of work and therefore cost (infrastructure, data labor, end-user training) required to make LLMs perform well and their likely degradation in the future, this will probably limit their medium-term to long-term applications.&lt;/p&gt;
&lt;p&gt;Naturally, technology as a whole always improves, but this does not mean that this specific technology will. Remember Blockchain, which started as the future of finance and is still as energy-hungry and inefficient as ever. Despite all the advances in AR/VR technology the Metaverse still remains useless and in solid &amp;ldquo;Ok, Boomer&amp;rdquo; territory.&lt;/p&gt;
&lt;p&gt;Of course everything might turn out differently. Predictions are hard &amp;mdash; especially if they concern the future.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h1 id=&#34;acknowledgements&#34;&gt;
  Acknowledgements
  &lt;a class=&#34;heading-link&#34; href=&#34;#acknowledgements&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;I am very grateful to the work that Emily Bender, Timnit Gebru, Margaret Mitchell and their colleagues at the Distributed AI Resarch Institute (DAIR) have been doing in this space. I do not know them personally, but their work has significantly informed and influenced my thinking on the subject of this essay.&lt;/p&gt;
&lt;p&gt;This essay contains no LLM-generated text and especially no tiresome &amp;ldquo;did you notice that what you were reading was generated by AI&amp;rdquo; tropes.&lt;/p&gt;
&lt;!--


https://medium.com/@emilymenonbender/thought-experiment-in-the-national-library-of-thailand-f2bf761a8a83

--&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;This is is attributed to someone, but I can&amp;rsquo;t find a primordial citation.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;To be fair, I wrote this text in Emacs with the Wombat theme, so it is more of a very dark gray screen.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Attributing this aphorism opens up an interesting rabbithole: &lt;a href=&#34;https://quoteinvestigator.com/2013/10/20/no-predict/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://quoteinvestigator.com/2013/10/20/no-predict/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>[New Recording/Slides] International Legal Data in Action (FGV Rio Workshop)</title>
      <link>https://seanfobbe.com/posts/2023-03-23_fgv-worshop-international-legal-data-in-action/</link>
      <pubDate>Thu, 23 Mar 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-03-23_fgv-worshop-international-legal-data-in-action/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/record/7738453&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Slides for &amp;lsquo;International Legal Data in Action&amp;rsquo;&lt;/a&gt; (Zenodo 2023)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://youtube.com/live/cRoYh4xbdhU&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Recording of Panel I&lt;/a&gt; (FGV Workshop 2023)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://www.youtube.com/watch?v=V-ZAE9kMVlM&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Recording of Panel II&lt;/a&gt; (FGV Workshop 2023)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;fgv-workshop&#34;&gt;
  FGV Workshop
  &lt;a class=&#34;heading-link&#34; href=&#34;#fgv-workshop&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Last week I delivered an online presentation titled &lt;a href=&#34;https://zenodo.org/record/7738453&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;lsquo;International Legal Data in Action: Ideas and Applications for the ICJ and PCIJ&amp;rsquo;&lt;/a&gt; during Panel II of the Fundação Getulio Vargas (FGV) Workshop &lt;a href=&#34;https://www.cejmfgv.com/event-details-registration/workshop-transforming-the-role-of-international-courts-and-tribunals-in-a-new-era-of-adjudication&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;ldquo;Transforming the Role of International Courts and Tribunals in a New Era of Adjudication&amp;rdquo;&lt;/a&gt; on 16 March 2023. The event was streamed live on YouTube and links to recordings are included in the infobox above. I have also published the slides for the presentation, also linked in the infobox.&lt;/p&gt;
&lt;h1 id=&#34;abstract&#34;&gt;
  Abstract
  &lt;a class=&#34;heading-link&#34; href=&#34;#abstract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;There can be no Data Science without data. However, the availability of legal data sets, particularly corpora in international law, has been rather limited until recently. In this presentation I discuss two new and high-quality international legal sets for the International Court of Justice (ICJ) and the Permanent Court of International Justice (PCIJ). These corpora collect the full-texts and metadata for all majority and minority opinions of both Courts from 1922 to 2022 and are fully compatible with each other. The ICJ corpus is updated twice a year with new data.&lt;/p&gt;
&lt;p&gt;I further outline research questions and methods to put this international legal data into action. These include doctrinal analysis, citation analysis, social network analysis and geospatial analysis of full-texts and metadata. References to relevant papers provide an introduction to the research problems and methdologies for researchers who wish to tackle them. The presentation closes with a call for replication though the publication of source code and data.&lt;/p&gt;
&lt;h1 id=&#34;download-data-sets&#34;&gt;
  Download Data Sets
  &lt;a class=&#34;heading-link&#34; href=&#34;#download-data-sets&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3840479&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;academic-paper&#34;&gt;
  Academic Paper
  &lt;a class=&#34;heading-link&#34; href=&#34;#academic-paper&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Fobbe, S. (2022). Introducing Twin Corpora of Decisions for the International Court of Justice (ICJ) and the Permanent Court of International Justice (PCIJ). Journal of Empirical Legal Studies, 19(2), 491-524. &lt;a href=&#34;https://doi.org/10.1111/jels.12313&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.1111/jels.12313&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Article] The Length of Proceedings before the German Constitutional Court</title>
      <link>https://seanfobbe.com/posts/2023-01-02_bverfg-verfahrensdauer/</link>
      <pubDate>Mon, 02 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2023-01-02_bverfg-verfahrensdauer/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.25527/re.2022.03&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Fobbe, Seán. &amp;ldquo;Sind zwanzig Jahre zuviel? Die Dauer von Verfahren vor dem Bundesverfassungsgericht&amp;rdquo;&lt;/a&gt; (RECHTS|EMPIRIE 2022)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.7133363&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source Code&lt;/a&gt; (Zenodo)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;background&#34;&gt;
  Background
  &lt;a class=&#34;heading-link&#34; href=&#34;#background&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;In December I  published an analysis of the length of proceedings before the German Federal Constitutional Court (BVerfG) in &lt;a href=&#34;https://rechtsempirie.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;RECHTS|EMPIRIE&lt;/a&gt;, a German science blog. The links in the info box above will direct you to the original text of the article and the source code (in R). Below is an English summary.&lt;/p&gt;
&lt;h1 id=&#34;english-summary&#34;&gt;
  English Summary
  &lt;a class=&#34;heading-link&#34; href=&#34;#english-summary&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;h2 id=&#34;introduction&#34;&gt;
  Introduction
  &lt;a class=&#34;heading-link&#34; href=&#34;#introduction&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The German &lt;a href=&#34;https://en.wikipedia.org/wiki/Federal_Constitutional_Court&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Federal Constitutional Court (BVerfG)&lt;/a&gt; is not only a guardian of justice, but also a guardian of time. Judgments in court proceedings should be just, but they should also be prompt. This maxim has been pithily summarized as &amp;ldquo;justice delayed is justice denied&amp;rdquo; (Gladstone) or &amp;ldquo;swift justice is the sweetest&amp;rdquo; (Bacon). In German it is known as the &amp;ldquo;Beschleunigungsgrundsatz&amp;rdquo; and enshrined in domestic statutes, the constitution and the European Convention of Human Rights (ECHR).&lt;/p&gt;
&lt;h2 id=&#34;the-role-of-the-beschwerdekammer&#34;&gt;
  The Role of the &lt;em&gt;Beschwerdekammer&lt;/em&gt;
  &lt;a class=&#34;heading-link&#34; href=&#34;#the-role-of-the-beschwerdekammer&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I briefly discuss the role and jurisprudence of the &lt;em&gt;Beschwerdekammer&lt;/em&gt;, the special panel of the BVerfG that reviews the length of constitutional proceedings. Since its creation in 2011 it has ruled on few cases and published only seven decisions. Based on the case law of this special panel it would appear that, regarding its own constitutional proceedings, the BVerfG generally considers a length of five to seven years to be acceptable.&lt;/p&gt;
&lt;p&gt;The role and composition of the &lt;em&gt;Beschwerdekammer&lt;/em&gt; represents a prima facie violation of the principle &lt;a href=&#34;https://en.wikipedia.org/wiki/Nemo_iudex_in_causa_sua&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;nemo judex in sua causa&lt;/em&gt;&lt;/a&gt; (no one can be a judge in their own cause), as the judges rule on the quality of their own professional conduct and that of colleagues in a very small court. There exist only limited safeguards, such as the exclusion of the rapporteur of an impugned decision from &lt;em&gt;Beschwerdekammer&lt;/em&gt; proceedings.&lt;/p&gt;
&lt;p&gt;However, there do not appear to be any alternative options that would not undercut the special role of the BVerfG in the German constitutional framework. The endless saga surrounding the new disciplinary panel of the Polish Constitutional Court demonstrates the danger of external interference with an apex court.&lt;/p&gt;
&lt;h2 id=&#34;a-silver-lining&#34;&gt;
  A Silver Lining
  &lt;a class=&#34;heading-link&#34; href=&#34;#a-silver-lining&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;There is a silver lining to this situation: if BVerfG judges are judges in their own professional causes, then an empirical analysis of its activities will allow us to augment our understanding not only of the practice of the court, but also of its normative stance on the acceptable length of constitutional proceedings.&lt;/p&gt;
&lt;p&gt;The official statistics of the BVerfG are quite terse with regard to the actual length of proceedings. Specifics are only available for constitutional complaints and do not cover durations of more than three years.&lt;/p&gt;
&lt;p&gt;To gain a better understanding of the court&amp;rsquo;s practice I turn to the &lt;a href=&#34;https://doi.org/10.5281/zenodo.7011305&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesverfassungsgerichts (CE-BVerfG)&lt;/a&gt; (Fobbe 2022), which documents all published BVerfG decisions since 1998, plus metadata. This metadata includes the year in which proceedings were initiated and the date the judgment was rendered. From these I calculate an estimate of the length of proceedings in years. Several notable limitations are discussed and sensitivity analyses performed (see source code for full details).&lt;/p&gt;
&lt;h2 id=&#34;results&#34;&gt;
  Results
  &lt;a class=&#34;heading-link&#34; href=&#34;#results&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The data consists of 8,407 published decisisons. After excluding procedural decisions (e.g. costs), 7,700 decisions remain. I visualize the frequency distribution of length in years via bar plots for all decisions, senate decisions (important cases) and panel decisions (all other cases). It is immediately obvious that many decisions take more than three years.&lt;/p&gt;
&lt;p&gt;44 decisions even hint at proceedings of 10 or more years. A single outlier decision was handed down after slightly less than 21 years.&lt;/p&gt;
&lt;p&gt;The median for senate proceedings is 2 years and 1 year for panels, with a worst case measurement error of 4 months. The mean for senate proceedings is 2.87 years and 1.35 years for panel proceedings, with negligible measurement error.&lt;/p&gt;
&lt;p&gt;After a close reading of the full text, the single 21-year-decision appears to be a curiosity of legal history, not a scandal. The petitioner challenged an abuse fee (Missbrauchsgebühr) levied by the BVerfG. However, such decisions are final and there exist no formal remedies to challenge them. The application was clearly without merit. This incredible delay in an absurd situation is reminiscent of a famous play linked to the Theatre of the Absurd: &lt;a href=&#34;https://en.wikipedia.org/wiki/Waiting_for_Godot&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Waiting for Godot&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;bar-plot&#34;&gt;
  Bar Plot
  &lt;a class=&#34;heading-link&#34; href=&#34;#bar-plot&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The x-axis shows length of proceedings in years, the y-axis the number of decisions. This diagram includes all decisions from both senates (8 judges) and panels (3 judges).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/BVerfG-Verfahrensdauer_02_Barplot_Verfahrensdauer_Alle-1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;experimental-visuals&#34;&gt;
  Experimental Visuals
  &lt;a class=&#34;heading-link&#34; href=&#34;#experimental-visuals&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The article closes with experimental visualizations: Chord diagrams. These have known limitations (the human eye being unable to judge angles accurately, difficult to interpret without assistance), but can represent the data in the original in-year/out-year format and are able to show the change over time in length of proceedings. The diagrams are interpreted as an example for future users.&lt;/p&gt;
&lt;h3 id=&#34;length-of-proceedings-senates&#34;&gt;
  Length of Proceedings (Senates)
  &lt;a class=&#34;heading-link&#34; href=&#34;#length-of-proceedings-senates&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/BVerfG-Verfahrensdauer_06_Chord_Verfahrensdauer_Senate_Dark-1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;length-of-proceedings-panels&#34;&gt;
  Length of Proceedings (Panels)
  &lt;a class=&#34;heading-link&#34; href=&#34;#length-of-proceedings-panels&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/BVerfG-Verfahrensdauer_08_Chord_Verfahrensdauer_Kammern_Dark-1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Open Data Impact Award for the ICJ Corpus</title>
      <link>https://seanfobbe.com/posts/2022-11-12_open-data-impact-award/</link>
      <pubDate>Sat, 12 Nov 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2022-11-12_open-data-impact-award/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.7277154&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Slides and Notes for &amp;lsquo;Foundations of Legal Data Science&amp;rsquo; talk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.stifterverband.org/pressemitteilungen/2022_10_20_open_data_impact_award&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Open Data Impact Award Press Release&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;open-data-impact-award-for-the-icj-corpus&#34;&gt;
  Open Data Impact Award for the ICJ Corpus
  &lt;a class=&#34;heading-link&#34; href=&#34;#open-data-impact-award-for-the-icj-corpus&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The &lt;a href=&#34;https://www.stifterverband.org/innosci/open-data-impact-award&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;2022 Open Data Impact Award&lt;/a&gt; was a surprise, but a pleasant one! Thank you, Stifterverband, for awarding third place and 5,000 € to the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;, as well as inviting me to present my project &amp;lsquo;Foundations of Legal Data Science&amp;rsquo; in Berlin! I&amp;rsquo;ve uploaded the &lt;a href=&#34;https://doi.org/10.5281/zenodo.7277154&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;slides and notes to Zenodo&lt;/a&gt;. Includes a peek at an exciting new project!&lt;/p&gt;
&lt;p&gt;The award-winning &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt; collects all published decisions and appended opinions of the &lt;a href=&#34;https://www.icj-cij.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;International Court of Justice (ICJ)&lt;/a&gt;, the judicial organ of the United Nations and one of the most consequential courts in international law.&lt;/p&gt;
&lt;p&gt;Want to jump in right away? &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Download it here!&lt;/a&gt; Want to work with more legal data? Choose from &lt;a href=&#34;../../data&#34; &gt;16 different data sets&lt;/a&gt; listed on my website.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/ODIA_Fobbe-Ceremony_by-David-Ausserhofer-lowres.jpg&#34; alt=&#34;&#34;&gt;
📷 Photo by &lt;a href=&#34;https://ausserhofer.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;David Ausserhofer&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;opensensemap-and-risk-based-authentication&#34;&gt;
  OpenSenseMap and Risk-Based Authentication
  &lt;a class=&#34;heading-link&#34; href=&#34;#opensensemap-and-risk-based-authentication&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Congratulations to my fellow awardees, who made this evening (and the after-party) a very special occasion!&lt;/p&gt;
&lt;p&gt;🥇 First place and 15,000 € went to the &lt;a href=&#34;https://opensensemap.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;OpenSenseMap&lt;/a&gt; project, headed by Professor Angela Schwering, Dr. Thomas Bartoschek and Mario Pesch. OpenSenseMap is an incredible global database of environmental sensor data, containing more than 11 billion measurements from over 10,000 sensors. Give OpenSenseMap a spin with its &lt;a href=&#34;https://opensensemap.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;beginner-friendly web interface!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🥈 Second place and 10,000 € went to Stephan Wiefling and Professor Luigi Lo Iacono for creating the &lt;a href=&#34;https://zenodo.org/record/6782156&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Login Data Set for Risk-Based Authentication&lt;/a&gt;, a synthetic compilation of more than 33 million realistic authentication attempts from over 3.3 million users. It may re-define login Risk-Based Authentication security measures for millions of websites on the internet.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/ODIA_Awardees-All_by-David-Ausserhofer-lowres.jpg&#34; alt=&#34;&#34;&gt;
📷 Photo von &lt;a href=&#34;https://ausserhofer.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;David Ausserhofer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Left to right: Andrea Frank (Stifterverband), Seán Fobbe, Mario Pesch, Professor Dr. Angela Schwering, Dr. Thomas Bartoschek, Anna Held (Stifterverband), Stephan Wiefling and Professor Dr. Luigi Lo Iacono.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Podcast] Talking Legal Tech</title>
      <link>https://seanfobbe.com/posts/2022-11-09_talking-legal-tech-podcast/</link>
      <pubDate>Wed, 09 Nov 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2022-11-09_talking-legal-tech-podcast/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;a href=&#34;https://anchor.fm/legaltech/episodes/Was-Legal-Data-Science-ist--warum-sich-alle-Juristinnen-damit-beschftigen-sollten-mit-dem-Daten-Detektiv-Sen-Fobbe-e1q1js2&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Talking Legal Tech Podcast &amp;mdash; Legal Data Science with Seán Fobbe (November 2022)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Felipe Molina Gaviria and I joined forces on the &lt;em&gt;Talking Legal Tech&lt;/em&gt; Podcast and spent a fun hour discussing Legal Data Science, peace research and digital detective work. The podcast is available on a wide range of platforms via the link up top in the info box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anchor.fm&lt;/li&gt;
&lt;li&gt;Apple Podcasts&lt;/li&gt;
&lt;li&gt;Castbox&lt;/li&gt;
&lt;li&gt;Google Podcasts&lt;/li&gt;
&lt;li&gt;Overcast&lt;/li&gt;
&lt;li&gt;Pocket Casts&lt;/li&gt;
&lt;li&gt;Radio Public&lt;/li&gt;
&lt;li&gt;Spotify&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please note, the language of the podcast is German. I haven&amp;rsquo;t recorded an episode on Legal Data Science in English yet, but if you happen to host a podcast, let me know and perhaps we can make it happen!&lt;/p&gt;
&lt;p&gt;Have more questions after listening to the episode? &lt;a href=&#34;../../contact&#34; &gt;Write me!&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Moving from Twitter to Mastodon</title>
      <link>https://seanfobbe.com/posts/2022-11-08_moving-to-mastodon/</link>
      <pubDate>Tue, 08 Nov 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2022-11-08_moving-to-mastodon/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;New Mastodon Profile &amp;mdash; &lt;a rel=&#34;me&#34; href=&#34;https://fediscience.org/@seanfobbe&#34;&gt;@seanfobbe@fediscience.org&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;moving-to-mastodon&#34;&gt;
  Moving to Mastodon
  &lt;a class=&#34;heading-link&#34; href=&#34;#moving-to-mastodon&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Now that Twitter is burning down faster than anyone expected, I joined the mass migration of academics to Mastodon and opened an account on the &lt;a href=&#34;https://fediscience.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fediscience.org&lt;/a&gt; instance last Friday.&lt;/p&gt;
&lt;p&gt;So far I have been enjoying Mastodon immensely. As a matter of fact, I&amp;rsquo;ve had more high-quality exchanges with colleagues and people outside of my bubble in a weekend than I did during the two years I spent on Twitter. There&amp;rsquo;s something rather special about the Mastodon community, even with the massive influx of new users, and I hope we can preserve that community spirit.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll stay a while longer on Twitter to redirect users to my new Mastodon profile, but I assume that I&amp;rsquo;ll be engaging less and less as time goes on. The handling of this takeover is one of the worst messes I&amp;rsquo;ve seen in a while and I would not be surprised if Twitter were to end up like MySpace soon.&lt;/p&gt;
&lt;h1 id=&#34;advice-for-new-mastodon-users&#34;&gt;
  Advice for New Mastodon Users
  &lt;a class=&#34;heading-link&#34; href=&#34;#advice-for-new-mastodon-users&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;There are many fantastic resources for new users out there and more are being written daily. These are some of my favorites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.djnavarro.net/posts/2022-11-03_what-i-know-about-mastodon/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Intro to Mastodon&lt;/a&gt; by Danielle Navarro&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fedi.tips/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fedi.tips &amp;mdash; An Unofficial Guide to Mastodon &amp;amp; the Fediverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fedi.directory/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fedi.directory &amp;mdash; Interesting Accounts to follow on Mastodon and the Fediverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.google.com/spreadsheets/d/1nE8WxgwTFCuVeFA8ZfOW0qonJTSnI_d6EBSJ4E9JqtI/edit?usp=sharing&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;List of Lawyers on Mastodon&lt;/a&gt; &amp;mdash; &lt;a href=&#34;https://forms.gle/hzzbqzvq754NQzDv7&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Sign Up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/nathanlesage/academics-on-mastodon&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Lists of Academics on Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.google.com/spreadsheets/d/13No4yxY-oFrN8PigC2jBWXreFCHWwVRTftwP6HcREtA/htmlview?usp=embed_facebook&amp;amp;pru=AAABhHFFtVs*lJpkyXYSrSTsXnH1dwmn2Q&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;List of Journalists on Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.hughrundle.net/home-invasion/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Reflections of a long-time Fediverse resident regarding the cultural changes of November 2022&lt;/a&gt; by Hugh Rundle&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>[Update] ICJ and PCIJ Corpora</title>
      <link>https://seanfobbe.com/posts/2022-09-11_icj-pcij_corpora_update/</link>
      <pubDate>Sun, 11 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2022-09-11_icj-pcij_corpora_update/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.3840479&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.1111/jels.12313&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Introducing Twin Corpora of Decisions for the International Court of Justice (ICJ) and the Permanent Court of International Justice (PCIJ) (JELS 2022)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;notable-changes&#34;&gt;
  Notable Changes
  &lt;a class=&#34;heading-link&#34; href=&#34;#notable-changes&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;September saw scheduled updates published for the &lt;strong&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/strong&gt; and the &lt;strong&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/strong&gt;. In addition to a number of minor bug fixes and enhancements both corpora were fully recompiled with Tesseract 5, yielding an even better OCR rendering of old decisions.&lt;/p&gt;
&lt;p&gt;Compared to the 50.19% reduction in unique tokens for the English version of the CD-ICJ, as reported in the &lt;a href=&#34;https://doi.org/10.1111/jels.12313&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Journal of Empirical Legal Studies&lt;/a&gt;, the reduction now stands at 51.15% compared to the original OCR published by the Court. Faulty OCR can cause a large number of unique or rare tokens that may bias or otherwise impede statistical analysis, particularly bag-of-words models. Please see the JELS article for more on OCR quality control. Improvements in the French version of the CD-ICJ and both language versions of the CD-PCIJ are comparable.&lt;/p&gt;
&lt;p&gt;Also, the CD-ICJ now includes cases up to General List No 183 (Germany v Italy) and documents published before September 2022.&lt;/p&gt;
&lt;p&gt;For full details please see the changelog on the relevant Zenodo pages and in each Codebook.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[Update] German Legal Corpora</title>
      <link>https://seanfobbe.com/posts/2022-09-10_data-set-updates/</link>
      <pubDate>Sat, 10 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2022-09-10_data-set-updates/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://zenodo.org/communities/sean-fobbe-data/search?page=1&amp;amp;size=20&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;German Legal Corpora on Zenodo (Fobbe)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The following open access data sets received (significant) updates between June and September 2022:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.4459405&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corona-Rechtsprechung des Bundesverfassungsgerichts (BVerfG-Corona)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3831111&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der amtlichen Entscheidungssammlung des Bundesverfassungsgerichts (C-BVerfGE)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3902658&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesverfassungsgerichts (CE-BVerfG)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3942742&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesgerichtshofs (CE-BGH)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3911067&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundesverwaltungsgerichts (CE-BVerwG)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3954850&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus der Entscheidungen des Bundespatentgerichts (CE-BPatG)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3832111&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus des Deutschen Bundesrechts (C-DBR)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This includes full recompilation of data sets with the newest decisions. For full details please see the changelog on the relevant Zenodo pages and in each Codebook.&lt;/p&gt;
&lt;p&gt;Please submit bugs and feature requests to the relevant &lt;a href=&#34;https://github.com/SeanFobbe/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Issue Tracker&lt;/a&gt; on GitHub.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Paper] Introducing Twin Corpora of Decisions for the International Court of Justice (ICJ) and the Permanent Court of International Justice (PCIJ)</title>
      <link>https://seanfobbe.com/posts/introducing-icj-pcij-corpora/</link>
      <pubDate>Fri, 29 Apr 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/introducing-icj-pcij-corpora/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.1111/jels.12313&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Introducing Twin Corpora of Decisions for the International Court of Justice (ICJ) and the Permanent Court of International Justice (PCIJ) (JELS 2022)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; &lt;a href=&#34;https://doi.org/10.5281/zenodo.3840479&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p style=&#34;width:100%;float:left;&#34;&gt;
  &lt;div style=&#34;width:50%;float:left;&#34;&gt;
   &lt;a href=&#34;https://doi.org/10.1111/jels.12313&#34;&gt;
     &lt;img src=&#34;https://seanfobbe.com/images/Fobbe2022_ICJ-PCIJ-Article.png&#34; width=&#34;80%&#34;&gt;
   &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;In this article I present the first two of a new series of open and high-quality international legal data sets: comprehensive, fully reproducible, human- and machine-readable open access collections covering one hundred years of case law of the primary judicial organs of the United Nations and the League of Nations: the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt; and the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3840479&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Each corpus is designed to capture in its entirety the published case law of its eponymous Court, including majority opinions (judgments, advisory opinions and orders), but also the minority opinions annexed to each decision (declarations, separate opinions and dissenting opinions). The corpora are enriched with useful metadata to enhance text-as-data research and enable stand-alone metadata analyses. While each corpus can stand on its own, the twin corpora are designed to be perfectly interoperable for the purposes of analyses that wish to treat the ICJ and PCIJ as a continuous entity.&lt;/p&gt;
&lt;p&gt;The most recent versions of the corpora will always be available open access at &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.3826444&lt;/a&gt; (CD-ICJ) and &lt;a href=&#34;https://doi.org/10.5281/zenodo.3840479&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.3840479&lt;/a&gt; (CD-PCIJ).&lt;/p&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h2 id=&#34;corpus-of-decisions-international-court-of-justice-cd-icj&#34;&gt;
  Corpus of Decisions: International Court of Justice (CD-ICJ)
  &lt;a class=&#34;heading-link&#34; href=&#34;#corpus-of-decisions-international-court-of-justice-cd-icj&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt; collects and presents for the first time in human- and machine-readable form all published decisions of the International Court of Justice (ICJ). Among these are judgments, advisory opinions and orders, as well as their respective appended minority opinions (declarations, separate opinions and dissenting opinions). The International Court of Justice has kindly made available these documents on its website.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;http://www.icj-cij.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;International Court of Justice (ICJ)&lt;/a&gt; is the primary judicial organ of the United Nations and one of the most consequential courts in international law. Called the ‘World Court’ by many, it is the only international court with general thematic jurisdiction. While critics occasionally note the lack of compulsory jurisdiction and sharply limited access to the Court, its opinions continue to have an outsize influence on the modern interpretation, codification and wider development of international law.&lt;/p&gt;
&lt;p&gt;Every international legal textbook covers the workings and decisions of the Court &lt;em&gt;in extenso&lt;/em&gt; and participation in international moot courts such as the &lt;a href=&#34;https://en.wikipedia.org/wiki/Philip_C._Jessup_International_Law_Moot_Court_Competition&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Philip C. Jessup Moot Court&lt;/a&gt; without regular reference to and citation of the International Court of Justice’s decisions is unthinkable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully compatible with the &lt;a href=&#34;https://zenodo.org/record/3840480&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;27 variables&lt;/li&gt;
&lt;li&gt;Public Domain (CC Zero 1.0)&lt;/li&gt;
&lt;li&gt;Open and platform independent file formats (PDF, TXT, CSV)&lt;/li&gt;
&lt;li&gt;Extensive Codebook&lt;/li&gt;
&lt;li&gt;Compilation Report explains construction and validation of the data set in detail&lt;/li&gt;
&lt;li&gt;Large number of diagrams for all purposes (see the &amp;lsquo;ANALYSIS&amp;rsquo; archive)&lt;/li&gt;
&lt;li&gt;Diagrams are available as PDF (for printing) and PNG (for web display)&lt;/li&gt;
&lt;li&gt;Tables are available as CSV for easy readability by humans and machines&lt;/li&gt;
&lt;li&gt;Secure cryptographic signatures (SHA3-512 and RSA-4096)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3977177&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Publication of full source code (Open Source)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;corpus-of-decisions-permanent-court-of-international-justice-cd-pcij&#34;&gt;
  Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)
  &lt;a class=&#34;heading-link&#34; href=&#34;#corpus-of-decisions-permanent-court-of-international-justice-cd-pcij&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/record/3840480&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt; collects and presents for the first time in human- and machine-readable formats all documents of PCIJ Series A, B and A/B of the Permanent Court of International Justice (PCIJ). Among these are judgments, advisory opinions, orders, appended minority opinions, annexes, applications instituting proceedings and requests for an advisory opinion. The International Court of Justice, the successor of the PCIJ, has kindly made available these documents on its website.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://www.icj-cij.org/en/pcij&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Permanent Court of International Justice (PCIJ)&lt;/a&gt; was the primary judicial organ of the League of Nations, the ill-fated predecessor of the United Nations, which existed from 1920 to 1946. Nonetheless, as the first international court with general thematic jurisdiction, the PCIJ influenced international law in profound ways that are still felt today. Every lawyer who sets out on the path of international law encounters epoch-defining opinions such as the Lotus and Factory at Chorzów decisions, but the Court&amp;rsquo;s lesser-known jurisprudence and the appended minority opinions offer many more ideas and legal principles which are seldom appreciated today.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully compatible with the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;29 variables&lt;/li&gt;
&lt;li&gt;Public Domain (CC Zero 1.0)&lt;/li&gt;
&lt;li&gt;Open and platform independent file formats (PDF, TXT, CSV)&lt;/li&gt;
&lt;li&gt;Extensive Codebook&lt;/li&gt;
&lt;li&gt;Compilation Report explains construction and validation of the data set in detail&lt;/li&gt;
&lt;li&gt;Large number of diagrams for all purposes (see the &amp;lsquo;ANALYSIS&amp;rsquo; archive)&lt;/li&gt;
&lt;li&gt;Diagrams are available as PDF (for printing) and PNG (for web display)&lt;/li&gt;
&lt;li&gt;Tables are available as CSV for easy readability by humans and machines&lt;/li&gt;
&lt;li&gt;Secure cryptographic signatures (SHA3-512 and RSA-4096)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.4136956&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Publication of full source code (Open Source)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>2022 Russian Invasion - How to Help Ukraine</title>
      <link>https://seanfobbe.com/posts/helping-ukraine/</link>
      <pubDate>Fri, 25 Feb 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/helping-ukraine/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;This article will be updated as the situation evolves. Please check back frequently.&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;On 24 February 2022 armed forces of the Russian Federation invaded the sovereign territory of Ukraine in clear contravention of international law, particularly the prohibition of the use of force set down in &lt;a href=&#34;https://www.un.org/en/about-us/un-charter/full-text&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Article 2 (4) UN Charter&lt;/a&gt;, the cornerstone of the modern international order. There is no justification for this attack on the political independence and territorial integrity of Ukraine.&lt;/p&gt;
&lt;p&gt;I stand in solidarity with the Ukrainian people and condemn this illegal use of force and war of aggression in the strongest possible terms. To help alleviate the suffering caused by the conflict I&amp;rsquo;ve compiled a list of information that anyone who wishes to aid the people of Ukraine through donations or volunteering their time and skills may find useful.&lt;/p&gt;
&lt;p&gt;This article contains information on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trustworthy News Sources&lt;/li&gt;
&lt;li&gt;Peace Protests&lt;/li&gt;
&lt;li&gt;Humanitarian Assistance&lt;/li&gt;
&lt;li&gt;Supporting the Ukrainian Armed Forces&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/hashtag/standwithukraine&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;#StandWithUkraine&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;news-sources&#34;&gt;
  News Sources
  &lt;a class=&#34;heading-link&#34; href=&#34;#news-sources&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;It is said that truth is the first victim of war, but it is also the first victim of social media. Here I have selected a few news sources you might find more reliable than Twitter and Facebook:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kyivindependent.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Kyiv Independent&lt;/a&gt; &amp;mdash; Independent Ukrainian News Website in English&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.dekoder.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dekoder&lt;/a&gt; &amp;mdash; Russian Journalism translated into German&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://understandingwar.org/backgrounder/ukraine-conflict-updates&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Institute for the Study of War: Ukraine Conflict Updates&lt;/a&gt; &amp;mdash; Daily summaries of the strategic and tactical military situation in Ukraine&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;peace-protests&#34;&gt;
  Peace Protests
  &lt;a class=&#34;heading-link&#34; href=&#34;#peace-protests&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Taking to the streets and calling for peace is one of the time-honored democratic measures to end wars.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://standwithukraine.live/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Stand with Ukraine&lt;/a&gt; &amp;mdash; Regularly updated list of peace protests on behalf of Ukraine&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://unserdialog.org/circleforpeace/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Circle for Peace&lt;/a&gt; &amp;mdash; Stand up for peace by drawing a peace symbol on the ground and protesting in it for as long as you can&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;humanitarian-assistance&#34;&gt;
  Humanitarian Assistance
  &lt;a class=&#34;heading-link&#34; href=&#34;#humanitarian-assistance&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Regional spillover from such a major conflict is inevitable so I have included organizations working both in Ukraine and in the wider region. Please note that these organizations will likely need your support for years to come in order to deal with the humanitarian fallout &amp;mdash; not just during the immediate crisis.&lt;/p&gt;
&lt;h3 id=&#34;ukraine&#34;&gt;
  Ukraine
  &lt;a class=&#34;heading-link&#34; href=&#34;#ukraine&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.lphr.org/en/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Libereco – Partnership for Human Rights e.V.&lt;/a&gt;  and their &lt;a href=&#34;https://www.lphr.org/en/humanitaere-soforthilfe-fuer-die-ukraine/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine Emergency Aid Fundraiser&lt;/a&gt; (cooperation with Vostok SOS)  &amp;mdash; Humanitarian Aid and Human Rights&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://vostok-sos.org/en/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Vostok SOS&lt;/a&gt; and their &lt;a href=&#34;https://vostok-sos.org/en/ukraine-under-fire-support-vostok-sos-aid-operation/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine Emergency Aid Fundraiser&lt;/a&gt; (cooperation with Libereco) &amp;mdash; Humanitarian Aid and Human Rights&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.uahospitals.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Support Hospitals in Ukraine&lt;/a&gt; &amp;mdash; Medical Aid&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://unitedhelpukraine.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;United Help Ukraine&lt;/a&gt; &amp;mdash; Medical/Humanitarian Aid&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://caritas.ua/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Caritas Ukraine&lt;/a&gt; &amp;mdash; Humanitarian Aid&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ukraine-hilfe-berlin.de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine-Hilfe Berlin&lt;/a&gt; &amp;mdash; Medical/Humanitarian Aid&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://voices.org.ua/en/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Voices of Children&lt;/a&gt; &amp;mdash; Children&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://care-in-action.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Care in Action&lt;/a&gt; and their &lt;a href=&#34;https://care-in-action.org/en/pages/emergency-aid-for-ukrainian-children-and-families&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine Emergency Fundraiser&lt;/a&gt; &amp;mdash; Children and Orphans&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mission-lifeline.de/ukraine/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mission Lifeline&lt;/a&gt; &amp;mdash; Small convoy traveling to Ukrainian border to help refugees&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;poland&#34;&gt;
  Poland
  &lt;a class=&#34;heading-link&#34; href=&#34;#poland&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.pah.org.pl/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Polish Humanitarian Action PAH&lt;/a&gt; and the &lt;a href=&#34;https://www.pah.org.pl/wplac/?form=ukraina&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PAH Ukraine Fundraiser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ocalenie.org.pl/ukraina/zbiorka-na-pomoc-dla-osob-z-ukrainy&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ocalenie Foundation&lt;/a&gt; &amp;mdash; Volunteers can &lt;a href=&#34;https://ocalenie.org.pl/ukraina-pomoc&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;sign up to help refugees in Poland&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pcpm.org.pl/en&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Polish Center for International Aid&lt;/a&gt; &amp;mdash; Fundraiser for &lt;a href=&#34;https://pcpm.org.pl/ukraina&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Humanitarian aid, evacuation aid, psychological aid for children&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ratujemyzwierzaki.pl/ukraina-zwierzeta&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Animal Protection Inspectorate &amp;mdash; Fundraiser to save Animals&lt;/a&gt; &amp;mdash; Contact: &lt;a href=&#34;mailto:sekretariat@dolnoslaski-ioz.pl&#34; &gt;sekretariat@dolnoslaski-ioz.pl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fundacjadialog.pl/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dialog Foundations&lt;/a&gt; &amp;mdash; Refugee Protection and &lt;a href=&#34;https://www.facebook.com/donate/701549297884517/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Fundraiser to create a house for Ukrainian families in Poland&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pck.pl/wspieraj-nas/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Polish Red Cross&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pmm.org.pl/en/donate&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Polish Medical Mission&lt;/a&gt; and their &lt;a href=&#34;https://www.facebook.com/donate/375415624008297/5395474380471879/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine Fundraiser on Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pomagam.pl/solidarnizukraina&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Foundation Pomagam.pl in coordination with &amp;lsquo;Nasz Wybór&amp;rsquo; (&amp;lsquo;Our Choice&amp;rsquo;) Foundation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.odfoundation.eu/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Open Dialogue Foundation&lt;/a&gt; and their &lt;a href=&#34;https://zrzutka.pl/ba64zt&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine Emergency Fundraiser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;germany&#34;&gt;
  Germany
  &lt;a class=&#34;heading-link&#34; href=&#34;#germany&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://elinor.network/gastfreundschaft-ukraine/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Elinor Network/GLS Bank/Ecosia: &amp;ldquo;Gastfreundschaft Ukraine&amp;rdquo;&lt;/a&gt; &amp;mdash; via this form you can offer short-term accommodation in Germany to Ukrainian refugees&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;switzerland&#34;&gt;
  Switzerland
  &lt;a class=&#34;heading-link&#34; href=&#34;#switzerland&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.swissinfo.ch/ger/ukrainische-botschaft-bittet-um-spenden-von-medizinischen-guetern/47381334&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukrainian Embassy in Bern/Switzerland&lt;/a&gt; [Website in German] &amp;mdash; Call from Ukrainian embasssy in Bern to donate medical supplies (Mo&amp;ndash;Fr, 4&amp;ndash;7 pm), please contact &lt;a href=&#34;mailto:swisshelpukraine@gmail.com&#34; &gt;swisshelpukraine@gmail.com&lt;/a&gt; in advance&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://swisshelpua.notion.site/I-want-to-help-Ukraine-c0169d25e18649d4b83a4ef75a6f4ca5&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;I want to Help Ukraine (Geneva/Switzerland)&lt;/a&gt; &amp;mdash; Donate medical and other humanitarian supplies&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/MissionofUkraineinGeneva&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Permanent Mission of Ukraine in Geneva (Facebook)&lt;/a&gt; &amp;mdash; Donate medical and other humanitarian supplies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;europe&#34;&gt;
  Europe
  &lt;a class=&#34;heading-link&#34; href=&#34;#europe&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.aid4ukr.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Aid4Ukr &amp;mdash; Guide for Ukrainian Refugees&lt;/a&gt; &amp;mdash; Immigration Information for Ukrainian Refugees&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.immigration4ukraine.eu/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Immigration 4 Ukraine&lt;/a&gt; &amp;mdash; Lawyers can register to offer pro bono advice and Ukrainians can register to receive legal advice on immigration&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pad.riseup.net/p/E0x-D-ZiJZlHXbDAGG7W-keep&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pan-european decentralized offers of support for Ukrainian refugees&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;international-organizations-igo-and-ngo&#34;&gt;
  International Organizations (IGO and NGO)
  &lt;a class=&#34;heading-link&#34; href=&#34;#international-organizations-igo-and-ngo&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://crisisrelief.un.org/ukraine-crisis&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;United Nations Crisis Relief &amp;mdash; Ukraine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.unicef.org/ukraine/en&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;United Nations Children&amp;rsquo;s Fund (UNICEF) in Ukraine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://unicef.pl/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;United Nations Children&amp;rsquo;s Fund (UNICEF) in Poland&lt;/a&gt; and their &lt;a href=&#34;https://www.facebook.com/donate/462703465452564/10158711221256545/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine Fundraiser on Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.unhcr.org/ua/en&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;United Nations High Commission for Refugees (UNHCR) in Ukraine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.msf.org/ukraine&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Médecins Sans Frontières/Doctors Without Borders in Ukraine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.caritas-international.de/hilfeweltweit/europa/ukraine/ukraine.aspx&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Caritas International in Ukraine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.icrc.org/en/donate/ukraine&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;International Committee of the Red Cross&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;global&#34;&gt;
  Global
  &lt;a class=&#34;heading-link&#34; href=&#34;#global&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ukrainet.eu/2022/02/25/support-for-academics/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;International Support for Students and Researchers from Ukraine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.google.com/spreadsheets/d/1jGFCqP2kj1ZAN6xy6EoRN1bozaggk9VEsbzYaIkkYcQ/htmlview#gid=0&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Labs supporting Ukrainian Scientists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ukrainetechcollective.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukrainian Tech Collective&lt;/a&gt; &amp;mdash; Facilitates skill swaps so Ukrainians who are currently protecting their country still get paid and can support their families.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;ukraine-armed-forces-special-account&#34;&gt;
  Ukraine Armed Forces Special Account
  &lt;a class=&#34;heading-link&#34; href=&#34;#ukraine-armed-forces-special-account&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;Following the declaration of martial law the National Bank of Ukraine opened a special fundraising account to support the Armed Forces of Ukraine. The account accepts donations in UAH, EUR, USD, GBP, CHF, AUD, CNY, CAD and JPY.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Special Fundraising Account for Ukrainian Armed Forces (Official Information)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I take this unprecedented step in promoting this account as a peace-loving citizen and lawyer because the 2022 Russian invasion of Ukraine represents an illegal war of aggression and a flagrant violation of international law, particularly the prohibition of the use of force (&lt;a href=&#34;https://www.un.org/en/about-us/un-charter/full-text&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Article 2 (4) UN Charter&lt;/a&gt;). The right of Ukraine to act in self-defence under &lt;a href=&#34;https://www.un.org/en/about-us/un-charter/full-text&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Article 51 of the UN Charter&lt;/a&gt; is legally and morally without reproach.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 id=&#34;other-ukraine-assistance-lists&#34;&gt;
  Other Ukraine Assistance Lists
  &lt;a class=&#34;heading-link&#34; href=&#34;#other-ukraine-assistance-lists&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Others have compiled similar lists and made them available publicly. I collect these below.&lt;/p&gt;
&lt;h2 id=&#34;english&#34;&gt;
  English
  &lt;a class=&#34;heading-link&#34; href=&#34;#english&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kyivindependent.com/national/want-to-help-ukraines-military-as-a-foreigner-heres-what-you-can-do/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Kyiv Independent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://linktr.ee/ukrainehelpberlin&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine Help Berlin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;german&#34;&gt;
  German
  &lt;a class=&#34;heading-link&#34; href=&#34;#german&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gabowitsch.net/stopwar-de/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mischa Gabowitsch &amp;mdash; Putins Krieg stoppen!&lt;/a&gt; (in German)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ukraineverstehen.de/unterstuetzung-fuer-die-ukraine/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ukraine verstehen &amp;mdash; Wie man der Ukraine JETZT helfen kann&lt;/a&gt; (in German)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/silke.hueper/posts/2159163487575841&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Silke Hüper on Facebook&lt;/a&gt; (in German)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.zeit.de/zeit-magazin/2022-02/hilfe-ukraine-spenden-deutschland-tipps&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ZEIT &amp;mdash;  Wie kann ich helfen?&lt;/a&gt; (in German)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;quality-of-sources&#34;&gt;
  Quality of Sources
  &lt;a class=&#34;heading-link&#34; href=&#34;#quality-of-sources&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;div class=&#34;notice note&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;The information contained in this article was received from different sources in my network. I have tried to independently verify the credibility of each organization whereever possible but this is a dynamic and fast-moving situation, so errors are possible.&lt;/p&gt;
&lt;p&gt;If you have justified concerns about any of these organizations, &lt;a href=&#34;https://seanfobbe.com/contact&#34; &gt;please get in touch&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!--

Wenn ihr fragt, was ihr gerade tun könnt, dann kommen hier meine Empfehlungen:
1. Schreibt euren Abgeordneten (dauert 15 Minuten)
Meine individualisierbare Vorlage: https://docs.google.com/.../119pMRTBMj.../edit...
2. Spendet Geld (dauert 10 Minuten) 
a. Der ukrainischen Armee, die Land und Leben meiner Freund*innen verteidigt
https://savelife.in.ua/en/donate/
b. Humanitären Organisationen
https://ukraineverstehen.de/unterstuetzung-fuer-die.../...
3. Geht demonstrieren. Eine Liste von Demos in aller Welt findet ihr hier: https://www.stopputin.net/
4. Bezieht eure Informationen aus verlässlichen Quellen: 
a. The Kyiv Independent  (FB)
https://kyivindependent.com/
b. УКРІНФОРМ (FB)
https://www.ukrinform.net/block-lastnews
c. Babel: Whatʼs happening in the Russia-Ukraine war: regular updates from trusted sources.
d. Ministry of Foreign Affairs of Ukraine (FB)
https://twitter.com/mfa_ukraine
5. Streut und verbreitet diese Nachricht (dauert 2 Minuten)


https://docs.google.com/document/d/1CdrWLAkEaOMV7fBbIWzHsgHmFz8s1GM6e_7a57oc3ug/edit

http://www.immigration4ukraine.eu/



------


NBU Opens Special Account to Raise Funds for Ukraine’s Armed Forces
25 Feb 2022 19:00

The National Bank of Ukraine has decided to open a special fundraising account to support the Armed Forces of Ukraine.

The central bank’s decision comes after the Ukrainian government imposed martial law throughout Ukraine in response to armed aggression by Russia and the renewed threat to Ukraine’s independence and territorial integrity.

NBU Governor Kyrylo Shevchenko announced the opening of this special account in his 24 February video address.

The number of the special account: UA843000010000000047330992708

This account accepts multiple currencies. It has been established and opened to receive transfers from international partners and donors in both foreign currency (U.S. dollars, euros, UK pounds) and hryvnias.

Support the Armed Forces of Ukraine!
Account information
3
For UAH remittances:
Bank: National Bank of Ukraine
MFO 300001
Account No. UA843000010000000047330992708
EDRPOU Code 00032106
Payee: National Bank of Ukraine

For USD remittances:
BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 400807238
BENEFICIARY BANK NAME: JP MORGAN CHASE BANK, New York
BENEFICIARY BANK BIC: CHASUS33
BENEFICIARY BANK ADDRESS: 383 Madison Avenue, New York, NY 10017, USA
PURPOSE OF PAYMENT: for crediting account 47330992708

For EUR remittances:
BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 5040040066
IBAN DE05504000005040040066 
BENEFICIARY BANK NAME: DEUTSCHE  BUNDESBANK, Frankfurt
BENEFICIARY BANK BIC: MARKDEFF
BENEFICIARY BANK ADDRESS: Wilhelm-Epsteinn-Strabe 14, 60431 Frankfurt Am Main, Germany
PURPOSE OF PAYMENT: for crediting account 47330992708 

For GBP remittances:

BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 40000982
IBAN GB52CHAS60924280033041
Sort code 60-92-42 
BENEFICIARY BANK NAME: JP MORGAN CHASE BANK NA, London
BENEFICIARY BANK BIC: CHASGB2L
BENEFICIARY BANK ADDRESS: 125 London Wall, London EC2Y 5AJ, UK
PURPOSE OF PAYMENT: for crediting account 47330992708 

For CHF remittances:
BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 0700-01227572
IBAN CH32 0070 0070 0012 2757 2 
BENEFICIARY BANK NAME: ZURCHER KANTONALBANK, ZURICH
BENEFICIARY BANK BIC: ZKBKCHZZ80A
BENEFICIARY BANK ADDRESS: Josefstrasse 222, 8005 Zurich, Switzerland
PURPOSE OF PAYMENT: for crediting account 47330992708 

For AUD​​​​​​​​​​​​​​​​​​​​​ remittances:
BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 81753-2
BENEFICIARY BANK NAME: RESERVE  BANK OF AUSTRALIA, Sydney
BENEFICIARY BANK BIC: RSBKAU2S
BENEFICIARY BANK ADDRESS: GPO Box 3947, Sydney NSW 2000, Australia
PURPOSE OF PAYMENT: for crediting account 47330992708

For CNY​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ remittances:
BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 447-0-946243-6
BENEFICIARY BANK NAME: STANDARD CHARTERED BANK, Hong Kong
BENEFICIARY BANK BIC: SCBLHKHH
BENEFICIARY BANK ADDRESS: GPO Box  21, Hong Kong
PURPOSE OF PAYMENT: for crediting account 47330992708

For CAD​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ remittances:
BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 3144-1044-166
BENEFICIARY BANK NAME: BANK OF MONTREAL, Toronto
BENEFICIARY BANK BIC: BOFMCAM2
BENEFICIARY BANK ADDRESS: 100 King Street West, 24th Floor, Toronto, Ontario, M5X 1A1, Canada
PURPOSE OF PAYMENT: for crediting account 47330992708

For JPY​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ remittances:
BENEFICIARY: National Bank of Ukraine
BENEFICIARY BIC: NBUA UA UX
BENEFICIARY ADDRESS: 9 Instytutska St, Kyiv, 01601, Ukraine
ACCOUNT NUMBER: 653-0430048
BENEFICIARY BANK NAME: MUFG BANK LTD, Tokyo
BENEFICIARY BANK BIC: BOTK JP JT
BENEFICIARY BANK ADDRESS: 1-2-3, Nihombashi HONGOKU-CHO, Chuo-ku, Tokyo 1003 -0021 Japan
PURPOSE OF PAYMENT: for crediting account 47330992708




--&gt;
</description>
    </item>
    
    <item>
      <title>[New Data Sets] Full ICJ and PCIJ Jurisprudence (1921-2021) as Comprehensive Data Sets</title>
      <link>https://seanfobbe.com/posts/2022-02-24_comprehensive-datasets-icj-pcij-release/</link>
      <pubDate>Thu, 24 Feb 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2022-02-24_comprehensive-datasets-icj-pcij-release/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt;   &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt;   &lt;a href=&#34;https://zenodo.org/record/3840480&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;overview&#34;&gt;
  Overview
  &lt;a class=&#34;heading-link&#34; href=&#34;#overview&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Last week I released full open access collections of all &lt;a href=&#34;http://www.icj-cij.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;International Court of Justice (ICJ)&lt;/a&gt; and &lt;a href=&#34;https://www.icj-cij.org/en/pcij&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Permanent Court of International Justice (PCIJ)&lt;/a&gt; judgments, advisory opinions and other decisions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt;   &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt;   &lt;a href=&#34;https://zenodo.org/record/3840480&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can now download all opinions for each Court with two clicks. The PDF versions have been enhanced with neural networks to vastly improve the text layer for copy &amp;amp; paste and searching within documents (Ctrl+F). All files have received improved filenames (including shortened case names, applicants/respondents and the stage of proceedings). I have also included an additional variant consisting only of the majority opinions to assist busy practitioners.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s much more to say since the data sets are intended for advanced statistical analysis, but you&amp;rsquo;ll find details on that in the documentation and the forthcoming Journal of Empirical Legal Studies (JELS) paper. The data sets were created with the permission of the Registrar of the International Court of Justice.&lt;/p&gt;
&lt;p&gt;Feel free to share with any colleagues interested in international law!&lt;/p&gt;
&lt;h2 id=&#34;corpus-of-decisions-international-court-of-justice-cd-icj&#34;&gt;
  Corpus of Decisions: International Court of Justice (CD-ICJ)
  &lt;a class=&#34;heading-link&#34; href=&#34;#corpus-of-decisions-international-court-of-justice-cd-icj&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt; collects and presents for the first time in human- and machine-readable form all published decisions of the International Court of Justice (ICJ). Among these are judgments, advisory opinions and orders, as well as their respective appended minority opinions (declarations, separate opinions and dissenting opinions). The International Court of Justice has kindly made available these documents on its website.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;http://www.icj-cij.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;International Court of Justice (ICJ)&lt;/a&gt; is the primary judicial organ of the United Nations and one of the most consequential courts in international law. Called the ‘World Court’ by many, it is the only international court with general thematic jurisdiction. While critics occasionally note the lack of compulsory jurisdiction and sharply limited access to the Court, its opinions continue to have an outsize influence on the modern interpretation, codification and wider development of international law.&lt;/p&gt;
&lt;p&gt;Every international legal textbook covers the workings and decisions of the Court &lt;em&gt;in extenso&lt;/em&gt; and participation in international moot courts such as the &lt;a href=&#34;https://en.wikipedia.org/wiki/Philip_C._Jessup_International_Law_Moot_Court_Competition&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Philip C. Jessup Moot Court&lt;/a&gt; without regular reference to and citation of the International Court of Justice’s decisions is unthinkable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully compatible with the &lt;a href=&#34;https://zenodo.org/record/3840480&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;27 variables&lt;/li&gt;
&lt;li&gt;Public Domain (CC Zero 1.0)&lt;/li&gt;
&lt;li&gt;Open and platform independent file formats (PDF, TXT, CSV)&lt;/li&gt;
&lt;li&gt;Extensive Codebook&lt;/li&gt;
&lt;li&gt;Compilation Report explains construction and validation of the data set in detail&lt;/li&gt;
&lt;li&gt;Large number of diagrams for all purposes (see the &amp;lsquo;ANALYSIS&amp;rsquo; archive)&lt;/li&gt;
&lt;li&gt;Diagrams are available as PDF (for printing) and PNG (for web display)&lt;/li&gt;
&lt;li&gt;Tables are available as CSV for easy readability by humans and machines&lt;/li&gt;
&lt;li&gt;Secure cryptographic signatures (SHA3-512 and RSA-4096)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.3977177&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Publication of full source code (Open Source)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;corpus-of-decisions-permanent-court-of-international-justice-cd-pcij&#34;&gt;
  Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)
  &lt;a class=&#34;heading-link&#34; href=&#34;#corpus-of-decisions-permanent-court-of-international-justice-cd-pcij&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://zenodo.org/record/3840480&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: Permanent Court of International Justice (CD-PCIJ)&lt;/a&gt; collects and presents for the first time in human- and machine-readable formats all documents of PCIJ Series A, B and A/B of the Permanent Court of International Justice (PCIJ). Among these are judgments, advisory opinions, orders, appended minority opinions, annexes, applications instituting proceedings and requests for an advisory opinion. The International Court of Justice, the successor of the PCIJ, has kindly made available these documents on its website.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://www.icj-cij.org/en/pcij&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Permanent Court of International Justice (PCIJ)&lt;/a&gt; was the primary judicial organ of the League of Nations, the ill-fated predecessor of the United Nations, which existed from 1920 to 1946. Nonetheless, as the first international court with general thematic jurisdiction, the PCIJ influenced international law in profound ways that are still felt today. Every lawyer who sets out on the path of international law encounters epoch-defining opinions such as the Lotus and Factory at Chorzów decisions, but the Court&amp;rsquo;s lesser-known jurisprudence and the appended minority opinions offer many more ideas and legal principles which are seldom appreciated today.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully compatible with the &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826444&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Corpus of Decisions: International Court of Justice (CD-ICJ)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;29 variables&lt;/li&gt;
&lt;li&gt;Public Domain (CC Zero 1.0)&lt;/li&gt;
&lt;li&gt;Open and platform independent file formats (PDF, TXT, CSV)&lt;/li&gt;
&lt;li&gt;Extensive Codebook&lt;/li&gt;
&lt;li&gt;Compilation Report explains construction and validation of the data set in detail&lt;/li&gt;
&lt;li&gt;Large number of diagrams for all purposes (see the &amp;lsquo;ANALYSIS&amp;rsquo; archive)&lt;/li&gt;
&lt;li&gt;Diagrams are available as PDF (for printing) and PNG (for web display)&lt;/li&gt;
&lt;li&gt;Tables are available as CSV for easy readability by humans and machines&lt;/li&gt;
&lt;li&gt;Secure cryptographic signatures (SHA3-512 and RSA-4096)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.5281/zenodo.4136956&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Publication of full source code (Open Source)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Open Sourcing my Linux Configuration</title>
      <link>https://seanfobbe.com/posts/2022-02-23_open-sourcing-linux-config/</link>
      <pubDate>Wed, 23 Feb 2022 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2022-02-23_open-sourcing-linux-config/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt;   &lt;a href=&#34;https://github.com/SeanFobbe/dotfiles-config&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;My personal Linux configuration on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Ever wondered on what kind of setup I run my computational analyses? I&amp;rsquo;ve already written about some of my &lt;a href=&#34;https://seanfobbe.com/code&#34; &gt;preferred tools&lt;/a&gt;, particularly Fedora Linux and Debian. I decided to take the next step and open source the full range of &lt;a href=&#34;https://github.com/SeanFobbe/dotfiles-config&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;installer scripts and dotfiles&lt;/a&gt; I use to customize my development machines. These include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A setup and config script&lt;/li&gt;
&lt;li&gt;Installer scripts for Fedora and Debian packages (includes dependencides for common R packages)&lt;/li&gt;
&lt;li&gt;Installer script for my preferred R packages&lt;/li&gt;
&lt;li&gt;A script to clone all my public git repositories&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://dotfiles.github.io/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Dotfiles&lt;/a&gt; are small text files that store configuration settings on Linux systems and are easily portable. They are aptly so named because their names starts with a dot (.) to let the system know that these are hidden files. You can store them in a GitHub repo like I do and when you setup a new system they are easily copied to make yourself instantly at home.&lt;/p&gt;
&lt;p&gt;I use a neat trick I picked up somewhere on the internet to replace all existing config files with symbolic links to the git repository, so I don&amp;rsquo;t need to constantly re-copy them from the repo when I update my config.&lt;/p&gt;
&lt;p&gt;Please note that in almost all cases you should not simply run these scripts as-published on your machine, but instead use them as an inspiration to create your own. Especially the first script will execute irreversible actions by deleting all current dotfiles of interest and replacing them with symbolic links to the ones in my git repo.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Paper] Final Report of Investigation into Cultural Heritage Destruction during the Islamic State&#39;s Genocide against the Yazidis</title>
      <link>https://seanfobbe.com/posts/2021-11-15_press-release-yazidi-heritage-paper/</link>
      <pubDate>Mon, 15 Nov 2021 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2021-11-15_press-release-yazidi-heritage-paper/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/RASHID-Yazda-EAMENA-Logos.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;[Closed Access] Read the final peer-reviewed paper:   &lt;a href=&#34;https://doi.org/10.1163/9789004466180_006&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.1163/9789004466180_006&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the full manuscript:   &lt;a href=&#34;https://zenodo.org/record/5595882&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;zenodo.org/record/5595882&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the original report:   &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826125&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.3826125&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;joint-press-release&#34;&gt;
  JOINT PRESS RELEASE
  &lt;a class=&#34;heading-link&#34; href=&#34;#joint-press-release&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Seven years after the beginning of the 2014 genocide committed by the Islamic State against the Êzidîs (&amp;lsquo;Yazidis&amp;rsquo; or &amp;lsquo;Yezidis&amp;rsquo;) the final report of a joint investigation conducted by RASHID International, Yazda and the Endangered Archaeology in the Middle East and North Africa Project (EAMENA) has been released. The results were published in Volume 5 of the peer-reviewed &lt;em&gt;Asian Yearbook of Human Rights and Humanitarian Law&lt;/em&gt; (AYHR), an international human rights periodical edited by Professor Javaid Rehman, the  UN Special Rapporteur on the human rights situation in Iran.&lt;/p&gt;
&lt;p&gt;International attention concerning the genocide has generally focused on murder, slavery and sexual exploitation. We analyzed the destruction of Êzidî tangible and intangible cultural heritage as a significant facet of the Islamic State’s policy of ethnic cleansing and genocide. Evidence of destruction is collected and presented in context with other criminal acts.&lt;/p&gt;
&lt;p&gt;The Êzidî are an endogamous community at home in northern Iraq for whom faith and ethnic belonging are inextricably linked. Belief in God and Tawûsê Malek (the highest angel), and reverence for Lalish as the holiest place on earth are the defining features of the Êzidî faith. Historic and sacred places are an essential part of the Êzidî identity and are considered vital to life by the local population. The Islamic State made no secret of its intention to eradicate the Êzidî community and commenced a policy of ethnic cleansing and genocide on 3 August 2014. All victims were abused and tortured. Male Êzidîs above the age of 12 were killed. Female Êzidîs were enslaved and traded in a complex and public network of sexual slavery. Boys were trained in ISIS camps and militarized. Those who fled to Mount Sinjar were besieged in order to ensure death from starvation, thirst and the blazing sun. Bases of economic support, such as olive groves and irrigation wells, were systematically destroyed and many areas of the Êzidî homeland were sown with landmines and improvised explosive devices (IEDs) to prevent the population from returning.&lt;/p&gt;
&lt;p&gt;The peer-reviewed AYHR publication provides original research, evidence and context on the destruction of Êzidî tangible cultural heritage in the Bahzani/Bashiqa and Sinjar areas of northern Iraq. We present satellite imagery analysis conducted by the EAMENA project, drawing on data provided by Êzidî representatives. According to the Department of Yazidi Affairs in the Ministry of Awqaf and Religious Affairs in the Kurdistan Regional Government 68 Êzidî sites were destroyed by the Islamic State. We consider 16 sites in the Bahzani/Bashiqa area and 8 in the Sinjar area to which access was possible and which could be documented.&lt;/p&gt;
&lt;p&gt;The destruction of cultural heritage sites is most often considered a war crime. Several convictions by the International Criminal Tribunal for the former Yugoslavia (ICTY) and the conviction of Malian Islamist Al-Mahdi by the International Criminal Court (ICC) are well-known. However, heritage destruction may also be prosecuted as the crime of persecution, a crime against humanity. Numerous indictments and convictions before international courts attest to the viability of this approach. Finally, grounded in explicit case law of the International Court of Justice (ICJ), destruction of tangible heritage also serves as evidence of the special intent to destroy a protected group under the crime of genocide.&lt;/p&gt;
&lt;p&gt;We conclude that the destruction of the cultural heritage of the Êzidî people constituted a war crime, a crime against humanity (persecution) and compelling evidence of genocidal intent. We recommend the consideration of cultural heritage destruction in any prosecution of atrocity crimes, especially the crime of genocide.&lt;/p&gt;
&lt;h3 id=&#34;online-availability&#34;&gt;
  Online Availability
  &lt;a class=&#34;heading-link&#34; href=&#34;#online-availability&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The final report is intended to be read in conjunction with the original 2019 report, which includes extensive ground imagery and site descriptions to provide additional context.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;2021 Final Article (peer-reviewed, subscription required): &lt;a href=&#34;https://doi.org/10.1163/9789004466180_006&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.1163/9789004466180_006&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2021 Manuscript (peer-reviewed, open access): &lt;a href=&#34;https://zenodo.org/record/5595882&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://zenodo.org/record/5595882&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2019 Original  Report (open access): &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826125&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.5281/zenodo.3826125&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;contact&#34;&gt;
  Contact
  &lt;a class=&#34;heading-link&#34; href=&#34;#contact&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;For further inquiries, please contact Chief Legal Officer Seán Fobbe (&lt;a href=&#34;mailto:legal@rashid-international.org&#34; &gt;legal@rashid-international.org&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&#34;example-citation&#34;&gt;
  Example Citation
  &lt;a class=&#34;heading-link&#34; href=&#34;#example-citation&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Fobbe, Seán, Natia Navrouzov, Kristen Hopper, Ahmed Khudida Burjus, Graham Philip, Maher G Nawaf, Daniel Lawrence, Helen Walasek, Sara Birjandian, Majid Hassan Ali, Salim Rashidani, Hassan Salih, Dawood Sulaiman Qari, and Faris Mishko. &amp;lsquo;Cultural Heritage Destruction during the Islamic State&amp;rsquo;s Genocide against the Yazidis&amp;rsquo;. In &lt;em&gt;The Asian Yearbook of Human Rights and Humanitarian Law&lt;/em&gt; (pp. 111-144). Brill Nijhoff. DOI: &lt;a href=&#34;https://doi.org/10.1163/9789004466180_006&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.1163/9789004466180_006&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;about-rashid-international&#34;&gt;
  About RASHID International
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-rashid-international&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;RASHID International is a worldwide network of archaeologists and cultural heritage experts dedicated to safeguarding and promoting the cultural heritage of Iraq, ancient Mesopotamia. To assist our Iraqi colleagues, we collect and share information, research and expert knowledge, work to raise public awareness, and both develop and execute strategies to protect heritage sites and other cultural property through international cooperation, advocacy and technical assistance.&lt;/p&gt;
&lt;p&gt;We are registered as a non-profit organisation in Germany and enjoys charitable tax-exempt status under German law. We are an organisation in special consultative status with the United Nations Economic and Social Council since 2019. Learn more about our work at &lt;a href=&#34;https://www.rashid-international.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.rashid-international.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;about-yazda&#34;&gt;
  About Yazda
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-yazda&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Yazda is a global community-led institution that protects and champions all religious and ethnic minority communities, including Assyrians, Chaldeans, Kakais, Shabak, Turkmen, and Yazidis in Iraq, Kurdistan Region, and
Syria. Founded in 2014 at the onset of the genocide perpetuated by Da’esh, also known as the Islamic State in Iraq and Levant (ISIL), against the Yazidis, as well as war crimes and crimes against humanity against other minorities, Yazda leads advocacy and strategic projects in Dohuk, Sinjar, and the Nineveh Plains, as well as global diaspora hubs.&lt;/p&gt;
&lt;p&gt;We work hand-in-hand with our partners, including United Nations agencies, key donor governments, the Iraqi and Kurdistan Regional Governments, and instrumental community organizations to ensure justice, accountability, and a sustainable future for all is swiftly reached. We are fervently determined to ensure Never Again, so that no community and people ever face genocide. Learn more about our work at &lt;a href=&#34;https://www.yazda.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.yazda.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;about-eamena&#34;&gt;
  About EAMENA
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-eamena&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The EAMENA Project rapidly records and evaluates the status of the archaeological landscape of the MENA region in order to create an accessible body of data which can be used by national and international heritage professionals to target those sites most in danger and better plan and implement the preservation and protection of this heritage.  The EAMENA project is a collaboration between the Universities of Oxford, Leicester and Durham in the United Kingdom and is supported by the Arcadia Fund and the British Council&amp;rsquo;s Cultural Protection Fund. Learn more about our work at &lt;a href=&#34;https://www.eamena.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.eamena.org&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Article] Legal Network Analytics 101</title>
      <link>https://seanfobbe.com/posts/2021-10-05_legal-network-analytics-101/</link>
      <pubDate>Tue, 05 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2021-10-05_legal-network-analytics-101/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;p&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the full article (in German):   &lt;a href=&#34;https://rechtsempirie.de/10.25527/re.2021.11/juristische-netzwerkdaten-fuer-einsteiger/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.25527/re.2021.11&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Source code and high-res diagrams:   &lt;a href=&#34;https://doi.org/10.5281/zenodo.5468667&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.5468667&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;abstract&#34;&gt;
  Abstract
  &lt;a class=&#34;heading-link&#34; href=&#34;#abstract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;In this article I discuss a network analytic approach to the internal structure of German laws and regulations, as well as the need for lowering entry barriers to the field. To assist beginners with their first forays into legal network analysis, I provide structural information for almost all German laws and regulations as part of the &amp;lsquo;Corpus des Deutschen Bundesrechts (C-DBR)&amp;rsquo;. This structural information is available in the widely used GraphML format and includes pre-computed visual representations for initial orientation.&lt;/p&gt;
&lt;p&gt;I discuss the advantages and disadvantages of five different kinds of hierarchical graph visualizations (classical dendrogram, two types of circular dendrogram, circle packing and sunburst diagrams) and provide step-by-step instructions to import structural legal data from the C-DBR into graphical analysis software such as GEPHI. I conclude with a detailed breakdown of my methodology and links to the original open source code in the R programming language.&lt;/p&gt;
&lt;h2 id=&#34;structure-of-the-german-civil-code&#34;&gt;
  Structure of the German Civil Code
  &lt;a class=&#34;heading-link&#34; href=&#34;#structure-of-the-german-civil-code&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;figure style=&#34;float:center;&#34;&gt;
&lt;img src=&#34;https://seanfobbe.com/images/Abbildung-1_BGB_Dendrogram_Circular_CurvedEdges-1-small.png&#34; style=&#34;border-radius:100%;&#34;&gt;
&lt;/figure&gt;
&lt;figure style=&#34;float:center;&#34;&gt;
&lt;img src=&#34;https://seanfobbe.com/images/Abbildung-2_BGB_Dendrogram_Circular_StraightEdges-1-small.png&#34; style=&#34;border-radius:100%;&#34;&gt;
&lt;/figure&gt;
</description>
    </item>
    
    <item>
      <title>[New Article] The International Criminal Court&#39;s Draft Policy on Cultural Heritage</title>
      <link>https://seanfobbe.com/posts/2021-04-27_icc-comment/</link>
      <pubDate>Tue, 27 Apr 2021 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2021-04-27_icc-comment/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the full article:   &lt;a href=&#34;https://doi.org/10.5281/zenodo.4722704&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.4722704&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;executive-summary&#34;&gt;
  Executive Summary
  &lt;a class=&#34;heading-link&#34; href=&#34;#executive-summary&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;On 23 March 2021 the Office of the Prosecutor (OTP) of the International Criminal Court (ICC) published a Draft Policy on Cultural Heritage dated 22 March 2021. Following its publication the OTP opened a round of external consultations and requested that comments on the policy be submitted by 16 April 2021.&lt;/p&gt;
&lt;p&gt;We find the Draft Policy on Cultural Heritage to be, in general, an excellent document, both well-crafted in a technical legal sense and detailing a strong and reasonable strategy to prosecute crimes against cultural heritage.&lt;/p&gt;
&lt;p&gt;In &lt;strong&gt;Section 2&lt;/strong&gt; we highlight several positive aspects of the Draft Policy on Cultural Heritage. The OTP’s cooperation with civil society, as expressed through an expert consultation in 2017, the ability to comment on the Draft Policy in the present external consultation and the strategic mention of civil society are most welcome. The explicit link between cultural heritage and human rights will be a boon to the OTP and analysts of international criminal law.&lt;/p&gt;
&lt;p&gt;We commend that the OTP acknowledges that groups and the international community can be victims of crimes against cultural heritage. One of the Draft Policy’s greatest strengths is its holistic definition of cultural heritage, which transcends the traditional focus on physical property and is better able to capture the complexity of culture. We note with appreciation the OTP’s intent to consider the ‘broadest scope of criminality’ and its willingness to conduct a cultural analysis of all of the Rome Statute’s provisions. We support the OTP’s interpretation that war crimes do not include a ‘great importance’ criterion. We strongly encourage the OTP’s consideration of crimes against cultural heritage as possible evidence of the special intent to commit genocide.&lt;/p&gt;
&lt;p&gt;In &lt;strong&gt;Section 3&lt;/strong&gt; we discuss several issues that we feel require further attention by the OTP. We greatly appreciate the OTP’s efforts to add linked citations to open access materials and recommend that it consider citing scholarship with Digital Object Identifiers (DOI). The ‘fundamental rights’ basis of the crime of persecution should be understood to include all human rights, if grave violations have occurred, in line with the jurisprudence of the ICTY.&lt;/p&gt;
&lt;p&gt;We provide some additional context on heritage crimes and recommend that the OTP also investigate the illicit trade in antiquities, either as an accessory form of pillage or as a crime against humanity in its own right, with the Islamic State as an example. To assist in this effort we discuss the application of forensic traceable liquids. We further recommend consideration of jurisdiction based on the active personality principle to prosecute transnational actors. The listing system of the 1954 Hague Convention and its Protocols may prove useful in analyzing aggravating factors and command responsibility. The indictment practice of the ICTY is collected and presented for use by the OTP.&lt;/p&gt;
&lt;p&gt;Based on Sections 2 and 3 we provide a number of recommendations in &lt;strong&gt;Section 4&lt;/strong&gt; and conclude with ideas for further reading in &lt;strong&gt;Section 5&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;about-rashid-international&#34;&gt;
  About RASHID International
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-rashid-international&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;RASHID International is a worldwide network of archaeologists and cultural heritage experts dedicated to safeguarding and promoting the cultural heritage of Iraq, ancient Mesopotamia. To assist our Iraqi colleagues, we collect and share information, research and expert knowledge, work to raise public awareness, and both develop and execute strategies to protect heritage sites and other cultural property through international cooperation, advocacy and technical assistance.&lt;/p&gt;
&lt;p&gt;RASHID International is registered as a non-profit organisation in Germany and enjoys charitable tax-exempt status under German law. We are an organisation in special consultative status with the United Nations Economic and Social Council since 2019. Learn more about our work at &lt;a href=&#34;https://www.rashid-international.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.rashid-international.org&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;All RASHID International research is available open access:   &lt;a href=&#34;https://zenodo.org/communities/rashid-international/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;zenodo.org/communities/rashid-international/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>[New Report] Cultural Heritage Destruction during the Islamic State’s Genocide against the Yazidis</title>
      <link>https://seanfobbe.com/posts/2019-08-02_destroying-soul-yazidis/</link>
      <pubDate>Fri, 02 Aug 2019 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2019-08-02_destroying-soul-yazidis/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://seanfobbe.com/images/RASHID-Yazda-EAMENA-Logos.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the full report:   &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826125&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.3826125&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the full manuscript of the final paper:   &lt;a href=&#34;https://zenodo.org/record/5595882&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;zenodo.org/record/5595882&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Closed Access] Read the final peer-reviewed paper:   &lt;a href=&#34;https://doi.org/10.1163/9789004466180_006&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.1163/9789004466180_006&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;abstract&#34;&gt;
  Abstract
  &lt;a class=&#34;heading-link&#34; href=&#34;#abstract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;On 2 August 2019, the eve of the 5th anniversary of the attacks on Sinjar by the Islamic State (IS), RASHID International, Yazda and the Endangered Archaeology in the Middle East and North Africa Project (EAMENA) released the results of their investigation into cultural heritage destruction during the genocide against the Yazidis, in a report entitled &lt;a href=&#34;https://doi.org/10.5281/zenodo.3826125&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;‘Destroying the Soul of the Yazidis: Cultural Heritage Destruction during the Islamic State’s Genocide against the Yazidis’&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Out of the total of 68 sites reported destroyed we consider 16 sites in the Bahzani/Bashiqa area and 8 in the Sinjar area to which access was possible and which could be documented.&lt;/p&gt;
&lt;p&gt;Discussions of the genocide committed against the Yazidi people by IS from 2014 onwards have generally focused on murder, slavery and sexual exploitation. In this report we analyze the destruction of Yazidi tangible and intangible cultural heritage as a significant facet of the Islamic State’s policy of ethnic cleansing and genocide. Evidence of destruction is collected and presented in context with other criminal acts.&lt;/p&gt;
&lt;p&gt;A revised and updated version of the report was published as a peer-reviewed paper in the Asian Yearbook of Human Rights and Humanitarian Law (AYHL). The AYHL is edited by Professor Javaid Rehman, the United Nations Special Rapporteur on the human rights situation in the Islamic Republic of Iran.&lt;/p&gt;
&lt;h2 id=&#34;content&#34;&gt;
  Content
  &lt;a class=&#34;heading-link&#34; href=&#34;#content&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Section 1&lt;/strong&gt; introduces the Yazidi (Êzidî being the preferred term) people and their strong connection to their cultural heritage.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Section 2&lt;/strong&gt; provides an overview of the genocide against the Yazidis. The Islamic State made no secret of its intention to eradicate the Yazidi community and commenced a coldly calculated policy of ethnic cleansing and genocide on 3 August 2014.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Section 3&lt;/strong&gt; analyzes the relevant framework of international criminal law. The destruction of tangible cultural heritage is most easily prosecuted as a war crime. Several convictions were obtained before the ICTY, as well as one conviction (Al-Mahdi) and one indictment (Ag Mahmoud) before the International Criminal Court. Attacks against tangible heritage may also be prosecuted as the crime of persecution, a crime against humanity. Numerous indictments and convictions before the International Criminal Tribunal for the Former Yugoslavia (ICTY) and other courts attest to the viability of this approach. Finally, destruction of tangible heritage also serves as evidence of the special intent to destroy (dolus specialis) a protected group as part of the crime of genocide.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Section 4&lt;/strong&gt; provides original research, evidence and context on the destruction of Yazidi tangible cultural heritage in the Bahzani/Bashiqa and Sinjar areas of northern Iraq. We present satellite imagery analysis conducted by the EAMENA Project, drawing on data provided by Yazidi representatives. According to the Department of Yazidi Affairs in the Ministry of Awqaf and Religious Affairs in the Kurdistan Regional Government 68 Yazidi sites were destroyed by the Islamic State. We consider 16 sites in the Bahzani/Bashiqa area and 8 in the Sinjar area to which access was possible and which could be documented. We include description and religious importance of each site, satellite analysis and photographic evidence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Section 5&lt;/strong&gt; offers conclusions and recommendations. We conclude that the destruction of the cultural heritage of the Yazidi people constitutes a war crime, a crime against humanity (persecution) and further evidence of genocide.&lt;/p&gt;
&lt;h2 id=&#34;about-rashid-international&#34;&gt;
  About RASHID International
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-rashid-international&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;RASHID International is a worldwide network of archaeologists and cultural heritage experts dedicated to safeguarding and promoting the cultural heritage of Iraq, ancient Mesopotamia. To assist our Iraqi colleagues, we collect and share information, research and expert knowledge, work to raise public awareness, and both develop and execute strategies to protect heritage sites and other cultural property through international cooperation, advocacy and technical assistance.&lt;/p&gt;
&lt;p&gt;RASHID International is registered as a non-profit organisation in Germany and enjoys charitable tax-exempt status under German law. We are an organisation in special consultative status with the United Nations Economic and Social Council since 2019. Learn more about our work at &lt;a href=&#34;https://www.rashid-international.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.rashid-international.org&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;All RASHID International research is available open access:   &lt;a href=&#34;https://zenodo.org/communities/rashid-international/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;zenodo.org/communities/rashid-international/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;about-yazda&#34;&gt;
  About Yazda
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-yazda&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Yazda is a global community-led institution that protects and champions all religious and ethnic minority communities, including Assyrians, Chaldeans, Kakais, Shabak, Turkmen, and Yazidis in Iraq, Kurdistan Region, and
Syria. Founded in 2014 at the onset of the genocide perpetuated by Da’esh, also known as the Islamic State in Iraq and Levant (ISIL), against the Yazidis, as well as war crimes and crimes against humanity against other minorities, Yazda leads advocacy and strategic projects in Dohuk, Sinjar, and the Nineveh Plains, as well as global diaspora hubs.&lt;/p&gt;
&lt;p&gt;We work hand-in-hand with our partners, including United Nations agencies, key donor governments, the Iraqi and Kurdistan Regional Governments, and instrumental community organizations to ensure justice, accountability, and a sustainable future for all is swiftly reached. We are fervently determined to ensure Never Again, so that no community and people ever face genocide. Learn more about our work at &lt;a href=&#34;https://www.yazda.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.yazda.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;about-eamena&#34;&gt;
  About EAMENA
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-eamena&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The EAMENA Project rapidly records and evaluates the status of the archaeological landscape of the MENA region in order to create an accessible body of data which can be used by national and international heritage professionals to target those sites most in danger and better plan and implement the preservation and protection of this heritage.  The EAMENA project is a collaboration between the Universities of Oxford, Leicester and Durham in the United Kingdom and is supported by the Arcadia Fund and the British Council&amp;rsquo;s Cultural Protection Fund. Learn more about our work at &lt;a href=&#34;https://www.eamena.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.eamena.org&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>[New Article] Heritage and Cultural Healing in Iraq</title>
      <link>https://seanfobbe.com/posts/2019-04-26_heritage-cultural-healing/</link>
      <pubDate>Fri, 26 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2019-04-26_heritage-cultural-healing/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the full article:   &lt;a href=&#34;https://doi.org/10.1080/13527258.2019.1608585&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.1080/13527258.2019.1608585&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;abstract&#34;&gt;
  Abstract
  &lt;a class=&#34;heading-link&#34; href=&#34;#abstract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Against the backdrop of the destruction of Iraqi heritage over the past quarter of a century, this article critically reviews key aspects of the current state of Iraq’s cultural heritage, including damage to heritage buildings caused by Daesh in Iraq’s second largest city, Mosul.&lt;/p&gt;
&lt;p&gt;We bring together Iraqi and non-Iraqi expertise in heritage, archaeology, and human rights law to frame our approach, building on the movement to link cultural diversity, heritage, and cultural rights. We emphasise the need for planning to enhance protection of Iraq’s heritage, in particular through the preparation of inventories, the provision of resources for heritage education in schools and the development of Iraq’s museum sector. Iraq’s presence on the UNESCO World Heritage Lists needs to be enhanced, and the issues of illicit site looting and traffic in looted antiquities must be addressed within international contexts.&lt;/p&gt;
&lt;p&gt;Iraq’s future accession as State Party to the 1999 Second Protocol to the 1954 Hague Convention is a priority in achieving these goals. The paper stresses the need for co-creation of heritage knowledge and a gender-sensitive human rights approach for the future of Iraq’s globally significant cultural heritage.&lt;/p&gt;
&lt;h2 id=&#34;about-rashid-international&#34;&gt;
  About RASHID International
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-rashid-international&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;RASHID International is a worldwide network of archaeologists and cultural heritage experts dedicated to safeguarding and promoting the cultural heritage of Iraq, ancient Mesopotamia. To assist our Iraqi colleagues, we collect and share information, research and expert knowledge, work to raise public awareness, and both develop and execute strategies to protect heritage sites and other cultural property through international cooperation, advocacy and technical assistance.&lt;/p&gt;
&lt;p&gt;RASHID International is registered as a non-profit organisation in Germany and enjoys charitable tax-exempt status under German law. We are an organisation in special consultative status with the United Nations Economic and Social Council since 2019. Learn more about our work at &lt;a href=&#34;https://www.rashid-international.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.rashid-international.org&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;All RASHID International research is available open access:   &lt;a href=&#34;https://zenodo.org/communities/rashid-international/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;zenodo.org/communities/rashid-international/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>[New Article] Enhanced Protection Policy Brief</title>
      <link>https://seanfobbe.com/posts/2019-04-24_how-to-protect-outstanding-cultural-heritage/</link>
      <pubDate>Wed, 24 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://seanfobbe.com/posts/2019-04-24_how-to-protect-outstanding-cultural-heritage/</guid>
      <description>&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;&lt;strong&gt;[Open Access]&lt;/strong&gt; Read the full article:   &lt;a href=&#34;https://doi.org/10.5281/zenodo.3822201&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;doi.org/10.5281/zenodo.3822201&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&#34;abstract&#34;&gt;
  Abstract
  &lt;a class=&#34;heading-link&#34; href=&#34;#abstract&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Cultural heritage around the world continues to be threatened by war. The 1954 Convention for the Protection of Cultural Property in the Event of Armed Conflict (&amp;lsquo;1954 Hague Convention&amp;rsquo;) automatically confers protected status on every cultural property &amp;ldquo;of great importance to the cultural heritage of every people&amp;rdquo;. This very universality, however, is also its greatest weakness: it does not provide visibility to individual cultural sites or help military planners and field commanders choose priorities.&lt;/p&gt;
&lt;p&gt;In addition, the system of Special Protection under the 1954 Hague Convention is in a state of relative dormancy due to its requirement that sites be located an adequate distance from military objectives, and because of the politicization of the inscription process during the Angkor debacle of the 1970s. World Heritage status functions as a stop-gap measure for some sites, but is financially infeasible for most States and, in any case, provides no additional legal protection.&lt;/p&gt;
&lt;p&gt;The system of Enhanced Protection under the 1999 Second Protocol to the 1954 Hague Convention addresses these shortcomings by uniting three important considerations: wider scope, ease of access, and strong legal protection. This article recommends that States ratify the 1999 Second Protocol, nominate relevant sites and objects for Enhanced Protection, and support the system of Enhanced Protection by providing and requesting financial and technical assistance from the Fund for the Protection of Cultural Property in the Event of Armed Conflict.&lt;/p&gt;
&lt;h2 id=&#34;about-rashid-international&#34;&gt;
  About RASHID International
  &lt;a class=&#34;heading-link&#34; href=&#34;#about-rashid-international&#34;&gt;
    &lt;i class=&#34;fa fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;
    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;
  &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;RASHID International is a worldwide network of archaeologists and cultural heritage experts dedicated to safeguarding and promoting the cultural heritage of Iraq, ancient Mesopotamia. To assist our Iraqi colleagues, we collect and share information, research and expert knowledge, work to raise public awareness, and both develop and execute strategies to protect heritage sites and other cultural property through international cooperation, advocacy and technical assistance.&lt;/p&gt;
&lt;p&gt;RASHID International is registered as a non-profit organisation in Germany and enjoys charitable tax-exempt status under German law. We are an organisation in special consultative status with the United Nations Economic and Social Council since 2019. Learn more about our work at &lt;a href=&#34;https://www.rashid-international.org&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;www.rashid-international.org&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;notice info&#34;&gt;
  &lt;div class=&#34;notice-title&#34;&gt;
    &lt;i class=&#34;fa fa-exclamation-circle&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Info
  &lt;/div&gt;
  &lt;div class=&#34;notice-content&#34;&gt;All RASHID International research is available open access:   &lt;a href=&#34;https://zenodo.org/communities/rashid-international/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;zenodo.org/communities/rashid-international/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

</description>
    </item>
    
  </channel>
</rss>
