<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Open-Source on Sebastian Spicker</title>
    <link>https://sebastianspicker.github.io/tags/open-source/</link>
    <description>Recent content in Open-Source on Sebastian Spicker</description>
    <image>
      <title>Sebastian Spicker</title>
      <url>https://sebastianspicker.github.io/og-image.png</url>
      <link>https://sebastianspicker.github.io/og-image.png</link>
    </image>
    <generator>Hugo -- 0.160.0</generator>
    <language>en</language>
    <lastBuildDate>Tue, 10 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sebastianspicker.github.io/tags/open-source/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Automate the Boring Stuff: Setlist to Playlist</title>
      <link>https://sebastianspicker.github.io/posts/setlist-to-playlist/</link>
      <pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://sebastianspicker.github.io/posts/setlist-to-playlist/</guid>
      <description>I love concerts. I love setlists. I hate building the playlist manually afterward. But do I really? A small automation project, a Deftones show in Dortmund, and the question of whether you should automate something you kind of enjoy.</description>
      <content:encoded><![CDATA[<p>Saturday was the Deftones at the Westfalenhalle in Dortmund. One of those concerts where the setlist is part of the experience — where you register, with something close to physical relief, that the arc landed exactly right, and you spend the Uber home mentally replaying the order.</p>
<p>Sunday I built a playlist from it. It took about forty minutes.</p>
<p>This is the post about why that number is already too low, and also possibly too high.</p>
<h2 id="the-ritual">The Ritual</h2>
<p>There is a specific kind of concert listening that happens in the days after a show. You go home, you look up the setlist — setlist.fm is the canonical archive, maintained with an almost academic precision by people who care — and you build a playlist from it in whatever streaming app you use. Then you play it through, in order, and what comes back is not just the music but the spatial memory of the room, the sound mix, the moment the lights dropped for that particular song.</p>
<p>I have been doing this for years. It is a ritual, and like most rituals, part of its meaning is in the doing. The forty minutes of searching song by song, the occasional discovery that a deep cut is on Apple Music in one version but not another, the fiddling with live versus studio — that friction is not purely annoying. It is part of the processing.</p>
<p>And yet. The pile of unprocessed setlists sits in a folder. Shows I attended and never got around to. Setlists I meant to build into playlists and didn&rsquo;t, because the forty minutes were not available that week, and then the moment passed. The ritual unrealised is just a list of song titles.</p>
<p>This is the dilemma, and it is not entirely trivial.</p>
<h2 id="why-this-is-harder-than-it-should-be">Why This Is Harder Than It Should Be</h2>
<p>The setlist.fm API is excellent. It gives you structured data: artist, venue, date, song titles in order, with notations for encores, covers, and dropped songs. What it does not give you is streaming IDs. The song title is a string; the Apple Music track is an object with a catalog ID, a duration, multiple versions, regional availability, and the possibility of not existing at all in the catalog of your country.</p>
<p>The matching problem — connecting a string like &ldquo;Change (In the House of Flies)&rdquo; to the correct Apple Music track, filtered for the right album version, ignoring the live recordings you did not ask for — is not hard, but it is fiddly. You can get 80% of a setlist matched automatically without much effort. The remaining 20% are the covers, the deep cuts, the songs with subtitles in parentheses that differ between the setlist record and the catalog metadata.</p>
<p>Spotify has a fairly rich ecosystem of community tools for exactly this workflow, because Spotify&rsquo;s API is permissive and well-documented and the auth flow is reasonable for third-party developers. Apple Music is harder. The MusicKit framework is real and capable, but the authentication requires managing a private key and JWT tokens signed with developer credentials — not the OAuth dance most developers are used to. The result is that the setlist → Apple Music pipeline is significantly underbuilt compared to the Spotify equivalent.</p>
<p>This is partly why I built <a href="https://github.com/sebastianspicker/setlist-to-playlist">setlist-to-playlist</a> as a PWA rather than reaching for an existing tool.</p>
<h2 id="how-it-works">How It Works</h2>
<p>The app is a Progressive Web App — installable, mobile-friendly, works as a small tool you open on your phone in the taxi home from a show — built on Next.js with a monorepo structure managed by pnpm and Turbo. The architecture is in three phases:</p>
<p><strong>Import.</strong> You paste a setlist.fm URL or ID. The app queries setlist.fm through a server-side proxy — the API key lives on the server and never touches the client — and returns the structured setlist data: songs in order, with metadata about covers, medleys, and notes.</p>
<p><strong>Preview and matching.</strong> The core package runs a matching algorithm against the Apple Music catalog, using the MusicKit JS API for browser-based catalog search. For each song title, it searches Apple Music and presents the best candidate, giving you the chance to confirm or swap before anything is written. This is the step where the 20% problem is addressed manually — the app handles the obvious cases automatically and surfaces the ambiguous ones for human judgement.</p>
<p><strong>Export.</strong> Once you are happy with the track list, the app creates a playlist in your Apple Music library. MusicKit handles the authentication in-browser; the backend generates the JWT tokens using credentials from Apple Developer, signing with the private key server-side so it stays off the client.</p>
<p>The whole thing is local-first in the sense that matters: the Apple Music authentication is between your browser and Apple, and no playlist data or listening history is stored by the app. The only thing the server touches is the API key proxying and the JWT generation.</p>
<h2 id="the-actual-experience">The Actual Experience</h2>
<p>After the Deftones show: opened the app on the phone, pasted the setlist.fm URL, had the playlist in Apple Music in about four minutes. Three tracks needed manual confirmation — two because of live-versus-studio ambiguity, one because a cover required a search adjustment, the kind of edge case where the name setlist.fm records differs from what appears in regional streaming catalogs.</p>
<p>Four minutes instead of forty. Mission accomplished.</p>
<p>And yet.</p>
<p>I noticed, processing the setlist that quickly, that something was missing. Not the music — the music was all there, in order, correct. What was missing was the time spent inside the setlist. The forty minutes of handling each song is also forty minutes of thinking about each song, of remembering where in the set it fell, of deciding which album version you want to hear. The automation removed the friction and also removed the processing.</p>
<p>I am not sure this is a problem. It is probably more accurate to say that it is a trade-off, and that what trade-off you want depends on what you are doing with the ritual. If the backlog is the problem — the pile of unprocessed shows — the automation solves it cleanly. If the processing itself is the point, you probably should not automate it, and the tool is there for when you want it.</p>
<p>That is the correct relationship to automation, I think. Not &ldquo;this should always be automated&rdquo; or &ldquo;this should never be automated&rdquo;, but &ldquo;here is a tool that removes the mechanical part; use it when the mechanical part is not the point&rdquo;.</p>
<h2 id="a-note-on-the-tech-stack">A Note on the Tech Stack</h2>
<p>For the interested: Next.js 15 with App Router, pnpm workspaces with Turbo for the monorepo, MusicKit JS for Apple Music integration, setlist.fm REST API. The JWT for Apple Music uses the <code>jose</code> library for token signing. The matching logic lives in a standalone <code>packages/core</code> module, which makes it testable in isolation and reusable if anyone wants to port this to a different frontend or a CLI.</p>
<p>The repo is at <a href="https://github.com/sebastianspicker/setlist-to-playlist">github.com/sebastianspicker/setlist-to-playlist</a>. PRs welcome, particularly around the matching heuristics — that is the part where there is the most room for improvement.</p>
<hr>
<p>The Deftones were exceptional, for the record. The Westfalenhalle was loud in the way that only a concrete hall that size can be loud, which is to say: correctly loud.</p>
<p>The playlist is good. I am glad it took four minutes and not forty.</p>
<p>I am also glad I know what I gave up.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Your Encryption Keys Are in Virginia: On BitLocker, the FBI, and Why European Universities Need Sovereign Software</title>
      <link>https://sebastianspicker.github.io/posts/public-money-public-code/</link>
      <pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://sebastianspicker.github.io/posts/public-money-public-code/</guid>
      <description>Microsoft confirmed this week that it hands BitLocker encryption keys to the FBI on receipt of a valid legal order. Windows 11 uploads them to your Microsoft account by default, without asking. For European universities that handle research data, student records, and HR information under GDPR, this is not an abstract concern. It is a structural problem. The answer is not a technical workaround. It is sovereign, publicly funded, openly licensed software — and a principle that the EU has articulated but not consistently practised: public money, public code.</description>
      <content:encoded><![CDATA[<h2 id="the-story">The Story</h2>
<p>Last week Microsoft confirmed, in response to reporting by TechCrunch and
others, that it had handed BitLocker recovery keys for three laptops to
the FBI following a valid court order. The underlying case was a fraud
investigation in Guam. The laptops were encrypted with BitLocker — the
full-disk encryption built into Windows, which many institutions and
individuals rely on as their primary protection against unauthorised
data access.</p>
<p>The mechanism is simple and was not widely known. When you set up a
modern Windows device and sign in with a Microsoft account, BitLocker
automatically uploads your recovery key to Microsoft&rsquo;s cloud. No
prominent notification. No opt-in. The key sits there, associated with
your account, accessible to Microsoft. When a US court issues a lawful
order, Microsoft complies. Redmond confirmed this is policy, not an
exception.</p>
<p>Bruce Schneier&rsquo;s <a href="https://www.schneier.com/blog/archives/2026/02/microsoft-is-giving-the-fbi-bitlocker-keys.html">response</a>
was characteristically direct: &ldquo;The lesson here is that if you have
access to keys, eventually law enforcement is going to come.&rdquo; Jennifer
Granick at the ACLU called remote key storage in this configuration
&ldquo;quite dangerous,&rdquo; particularly given that the same mechanism is
available to any government that can issue a Microsoft-compatible legal
order — not only the US Department of Justice.</p>
<p>That last point is the one European institutions should be reading
carefully.</p>
<hr>
<h2 id="why-this-is-a-european-problem">Why This Is a European Problem</h2>
<p>The CLOUD Act — the US Clarifying Lawful Overseas Use of Data Act,
passed in 2018 — allows US law enforcement to compel US-based companies
to produce data held on servers anywhere in the world. If your
university stores its BitLocker recovery keys in a Microsoft account,
and Microsoft is a US company, the geographic location of the servers
those keys sit on does not limit a US court&rsquo;s reach. The keys are in
Virginia, legally, wherever the hardware is.</p>
<p>This is not speculation. It is the explicit structure of US digital law.
The European Court of Justice has repeatedly ruled that certain US
surveillance frameworks are incompatible with GDPR — the invalidation
of Privacy Shield in <em>Schrems II</em> (2020) being the most prominent
example. But court rulings about data transfer frameworks do not
automatically change the operational reality for an institution whose
laptops are running Windows with default settings.</p>
<p>European universities hold exactly the kinds of data that make this
a real rather than a theoretical concern:</p>
<ul>
<li><strong>Research data</strong>: medical studies, clinical trials, interviews with
human subjects, social science datasets — all subject to strict
ethical and legal protections</li>
<li><strong>Student records</strong>: academic performance, personal circumstances,
disciplinary proceedings</li>
<li><strong>HR data</strong>: employment contracts, salary records, health information,
union activity — particularly sensitive under German and EU labour
law</li>
<li><strong>Correspondence and draft documents</strong>: research in progress, grant
applications, peer review material</li>
</ul>
<p>If the disk holding any of this is encrypted with BitLocker, and the
recovery key has been uploaded to a Microsoft account by default, the
encryption provides less protection than it appears to. The key is
accessible to a foreign state with a court order. That state is not
party to GDPR.</p>
<hr>
<h2 id="the-structural-problem">The Structural Problem</h2>
<p>The BitLocker story is one instance of a larger pattern. It is not that
Microsoft behaved unusually or maliciously — it complied with a lawful
order in its home jurisdiction, as it is legally required to do. The
problem is structural: <strong>when an institution depends on a closed-source,
US-headquartered platform for its critical infrastructure, the
institution has delegated control over its own data to an entity whose
legal obligations lie elsewhere.</strong></p>
<p>This applies beyond encryption. It applies to email (Exchange Online,
Outlook), document storage (SharePoint, OneDrive), communication
(Teams), identity management (Azure Active Directory), and any service
that runs through a Microsoft account or Azure tenant. For each of these:
the data is subject to Microsoft&rsquo;s terms, and Microsoft is subject to
US law.</p>
<p>The same argument applies, with different specifics, to Google Workspace
and any other US-headquartered platform. The issue is not that these
companies are bad actors. It is that their legal accountability and the
legal accountability of European public institutions point in
incompatible directions, and the institutions mostly have not noticed.</p>
<hr>
<h2 id="what-sovereign-software-looks-like">What Sovereign Software Looks Like</h2>
<p>The alternative is not paranoia and air-gapped servers. It is a
coherent strategy for institutional digital infrastructure that is
based on software the institution controls.</p>
<p>In Germany, this conversation has a name and a project. <strong>OpenDesk</strong>
— developed under the aegis of the federal and state governments —
is a stack of open-source tools (Nextcloud, Collabora Online, Matrix/
Element, Jitsi, Keycloak, Open-Xchange) assembled into an integrated
workspace alternative to Microsoft 365. The <em>Souveräner Arbeitsplatz</em>
(sovereign workspace) concept behind it is exactly what the BitLocker
story illustrates: if the software is open, the keys stay in your
institution, and no foreign court can reach them via a warrant served
on a US company.</p>
<p>Several German states and federal agencies have been piloting OpenDesk.
The city of Munich&rsquo;s earlier experiment with Linux (LiMux) and its
eventual rollback to Windows is the cautionary tale here — not because
open source failed, but because the transition was not supported
seriously enough over time, and the incumbent vendor&rsquo;s lobbying was.
The BitLocker story is a reminder of what is at stake in that political
negotiation.</p>
<p>The FSFE&rsquo;s <strong>&ldquo;Public Money? Public Code!&rdquo;</strong> campaign has articulated
the principle cleanly: software developed with public funding should
be released as open-source software. The argument is not only about
freedom as an abstract value. It is about the practical consequence of
being locked into a proprietary platform: your institution loses the
ability to audit what the software does, to modify it to meet your
requirements, to host it where your data protection law applies, and to
switch providers without losing access to your own data.</p>
<hr>
<h2 id="what-i-do-and-why">What I Do, and Why</h2>
<p>I work at a publicly funded institution. The software I build for
institutional contexts — campus infrastructure, workforce management,
archival systems, alert systems — is public.</p>
<p>Not because I am ideologically committed to open source as a movement,
but because the alternative is incoherent. If I build tooling for a
university with public funds and keep it closed, I have produced a
private asset with public money, duplicated by every institution that
builds the same thing independently, inspectable by nobody, and
ultimately dependent on my continued willingness to maintain it or
hand it over. None of those outcomes serve the institutions I am
building for.</p>
<p>Here is what that looks like in practice:</p>
<p><strong><a href="https://github.com/sebastianspicker/zammad-ticket-archiver">zammad-ticket-archiver</a></strong> —
automated archival of Zammad support tickets as cryptographically
signed PDFs, with RFC 3161 timestamps for non-repudiation. Built for
institutions that need legally defensible audit trails of their
helpdesk operations. The signing infrastructure is self-hosted; no
external party holds the keys.</p>
<p><strong><a href="https://github.com/sebastianspicker/alarm-broker">alarm-broker</a></strong> —
a silent panic alarm broker for campus facilities. Receives emergency
triggers from hardware devices (Yealink keys), distributes
notifications via Zammad, SMS, and Signal, with acknowledgment
tracking and escalation scheduling. Runs locally, logs to
self-hosted PostgreSQL; no external dependency for the alarm path.</p>
<p><strong><a href="https://github.com/sebastianspicker/campus-app-kit">campus-app-kit</a></strong> —
a React Native / Expo starter for university mobile applications,
with a pluggable Node.js backend designed for institutional data
sources (room booking, events, schedules). The architecture separates
institution-specific connectors (which institutions keep private) from
the shared foundation (which is public). Any university can take it
and build on it without starting from scratch.</p>
<p><strong><a href="https://github.com/sebastianspicker/cueq">cueq</a></strong> — an integrated
workforce management system for German universities under TV-L
(the collective agreement for public sector employees in the German
states). Handles time recording, shift planning, absence management,
payroll export, and GDPR-compliant audit trails. Built around NestJS
and Next.js, with a PostgreSQL backend and Honeywell terminal
integration. The HR data stays on the institution&rsquo;s own infrastructure.</p>
<p>These are all boring. They are not research contributions; they are
plumbing. But plumbing is what holds institutions together, and the
question of who controls the plumbing — and under whose legal
jurisdiction — is exactly the question the BitLocker story makes
visible.</p>
<hr>
<h2 id="the-principle">The Principle</h2>
<p>Public money, public code. If an institution funded by public money
develops software for its own operations, that software should be
released under an open licence, inspectable, forkable, and deployable
by any institution with the same needs.</p>
<p>The corollary: institutions funded by public money should prefer
software that is itself openly licensed, auditable, and deployable
on infrastructure the institution controls. Not as a blanket ban on
proprietary tools where they are genuinely the best option, but as a
starting presumption that shifts the burden of justification.</p>
<p>The BitLocker story is not a story about Microsoft doing something
wrong. It is a story about the logical consequence of a procurement
decision that was made without asking &ldquo;and what happens when a US
court sends a subpoena?&rdquo; That question was available in 2018 when the
CLOUD Act passed, in 2020 when <em>Schrems II</em> was decided, and before
both. It is still available now, for every institution that has not
yet asked it.</p>
<hr>
<p><em>The FSFE &ldquo;Public Money? Public Code!&rdquo; campaign is at
<a href="https://publiccode.eu/">publiccode.eu</a>. The OpenDesk project is at
<a href="https://opendesk.de/">opendesk.de</a>. The original TechCrunch reporting
on the BitLocker handover is at
<a href="https://techcrunch.com/2026/01/23/microsoft-gave-fbi-a-set-of-bitlocker-encryption-keys-to-unlock-suspects-laptops-reports/">techcrunch.com</a>.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Inner Echo: On Making Mental Illness Visible, and What That Even Means</title>
      <link>https://sebastianspicker.github.io/posts/inner-echo/</link>
      <pubDate>Thu, 28 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://sebastianspicker.github.io/posts/inner-echo/</guid>
      <description>I am on the spectrum. Code is easy; emotions are not. This post is about the phrase &amp;lsquo;making mental illness visible&amp;rsquo;, what science actually tells us about that goal, why a non-affected person fundamentally cannot understand — and why trying still matters.</description>
      <content:encoded><![CDATA[<p>There is a phrase that appears in every mental health awareness campaign, every destigmatisation effort, every well-meaning poster in a university corridor: <em>make it visible</em>. Shine a light. Break the silence. Reduce stigma by talking about it.</p>
<p>I agree with the impulse. I am less sure about what the phrase actually asks of us, or what it assumes is possible. This post is my attempt to think through that question — and to document a small project that emerged from it.</p>
<h2 id="a-personal-starting-point">A Personal Starting Point</h2>
<p>I am on the spectrum. I was diagnosed in adulthood, which is not unusual, and the diagnosis explained a great deal about a life spent finding some things effortless and others bewildering.</p>
<p>Code is easy. The internal structure of a problem, the satisfaction of a clean abstraction, the deep rabbit holes that open when a concept catches my attention and refuses to let go — that is the natural medium. Hyperfocus is not a metaphor for me; it is literally how I spend a Tuesday afternoon. I have written entire systems because I could not stop.</p>
<p>Emotions are harder. Not absent — that is a misconception I will address in a moment — but differently structured. Reading a room is work. Social cues that seem to operate as obvious background noise for most people arrive for me as data that requires conscious decoding. The reverse appears to be true for most neurotypical people: emotional processing runs in the background, effortlessly; formal abstraction requires deliberate effort.</p>
<p>Neither is better. They are different cognitive architectures, and both come with costs.</p>
<p>I raise this not to centre myself, but because it is relevant to the question the post is actually about. I spent years navigating a social world that was not built for how I process it. That experience sits close to the experience of people with mental illness — not the same, but adjacent. And it made me think hard about what &ldquo;understanding&rdquo; across neurological difference actually means.</p>
<h2 id="mental-illness-is-still-a-grey-zone">Mental Illness Is Still a Grey Zone</h2>
<p>The progress on mental health stigma over the past decade is real. People talk about therapy more openly than they did. Burnout is acknowledged at work. The language of mental health has entered mainstream use — sometimes usefully, sometimes in ways that dilute clinical concepts into lifestyle descriptors. Anxiety is now a brand attribute. Trauma is a metaphor for mild inconvenience. This is a problem, but it is a second-order problem; the first-order problem — that serious mental illness is still heavily stigmatised, underfunded, and misunderstood — is the one that matters more.</p>
<p>Corrigan and Watson <a href="#ref-1">[1]</a> documented what the stigma research consistently shows: people with mental illness face two compounding problems. The first is public stigma <a href="#ref-3">[3]</a> — the prejudice of others, leading to discrimination in employment, housing, relationships. The second is self-stigma — the internalised application of those same prejudices to oneself. The second is often worse. It is the mechanism by which stigma becomes a barrier to seeking help, creating the feedback loop that keeps serious mental illness invisible precisely because the people experiencing it have been taught that it is shameful.</p>
<p>The phrase &ldquo;make it visible&rdquo; is a response to this dynamic. If mental illness is visible — discussed, depicted, normalised — the argument goes that stigma decreases. There is evidence for this. Contact-based interventions, where people without mental illness interact with people who have it, consistently outperform education-only approaches <a href="#ref-2">[2]</a>. The visibility of real people matters more than information campaigns.</p>
<p>But there is a difference between visibility and understanding.</p>
<h2 id="what-visibility-actually-achieves">What Visibility Actually Achieves</h2>
<p>When we say &ldquo;make it visible&rdquo;, we usually mean one of several different things, which are worth separating.</p>
<p><strong>Normalisation</strong> means that a condition becomes part of accepted human variation rather than a mark of failure or danger. This is achievable through visibility and is genuinely important. Knowing that a colleague takes antidepressants, or that a public figure manages bipolar disorder, reduces the sense of aberration. It does not require the observer to understand the experience — only to register that it exists and is survivable.</p>
<p><strong>Representation</strong> means that people with a condition see themselves reflected in culture, media, and institutions. This matters for the affected person; it is about recognition, not about inducing empathy in the non-affected.</p>
<p><strong>Empathy</strong> is the hardest and most frequently over-promised goal. It is what the simulation approaches aim for: put a neurotypical person in a room with distorted audio and flickering visuals and tell them this is what psychosis sounds like. Does it work?</p>
<p>The honest answer from the research is: somewhat, temporarily, and with significant caveats.</p>
<h2 id="the-empathy-gap">The Empathy Gap</h2>
<p>Let me be direct about something. A person who has never experienced severe depression cannot know what it is. Not in the way that a person who has experienced it knows it. This is not a failure of empathy or imagination; it is a structural fact about how knowledge of mental states works.</p>
<p>Philosophers call this the problem of other minds. We have no direct access to another person&rsquo;s experience. We infer it, imperfectly, by analogy to our own. For experiences that have no analogue in our own history, inference breaks down. You can read every clinical description of dissociation ever written and still not know what dissociation is, because the knowledge that matters is not propositional — it is not a set of facts — but experiential.</p>
<p>This is the gap that simulation approaches try to bridge, and it is genuinely unbridgeable. What simulation can do is something weaker but not worthless: it can create an affective response, a discomfort, a disruption of the observer&rsquo;s normal processing, that functions as a rough proxy signal. Not &ldquo;now you know what it is like&rdquo;, but &ldquo;now you have a small, incomplete, distorted approximation of some dimension of the experience&rdquo;.</p>
<p>The risk is misrepresentation. Schizophrenia simulations have been criticised — fairly — for reducing a complex condition to its most dramatic phenomenological features (auditory hallucinations, paranoia) while omitting the cognitive, relational, and longitudinal aspects that define how people actually live with the condition. A five-minute visual experience of &ldquo;what depression feels like&rdquo; that emphasises darkness and slow motion tells you almost nothing about the specific exhaustion of getting through a Tuesday morning, or the way time warps over months.</p>
<p>So: you cannot truly understand what you have not experienced. But you can try to approximate something, and approximation, done honestly and with appropriate epistemic humility, is better than nothing.</p>
<h2 id="metaphor-as-a-communication-tool">Metaphor as a Communication Tool</h2>
<p>There is a long tradition of using metaphor and art to communicate internal states that resist direct description. This is not a bug; it is a feature of how language handles subjective experience.</p>
<p>The poet uses metaphor because &ldquo;my heart is heavy&rdquo; is not literally true but captures something that &ldquo;I am experiencing low mood&rdquo; does not. The musician uses dissonance and rhythm to structure emotional experience in the listener. The visual artist uses colour and texture to evoke states rather than depict them. None of these are representations in the scientific sense — they do not accurately model the referent — but they create a kind of resonance that purely descriptive language cannot.</p>
<p>Mental health communication has increasingly moved in this direction. The vocabulary of &ldquo;emotional weight&rdquo;, &ldquo;spiralling&rdquo;, &ldquo;crashing&rdquo;, &ldquo;the fog&rdquo; — these are metaphors that have become clinical shorthand precisely because they communicate something essential that clinical terms do not. When someone says &ldquo;I couldn&rsquo;t get out of bed&rdquo;, they are not describing paralysis; they are describing a particular quality of anhedonia and executive dysfunction that no diagnostic manual entry captures as well.</p>
<p>This is the space where a project like inner-echo operates.</p>
<h2 id="inner-echo-the-idea">Inner Echo: The Idea</h2>
<p><a href="https://github.com/sebastianspicker/inner-echo">inner-echo</a> is a browser-based audiovisual experiment. It takes a webcam feed and applies condition-specific visual and audio effects that function as metaphorical overlays on the user&rsquo;s own image. The output is not a simulation of a mental health condition in any clinical sense. It is an attempt to construct a visual and auditory language for internal states, using the user&rsquo;s own presence as the anchor.</p>
<p>The technical architecture is deliberately minimal: React, WebGL/Canvas for video processing, optional WebAudio. Everything runs in the browser, client-side, with no backend. No data leaves the device. This is not incidental — privacy is load-bearing for a project that deals with sensitive self-reflection. Safe Mode and an emergency stop function are built in.</p>
<p>The condition-profile system supports three modes:</p>
<ul>
<li><strong>Preset mode</strong>: a single-condition metaphorical composition — one set of effects mapped to one cluster of experiences</li>
<li><strong>Multimorbid mode</strong>: weighted stacking of multiple condition profiles, acknowledging that most people with mental health conditions do not have one thing</li>
<li><strong>Symptom-first mode</strong>: dimension-level control, letting the user build from individual symptom representations rather than diagnostic labels</li>
</ul>
<p>The last of these is, I think, the most honest design choice. Diagnostic categories are administrative conveniences as much as they are natural kinds. Two people with the same diagnosis can have radically different experiences. Structuring the system around dimensions of experience rather than labels is both clinically more accurate and communicatively more flexible.</p>
<h2 id="what-it-is-not">What It Is Not</h2>
<p>Being clear about limitations is not false modesty; it is the only way this kind of project retains its integrity.</p>
<p>inner-echo is not a simulation of any condition in the sense of accurately modelling its phenomenology. It does not claim to show you &ldquo;what depression is like&rdquo;. It offers metaphorical approximations of some dimensions of some experiences, and it does so using effects that are legible to the observer — visual distortion, audio modification, altered feedback — that bear a designed but non-literal relationship to the internal states they are meant to evoke.</p>
<p>It is not a diagnostic tool. It is not a therapeutic intervention. It is not a substitute for any clinical process.</p>
<p>What it might be is a starting point for a conversation. Something a person experiencing a condition could use to gesture toward an aspect of their experience. Something a person without that experience could encounter with enough curiosity to ask a better question than they would have otherwise.</p>
<p>That is a modest claim. I think modest claims are appropriate here.</p>
<h2 id="why-this-why-now">Why This, Why Now</h2>
<p>Mental health awareness has become a genre. The awareness campaigns, the celebrity disclosures, the workplace wellness programmes — these are real goods, and I do not want to be cynical about them. But the communication problem has not been solved. The words exist. The willingness to use them, in many contexts, exists. What is still missing is a language for the texture of experience that the words point to but do not reach.</p>
<p>I find myself better able to build something than to explain it in words. That is probably a spectrum thing. inner-echo is an attempt to build toward a language that I do not fully have — for my own internal experience, and for the experiences of people navigating conditions quite different from mine.</p>
<p>The gap cannot be closed. But the attempt to reach across it is worth making, and worth being honest about.</p>
<hr>
<h2 id="references">References</h2>
<p><span id="ref-1"></span>[1] Corrigan, P.W. &amp; Watson, A.C. (2002). Understanding the impact of stigma on people with mental illness. <em>World Psychiatry</em>, 1(1), 16–20.</p>
<p><span id="ref-2"></span>[2] Corrigan, P.W., Morris, S.B., Michaels, P.J., Rafacz, J.D. &amp; Rüsch, N. (2012). Challenging the public stigma of mental illness: A meta-analysis of outcome studies. <em>Psychiatric Services</em>, 63(10), 963–973.</p>
<p><span id="ref-3"></span>[3] Goffman, E. (1963). <em>Stigma: Notes on the Management of Spoiled Identity</em>. Prentice-Hall.</p>
<p>inner-echo repository: <a href="https://github.com/sebastianspicker/inner-echo">https://github.com/sebastianspicker/inner-echo</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Why Universities Need Their Own YouTube</title>
      <link>https://sebastianspicker.github.io/posts/educast-nrw-hochschul-youtube/</link>
      <pubDate>Tue, 05 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://sebastianspicker.github.io/posts/educast-nrw-hochschul-youtube/</guid>
      <description>In June 2022 I presented on educast.nrw at the Tag der Lehre at HfMT Köln. This is the longer argument behind that talk: why universities should not outsource their video infrastructure to commercial platforms, and what a better alternative looks like in practice.</description>
      <content:encoded><![CDATA[<p>In June 2022 I gave a presentation at the <em>Tag der Lehre</em> at the Hochschule für Musik und Tanz Köln on video-supported teaching with <a href="https://educast.nrw/de/">educast.nrw</a>. Presenting something to colleagues who already use ILIAS every day and are broadly skeptical of yet another platform is a useful discipline. You have to answer the obvious question fast: why should we care about this, when YouTube works fine?</p>
<p>The short answer is that YouTube does not work fine, for reasons that matter specifically to universities. The longer answer is what this post is about.</p>
<h2 id="what-is-wrong-with-youtube">What Is Wrong with YouTube</h2>
<p>YouTube is the world&rsquo;s dominant video platform. It is free to use, globally available, handles any file size, transcodes automatically, and comes with an audience of two billion logged-in users. For individual creators who want reach, it is genuinely hard to beat.</p>
<p>For universities it fails in at least three important ways.</p>
<p><strong>Data protection.</strong> When you upload a lecture or a concert recording to YouTube, the content, the metadata, and the viewing behaviour of your students go to Google&rsquo;s servers — which are predominantly in the United States. Under the GDPR, transferring personal data to third countries requires either an adequacy decision, standard contractual clauses with additional safeguards, or explicit informed consent. After the Schrems II ruling (Court of Justice of the EU, 2020), the adequacy of US-based data transfers became legally contested in a way that makes institutional YouTube use genuinely difficult for European universities. Using it for anything with identifiable students — which includes most teaching content — is a compliance problem.</p>
<p><strong>Platform logic.</strong> YouTube is designed to maximise watch time. Its recommendation algorithm is not neutral. It will recommend whatever comes after your lecture, and what comes after your lecture is not under your control. For educational content — especially sensitive material, or content that should remain in a defined pedagogical context — this is a real problem. The platform is not indifferent to what is hosted on it; it shapes how it is consumed.</p>
<p><strong>Institutional fragility.</strong> YouTube is free until it isn&rsquo;t. Platform terms change; monetisation policies change; content is demonetised or removed based on automated systems with imperfect appeal mechanisms. Building institutional infrastructure on a free commercial service is a bet that the commercial incentives of that service will remain aligned with your needs. That bet has a poor historical record.</p>
<p>None of this means that individual instructors should never use YouTube. It means that universities should not make YouTube their default institutional solution.</p>
<h2 id="educastnrw-a-cooperative-model">educast.nrw: A Cooperative Model</h2>
<p><a href="https://educast.nrw/de/">educast.nrw</a> is a project of the Digitale Hochschule NRW — a cooperative of North Rhine-Westphalian universities building shared digital infrastructure. The concept is a state-wide video service, run by universities for universities, for the recording, processing, management, and distribution of video content in teaching and research. The platforms calls itself &ldquo;Hochschul-YouTube&rdquo;, which is both accurate and slightly underselling what makes it different.</p>
<p>The HfMT Köln participates as a user institution, which is where I come in as the IT contact for setting it up on our end.</p>
<p>The technical foundation is <a href="https://opencast.org/">Opencast</a>, an open-source video management system developed by a consortium of universities. This matters: the software is auditable, the development direction is set by the institutions that use it rather than by advertising revenue, and the infrastructure runs on German servers that are explicitly GDPR-compliant. Licenses on uploaded content are freely choosable — CC-BY-SA is an option, which means the university&rsquo;s teaching materials can be open access if that is what the instructor wants.</p>
<h2 id="what-it-can-do">What It Can Do</h2>
<p>The feature set covers the actual use cases of a university, not the use cases of a content creator trying to build a following.</p>
<p><strong>Recording.</strong> The Opencast Studio browser app records in three modes: screen only, camera only, or screen and camera simultaneously as a synchronised multi-stream. That last option — <em>Presentation</em> and <em>Presenter</em> as separate streams, played back with the viewer switching focus between them, or as picture-in-picture — is the format that works for a lecture. You get the slides and the speaker in the same video, but the viewer can choose which to focus on. That flexibility is not something you get from a simple screen recording uploaded to YouTube.</p>
<p><strong>Multi-perspective video.</strong> For a music university this is the feature that changes things. A concert or a masterclass is not well-served by a single camera angle. The platform supports simultaneous recording from two camera perspectives — a wide shot and a detail shot, say, or a front view and a hands view for a piano performance. The viewer can switch between them in playback, or the institution can set a default presentation. This is infrastructure that makes the teaching use of concert recordings actually feasible, not just technically possible.</p>
<p><strong>Formats.</strong> Video up to 4K with adaptive bitrate streaming (the player adjusts automatically to the viewer&rsquo;s connection), audio up to broadcast quality (48kHz/16-bit, exceeding CD&rsquo;s 44.1kHz), with FLAC at up to 96kHz/24-bit in development. No file size limit. These specifications matter for music. A piano recording compressed to whatever YouTube decides to do with it is not the same as an uncompromised audio stream. The difference is audible.</p>
<p><strong>ILIAS integration.</strong> This is the practical hinge. Video that lives in a separate platform is video that students may or may not find. Video embedded directly in the ILIAS course page, in the learning module, at the point in the curriculum where it is relevant — that is video that is part of the course rather than adjacent to it. The integration between educast.nrw and ILIAS is direct: upload to the video platform, embed in ILIAS on pages, in learning modules, or as standalone video objects, all from within ILIAS.</p>
<p><strong>Access rights.</strong> The granularity here is what distinguishes it from any public platform. Each video can be set to: public (anyone on the internet), institution-wide (anyone logged in at the university), course-wide (only enrolled students in a specific course), individual (specific named people), or private (only the uploader). A graduation concert might be public. A practice session for student feedback might be course-only. A recording made for an individual student&rsquo;s reflection might be shared only with that student and their teacher. These are all normal use cases in a music university; they all require different settings; the platform handles all of them.</p>
<h2 id="use-cases-in-a-music-university">Use Cases in a Music University</h2>
<p>The general university use case — lecture recording, video tutorial, self-study module — applies at HfMT as much as anywhere. But a music and dance university has some specific ones.</p>
<p><strong>Concert recordings.</strong> HfMT Köln runs performances at both its Cologne and Wuppertal sites. Recording these and making them available to students, faculty, and selectively to the public used to mean someone had to manage files, find hosting, deal with YouTube&rsquo;s automated copyright detection flagging student performances of copyrighted repertoire, and explain to students why their graduation concert had been muted by an algorithm. The controlled platform makes all of this manageable.</p>
<p><strong>Stage presence as a reflective tool.</strong> Watching yourself perform is a standard part of performance training. It is uncomfortable, useful, and until recently required either dedicated recording equipment or the ad-hoc use of a phone propped against something. A proper recording infrastructure with controlled access — the student sees the video, their teacher sees the video, nobody else does — changes the pedagogical viability of this approach. The barrier to actually using video feedback in practice teaching drops substantially.</p>
<p><strong>Theory and practice.</strong> This is the institutional argument I made in the presentation and stand by: video infrastructure that works for a lecture also works for a concert. The same system that stores the introduction to music theory also stores the masterclass by a visiting artist. This is not incidental — it is the point of a shared infrastructure. You do not need to choose a platform for academic content and a different one for performance content. The platform works for both.</p>
<h2 id="the-argument-behind-the-argument">The Argument Behind the Argument</h2>
<p>There is a broader principle at work here that extends beyond video platforms. Public universities are funded by public money. The infrastructure they build with that money — software, platforms, data, content — should be under their control, governed by their values, and ideally available to other public institutions. The commercial platform model inverts this: you get free hosting in exchange for your data, your students&rsquo; attention, and your institutional dependence.</p>
<p>educast.nrw is an example of what the alternative looks like in practice: a cooperative of public institutions building shared infrastructure on open-source software, governed collectively, with data on European servers under European law. It is not perfect — the setup overhead is real, the user experience does not match YouTube&rsquo;s, and the feature roadmap (automatic subtitling, H5P support, livestreaming, annotation tools) is still catching up to what commercial platforms have had for years. But the model is right.</p>
<p>The question of who owns the video infrastructure of a university is the same question as who owns its email, its learning management system, its student data. The answer should be: the university, operating under law, answerable to its students and to the public that funds it.</p>
<hr>
<p><em>The slides from the Tag der Lehre 2022 presentation are available on request. For educast.nrw setup at HfMT Köln, contact the IT department.</em></p>
<hr>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://educast.nrw/de/">educast.nrw</a></li>
<li><a href="https://opencast.org/">Opencast</a></li>
<li><a href="https://studio.opencast.org/">Opencast Studio</a></li>
<li><a href="https://tobira.opencast.org/">Tobira Videoportal</a></li>
<li><a href="https://github.com/opencast-ilias">opencast-ilias plugin (GitHub)</a></li>
</ul>
<hr>
<h2 id="changelog">Changelog</h2>
<ul>
<li><strong>2025-08-18</strong>: Corrected the capitalisation of &ldquo;OpenCast&rdquo; to &ldquo;Opencast&rdquo; throughout (matching the project&rsquo;s official spelling on opencast.org).</li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
