Lückentag

Von den zwei parallelen Internet-Kernschmelzen der letzten Tage bekommt PHP2Shell deutlich mehr Aufmerksamkeit bis in die Regionalpresse. Meine PHP-freien Systeme betreffen nur die kompromittierten eMudhra-Schlüssel, aber nach dem Entfernen veralteter Python-Versionen (python311: 3.11.16 -> 3.11.17 [FreeBSD-ports] (vulnerable!)) und dem Einspielen frischer Pakete, Python-Module und Zertifikatslisten –

$ pip install -U pip $ pip install -U certifi $ pip install -U uv # Client $ brew update ca-certificates $ brew update curl # Server $ freebsd-update install $ bastille update 15.1-RELEASE $ pkg upgrade $ pkg remove python311 $ bastille pkg ALL upgrade

– kann ich einigermaßen ruhig schlafen.

Musikadministration 2

Weil die Administration einer Sammlung von FLAC-Dateien keine echte Herausforderung darstellt, möchte ich meinen Musikbestand auf meiner Website replizieren. Mit Hilfe entsprechender Skripte sollen

werden. Dabei kommen die Pakete mutagen –

def create_album(self, file: mutagen.File, artist -> Artist) -> (Album, str): album_title = file["album"][0] match = VERSION_RE.match(album_title) if match: album_title = match["base"] version_title = match["version"] else: version_title = "" self.stdout.write(f'\n== Creating album "{album_title}" by {artist}...') def get_cover(self, file: mutagen.File, album_title: str) -> (Path, bytes): if isinstance(file, FLAC): pics = file.pictures if not pics: return None pic = next((p for p in pics if p.type == 3), pics[0]) artist_name = file["albumartist"][0] if "albumartist" in file else file["artist"][0] album = slugify(f"{artist_name} {album_title}", algorithm="modern") return album, pic.data

– pillow –

def to_webp(self, data: bytes, quality: int = 85, lossless: bool = False) -> bytes: with Image.open(io.BytesIO(data)) as img: # WebP supports RGB and RGBA; convert anything else (P, CMYK, LA, ...) if img.mode == "P": img = img.convert("RGBA" if "transparency" in img.info else "RGB") elif img.mode not in ("RGB", "RGBA"): img = img.convert("RGB") out = io.BytesIO() img.save(out, format="WEBP", quality=quality, lossless=lossless, method=6) return out.getvalue()

– und mwparserfromhell zum Einsatz:

API = "https://en.wikipedia.org/w/api.php" S = requests.Session() S.headers["User-Agent"] = "album-release-lookup/0.1 (my@lookup.example)" def api(**params): r = S.get(API, params={"format": "json", "formatversion": 2, **params}, timeout=15) r.raise_for_status() return r.json() def search_wikipedia(album_title: str, artist: Artist, n=5) -> list: q = f'"{album_title}" {artist} album'.strip() d = api( action="query", generator="search", gsrsearch=q, gsrlimit=n, gsrnamespace=0, prop="extracts|info", inprop="url", exintro=1, explaintext=1, exsentences=2, exlimit=n, ) pages = d.get("query", {}).get("pages", []) return sorted(pages, key=lambda p: p["index"])

Um dem Internet die Elogen zu entwinden, setze ich auf schöne Suppe, die auch aus den unübersichtlichsten Webseiten zuverlässig die richtigen Inhalte herauskratzt.

Alles kein Problem, aber womit ich nicht gerechnet habe, ist der rückständige PostgreSQL-Cluster unter FreeBSD –

datname | datcollate | datctype -----------+------------+---------- postgres | C | C.UTF-8 template1 | C | C.UTF-8 template0 | C | C.UTF-8 mydb | C | C.UTF-8

– der my bloody valentine hinter den Zombies einsortiert. Dieses Problem erfordert radikale Maßnahmen (mit einem vorangehenden pg_dump für das anschließende pg_restore):

DROP DATABASE mydb; CREATE DATABASE mydb TEMPLATE template0 ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' OWNER snafu;

Supernutzungsagentennachfolge

Monatelang habe ich das despektierliche Gerede über meinen hochgeschätzten Supernutzungsagenten ignoriert, aber heute warnt auch pkg eindringlich (This PAM module is abandonware: no code updates for 8+ years, no new releases for 6+ years.) und rät zu einem Umstieg. Der gestaltet sich denkbar einfach. Nach dem Austausch der Module –

pkg install pam-ssh-agent pkg remove pam_ssh_agent_auth

– muss nur eine einzige Zeile in /usr/local/etc/pam.d/doas geändert werden:

#auth sufficient /usr/local/lib/pam_ssh_agent_auth.so file=~/.ssh/authorized_keys auth sufficient /usr/local/lib/pam_ssh_agent.so file=~/.ssh/authorized_keys

Musikadministration

Der Wechsel von Streaming-Diensten zu einem eigenen Medienserver bietet einen willkommenen Anlass zur Beschäftigung mit ffmpeg und awk. ffmpeg übernimmt die Umwandlung von ALAC- in FLAC-Dateien und die Verifikation der Äquivalenz:

for f in *.m4a ffmpeg -i "$f" -c:a flac -c:v copy -disposition:v attached_pic (path change-extension flac -- "$f") end ffmpeg -i input.m4a -map 0:a -f s16le -c:a pcm_s16le - | md5sum ffmpeg -i output.flac -map 0:a -f s16le -c:a pcm_s16le - | md5sum

Grundsätzlich kann ffmpeg auch AAC-Dateien erzeugen, aber der eigene Encoder ist nicht konkurrenzfähig, und eine Kompilation mit der überlegenen Fraunhofer-Bibliothek ist mir zu aufwendig. Als Alternative gibt es unter macOS afconvert, so dass ffmpeg sich auf die Übertragung von Metadaten und Cover-Bildern beschränken kann:

afconvert -f m4af -d aac -b 256000 -q 127 -s 2 input.m4a encoded.m4a ffmpeg -i encoded.m4a -i input.m4a -map 0:a -map 1:v? -c:a copy -c:v copy -disposition:v attached_pic -map_metadata 1 output.m4a

Beim umgekehrten Weg – der eigentlich unsinnigen Umwandlung verlustbehafteter AAC-Dateien in verlustfreie ALAC-Dateien – sollte ffmpeg auf 16 Bit begrenzt werden, um keine übergroßen Dateien zu produzieren:

ffmpeg -i input.m4a -c:a flac -sample_fmt s16 -compression_level 8 output.flac

Ebenfalls sehr befriedigend ist der Einsatz von awk zur Listen-Zusammenführung. Neben der mehrfach überarbeiteten Albenliste des Rolling Stone-Magazins gibt es seit kurzem eine (deutlich kürzere) Liste von Apple Music, und zum Abgleich mit meiner Musiksammlung wäre eine konsolidierte Liste sehr hilfreich. Mit awk lassen sich beide Listen sehr elegant kombinieren und nach Albumtitel sortieren (bei dieser Gelegenheit wird auch die vierte Spalte – Veröffentlichungsjahr bzw. Autorinnen der Wikipedia-Einträge – entfernt):

awk -F'\t' -v OFS='\t' ' NR == FNR { key = $2 FS $3; p1[key] = $1; seen[key]; next } { key = $2 FS $3; p2[key] = $1; seen[key] } END { for (k in seen) print k, p1[k], p2[k] } ' apple100_list.txt rs500_list.txt | sort -t \t -k1,1n > album_list.txt

Die Elemente der Ursprungslisten innerhalb der Gesamtliste lassen sich nicht nur zählen –

$ awk -F '\t' '$4' album_list.txt | wc -l 500 $ awk -F '\t' '$3' album_list.txt | wc -l 100

– sondern auch extrahieren:

awk -F '\t' -v OFS='\t' '{if ($4) print $4,$1,$2 }' album_list.txt | sort -t \t -k1,1n | column -s \t -t awk -F '\t' -v OFS='\t' '{if ($3) print $3,$1,$2 }' album_list.txt | sort -t \t -k1,1n | column -s \t -t

Indem ich die Einträge mit einer fünften Spalte versehe (✓ = Teil meiner Sammlung, x = kein Interesse), kann ich mir gezielt fehlende Alben ansehen:

awk -F '\t' -v OFS='\t' 'NF == 4 { print $2, $1 }' album_list.txt | sort -t \t -k1,1 | column -s \t -t | less

Entfähigung

Mit dem Ende des Internets, der Relativierung des Urheberrechtes, dem Kontrollverlust über die IT-Sicherheit und der Beschleunigung der Klimakatastrophe durch künstliche Intelligenz könnte sich die Menschheit wohl irgendwie arrangieren, aber die eigene Nutzlosigkeit und die geistige Verwahrlosung der kommenden Generationen sind schon recht ärgerlich. Vielleicht hätten die schwedischen Erfahrungen mit einer konsequenten Digitalisierung von Lernumgebungen und nicht erst die Probleme mit delegierbaren Prüfungen eine Warnung sein können; jetzt ist es jedenfalls zu spät:

Six weeks into the term, I assigned my rhetoric and writing students a 20-page article. It was the same length I had assigned for five years and the same length I had read without complaint as an undergraduate a decade ago. Not one student finished it. When I asked why, a student answered honestly: It was too long, and she kept losing track of what the paper was about. This was not a remedial class: These were students who had cleared the admissions process and written essays good enough to get them here. Yet a routine academic reading assignment had defeated them. Every generation of professors has complained that their students cannot read. The lament is usually overblown, but data have caught up to anecdote, and what I am seeing in my classroom is no longer a hunch. There is a measurable, generational collapse in sustained reading and writing, and the academy is responding to it with improvisation and exhaustion rather than the structural overhaul it requires. In February 2024, Adam Kotsko, who teaches in the Shimer Great Books School at North Central College, wrote in Slate that students who once handled 30 pages of reading per class meeting now seem intimidated by anything over 10 pages and seem to walk away from readings of as little as 20 pages with no real understanding.

Nicht nur Lehrende reagieren emotional –

And I hate what it is doing to the minds, and the happiness, of the young. Going into schools, I meet thousands of children a year and every day I become more certain that, if justice for all is to be our organising principle, AI is not for children and not for young people. It risks becoming an iron curtain that comes down between a young person and their potential for thinking, for experiment and conquering frustration, for stamina and for invention – and thereby, between the young people and their freedom. It risks halting learning before it can take flight.

– sondern auch andere Bevölkerungsgruppen haben aus verschiedenen Gründen die Nase voll:

If there’s one thing America seems to agree on, it’s AI. Some three-quarters of Americans oppose a data center being built in their area, three-quarters of Americans think AI will hurt their job security, nearly 70 percent think the technology is advancing too quickly—the polls go on. Progressive and Republican candidates alike are bashing the tech industry to win primary elections. States and cities are halting plans for data-center development.

Eigentlich ein idealer Moment für Investorinnen, um in Panik zu verfallen (The defining feature of this moment is a loss of control. Panic emanating from AI researchers, resentment felt by average Americans—all of it is part of the AI crunch.), obwohl es um die aufwendig vorbereiteten IPOs natürlich etwas schade ist.

Unzuverlässig

Neben der mangelnden Präzision ist auch die lockere Beziehung von LLMs zur Realität ihrer Nutzerinnen –

The problem with using LLMs to research information is that this technology generates text, it does not report information.

Generating a map is not the same as finding an accurate map that already exists. Same for any other pieces of information.

And even if it was able to find and report information without modifying it (what a search engine does basically), it cannot evaluate if this information is accurate.

Adjust your level of trust accordingly.

– ein potentielles Problem in vielen Anwendungsbereichen. KI-Hersteller kompensieren diese prinzipbedingte Schwäche, indem sie ihren unzuverlässigen Produkten unzureichend abgesicherte Handlungsspielräume geben, die resultierenden Vorfälle als Beleg für deren furchterrregende Macht verkaufen, aus den verständnislosen Werkzeugen energieintensive Agentenzellen formen –

Whether it’s Reddit, news stories, or academic papers, you can still find often-repeated opinions about how (LLM-based) AI can’t reason, should not be called intelligent, cannot flexibly adapt to changing circumstances, and can only regurgitate what it has seen in training and not solve novel problems. And fundamentally, current AI isn’t like what we know – and fear – from sci-fi: it can’t act in the world, it just provides you with information, like a more interactive version of Wikipedia or Google. And half of the time it doesn’t even work!

Like others, I get the sense that such views are based on interactions with the chatbots of about a year ago, not very-current AI agents.

Yes, one can get bogged down in the semantics of reasoning or understanding. But here I just mean: for practical purposes. At this point, AI agents are solving real problems for me, and do so in a way that sure looks functionally like reasoning or understanding. [...]

I ended up with seven mini-projects (which I’ll also call runs or experiments) and several layers of analysis on top. I won’t go through all the details, as the aim is to convey that this sort of thing is possible at all and to build intuitions around AI agents. Here I’ll only highlight a few key things.

First to make sense of what happened, I should clarify the role of different (sub-)agents here, as shown in the below diagram.

– sie Civilization VIII durchspielen lassen oder Hahnenkämpfe zwischen ihnen anzetteln. Ich bin nicht sicher, ob dieses Vorgehen das richtige Mittel gegen eine fundamentale Vertrauenskrise ist.

Unpräzise

Seit dem Beginn des Computer-Zeitalters waren Software-Entwicklung und das Verfassen von Texten trotz des Übergangs von machine code über assembly languages zu high-level languages klar unterscheidbare Tätigkeiten, die sehr unterschiedliche Menschen anzogen (was sich unter anderem in schlecht dokumentierter Software widerspiegelte).

Vibe coding mit Hilfe von LLMs verwischt diese Grenzen, was einige Entwicklerinnen irritiert –

look there's a billion other reasons why people are against AI and all but fundamentally the core of my personal reason is that I've already spent 30 years learning how to teach computers how to do exactly what I tell them to, so I am exceptionally disinterested in having them do things less accurately by talking to them in a sloppier language

– während andere Menschen fröhlich und unbesorgt technische Schulden aufnehmen:

Wer das Ziel eines Projektes in Worte fasst, lässt zwangsläufig Spielraum für Interpretation. Und hier spielen Agenten ihre Stärke aus: In ihren Trainingsdaten finden sie die Grundlagen, um natürliche Sprache zu deuten, diesen Spielraum zu füllen und auf dieser Basis Code zu schreiben. Das erspart den Beteiligten, jedes Detail buchstabieren zu müssen. Diese Stärke hat jedoch auch eine Kehrseite. Ob der Agent den Spielraum im Sinne des Projektziels füllt oder lediglich auf Grundlage wahrscheinlicher Muster, ist ungewiss.

Die Beteiligten müssen es deshalb prüfen. Genau darum kommt klaren Formulierungen in der agentischen Welt so viel Bedeutung zu. Eine gute Entwicklerin oder ein guter Entwickler ist ein Korrektiv für mangelnde Präzision: Sie erkennen Lücken und hinterfragen diese. Ein Agent kann das Gegenteil sein: ein Verstärker. Im ungünstigen Fall erkennt er die Lücke nicht als Lücke, fragt nicht nach, sondern baut einfach. Das Risiko ist dann nicht eine Software mit Bugs, sondern eine Software mit Annahmen, die so niemand getroffen hat. Die Anwendung mag technisch sauber laufen, die fachliche Abweichung fällt vielleicht erst viel später auf.

In jedem Fall sind sich alle einig, dass lauffähiger Code keine Geschmackssache ist. Anders verhält es sich aus Sicht von Anthropic bei Texten. Im Zusammenhang mit der geplanten Markierung von LLM-Ausgaben führt das Unternehmen aus:

  • We use a method of watermarking that does not have any practical impact on the quality or content of Claude’s outputs;
  • The difference between watermarked and un-watermarked text will not be distinguishable to readers; [...]

As we noted above, AI watermarking takes advantage of decisions where either choice of a word would be equally good. Where an exact output is required—where there isn’t a choice, and something would be factually wrong or a piece of code would break if a different term was chosen—the watermark isn’t applied.

For example, once the model has written 2 + 2 =, there is a very clear best choice for the next token (if the model is completing the sum, there isn’t an answer that’s equally as good as 4; if it’s talking about George Orwell’s Nineteen Eighty-Four, there isn’t an answer that’s equally as good as 5). The nudge of the watermark wouldn’t be applied here. For the same reason, code—which in very many cases has to be exact—has generally less watermarking than some other forms of text.

Die Annahme, es gebe in natürlichen Sprachen stets gleichwertige Ausdrücke, provoziert auch in diesem Kontext Empörung –

I want any LLM I use to choose the very best, most precise words at every single decision point. [...] This entire endeavor is a perverse adulteration of what it means to write — or to read.

– die die Fähigkeiten von LLMs erheblich überschätzt (That might be the case if AIs were writing. But they are not; they are simply generating text.), und für satirische Beiträge.

Die meisten Texterinnen nehmen allerdings – wie ihre Kolleginnen in der Software-Entwicklung – zunehmend ungeniert Kredite auf –

The difference this time is that Druckenmiller owned it. Of course I used AI, he told NOTUS on Tuesday. I’m not embarrassed by it, he added. I write everything using AI now for the same reason I use a calculator when I do math problems. And rather than rebuke him, The Wall Street Journal’s editorial-page editor, Paul Gigot, defended the practice. AI is a fact of modern life, he said in a statement. Last night, Gigot followed up with a full column on the subject, mocking the media pharisees who wag their fingers at automated writing. He clarified that the Journal’s opinion staffers must still draft their own columns and editorials but said that he doesn’t intend to police AI use by outside contributors. Many contributors, especially prominent politicians or CEOs, employ speechwriters or hire a Beltway writing shop, he wrote. How different is that from using AI to streamline an essay?

– während Skepktikerinnen als Unternehmensrisiko klassifiziert werden:

Since then, pundits and influencers have declared that AI progress is slowing, that scaling has hit the wall, and that the entire field is just another tech bubble inflated by blusterous hype. In fact, many influencers have latched onto the dismissive phrase AI slop to diminish the amazing images, documents, videos and code that frontier AI models generate on command. [...]

On the creativity front, today’s AI models can generate content faster and with more variation than any individual human. Critics argue that true creativity requires inner motivation. I resonate with that argument but find it circular — we're defining creativity based on how we experience it rather than the quality, originality or usefulness of the output. Also, we just don’t know if AI systems will develop internal drives or a sense of agency. Either way, if AI can produce original work that rivals most human professionals, the impact on creative jobs will still be quite devastating.

An den verheerenden Auswirkungen von LLMs habe ich keinen Zweifel, fraglich ist nur, ob wir auf ein Terminator-, Matrix- oder Mad Max-Szenario zusteuern, oder ob in einigen Jahren altgediente Entwicklerinnen und Texterinnen mit hohen Zahlungen dazu bewegt werden müssen, KI-Schulden zu tilgen.

Codecgeschmacksrichtungen 3

Eigentlich sind Video-Dateien nach meinem Empfinden hinreichend komplex, aber die Ton- und Bild-Ingenieurinnen bei Dolby sehen das etwas anders. Wenn ein Video-Stream mit Dolby Vision 5.0 kodiert wurde, wird er mit dem Tag dvh1 gekennzeichnet, ein Stream mit Dolby Vision 8.1 (rückwärtskompatibel mit HDR10/HDR10+) dagegen mit hvc1 (oder hev1), außerdem wird das DV-Profil mittels Seitendaten (≠ Metadaten) ausgewiesen:

# Dolby Vision 5.0 Stream #0:0[0x1](und): Video: hevc (Main 10) (dvh1 / 0x31687664), yuv420p10le(pc), 3840x2160 [SAR 1:1 DAR 16:9], 16518 kb/s, 23.98 fps, 23.98 tbr, 48k tbn (default) Metadata: handler_name : BAMTech video encoder : DOVI Coding Side data: DOVI configuration record: version: 1.0, profile: 5, level: 6, rpu flag: 1, el flag: 0, bl flag: 1, compatibility id: 0, compression: 0 # Dolby Vision 8.1 Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 15388 kb/s, 23.98 fps, 23.98 tbr, 48k tbn (default) Metadata: handler_name : BAMTech video encoder : HEVC Coding Side data: DOVI configuration record: version: 1.0, profile: 8, level: 6, rpu flag: 1, el flag: 0, bl flag: 1, compatibility id: 1, compression: 0

Weil bei der Anwendung meines bewährten Audioentwirrungsbefehls (ffmpeg -y -i input.mp4 -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default output.mp4) die DOVI-Seitendaten verloren gehen, bekommen DV 5.0-Filme einen interessanten, aber nicht werktreuen grünen Farbstich, während DV 8.1-Filme auf schnödes HDR10 zurückfallen. Die Lösung ist erneut eine obskure ffmpeg-Option:

ffmpeg -y -i input.mp4 -map 0 -c copy -strict unofficial -disposition:a:0 0 -disposition:a:1 default output.mp4

Credit where credit is due – ohne Claude hätte ich diese Option vermutlich nicht gefunden.

Zugangsschlüssel 12

Obwohl Passkeys als technisch durchdachte und sichere Authentifizierungsmethode gelten, eignen sie sich weiterhin nur sehr bedingt für die Nutzung durch Menschen –

The majority of participants were unable to recognize when an attacker had created their own passkey with access via password, the research team concludes. They also failed to remove the passkey from the respective account without help. The security settings were sometimes confusing; in one case, someone understood the display of two different passkeys as being for two devices. Lead author Alaa Daffalla from Cornell University describes the lack of understanding of the concept of passkeys as surprising, especially for people with technical expertise. Overall, it is a little worrying that people are increasingly using passkeys without understanding how they work.

– und verharren im Status einer Zukunftstechnologie:

Cybersecurity experts will tell you that passkeys—which typically entail logging in to apps or websites with a face or fingerprint scan instead of a password—are the future. When they work properly, they’re both painless and secure. It may get to a point where we’re all using passkeys and we don’t even know we’re using passkeys, Lorrie Cranor, a computer-science professor at Carnegie Mellon University who researches privacy and cybersecurity, told me. I just say Log in and I smile at it, and it gets my passkey, and I’m logged in.

But that future isn’t here yet, and in the present, passkeys have added a new layer of frustration. Part of the problem is that virtually no one seems to know what they are.

Autenticazione Italiana

In Deutschland bemühen sich öffentliche Verwaltung und Unternehmen redlich, die eID-Funktion des 2010 eingeführten elektronischen Personalausweises endlich populärer zu machen (das Techniktagebuch berichtet regelmäßig). In Italien gibt es neben dem Pendant des elektronischen Personalausweises (Carta di Identità Elettronica, CIE) die ältere Carta Nazionale dei Servizi (CNS), die u.a. als Krankenversicherungskarte dient. Der Zugang zu öffentlichen Online-Diensten erfolgt über eine der beiden Karten oder über das Sistema Pubblico di Identità Digitale (SPID), für das man sich persönlich, per Webcam oder mit CIE/CNS identifizieren kann. Soweit die Theorie. In der Praxis ruht die Authentifizierung auch in Italien noch auf traditionellen Säulen: Dem persönlichen Kontakt, der eigenhändigen Unterschrift, der individuellen Steuernummer (codice fiscale) und dem Foto eines Ausweisdokumentes.

Vor kurzem konnte ich die Verhältnisse aus der Nähe betrachten, weil ich organisatorische Aufgaben rund um eine italienische Immobilie übernommen habe. Das Ziel bestand darin,

  1. sämtliche Rechnungen und Bescheide per E-Mail zu erhalten
  2. Zugang zu den Online-Portalen der relevanten Ämter und Unternehmen zu bekommen und
  3. alle zu zahlenden Beträge von einem deutschen Bankkonto abbuchen zu lassen oder zu überweisen (statt das Formular Modello F24 Semplificato in Verbindung mit einem italienischen Konto verwenden zu müssen).

Meine Gegenüber sind die zuständige Gemeinde, eine Versicherung und drei verschiedene Versorgungsunternehmen (Gas, Wasser, Strom).

Die Gemeindeverwaltung hat je nach Sachbearbeiterin zwei Betriebsmodi. Zur Regelung von Grundsteuer-Angelegenheiten (IMU) ist eine persönliche Vorsprache erforderlich, auf E-Mails wird erst nach diesem Kennenlerngespräch reagiert. Dafür genügt zur Authentifizierung ein vertrauenswürdiges Auftreten – alle gewünschten Änderungen werden ohne Identitätsnachweis vorgenommen. Die für Abfallgebühren (TARI) zuständige Sachbearbeitung reagiert dagegen sofort auf E-Mails, fordert aber ein vom Hausbesitzer unterzeichnetes Antragsformular samt Kopie seines Personalausweises.

Der Gasversorger ENEL verfügt als modernes Großunternehmen über ein Online-Antragsverfahren für digitale Rechnungen (Attiva Bolletta Web), das nicht funktioniert. Nach Eingabe von Kundennummer, Steuernummer und Mobilfunknummer blitzt sehr kurz ein Web-Formular für weitere Angaben auf, bevor eine höfliche Fehlermeldung erscheint (Gentile Cliente, i nostri servizi al momento non sono disponibili per problemi tecnici. Ti preghiamo di riprovare più tardi.). Nach einigen Wochen und vielen Versuchen glaube ich nicht mehr an vorübergehende technische Probleme und kontaktiere ENEL stattdessen per Chat. Meine Gesprächspartner fragen ebenfalls Kunden- und Steuernummer ab und bitten mich dann, meine Identität als Vertragspartner zu bestätigen. Als ich wahrheitsgemäß antworte, dass der Vertragsinhaber neben mir sitzt und ich in seinem Auftrag tippe, brechen sie den Chat kommentarlos ab. Beim nächsten Versuch behaupte ich, der Vertragspartner zu sein und stoße auf eine überraschende Authentifizierungsmethode: Der misstrauische Mitarbeiter glaubt nicht, dass der im Jahr 1940 geborene Vertragspartner ein Chat-Interface bedienen kann und bezichtigt mich, ein Sohn oder ein anderer Verwandter zu sein (nicht ganz zu Unrecht). Auch dieser Chat wird kommentarlos beendet. Die vierte Mitarbeiterin schließlich akzeptiert mich auf Basis von Kunden- und Steuernummer als Vertragspartner und hinterlegt die gewünschte E-Mail-Adresse und Mobilfunknummer für die Zustellung einer elektronischen Rechnung.

Anschließend erhalte ich eine E-Mail, die auf den ersten Blick der Bestätigung der E-Mail-Adresse dient (Conferma Indirizzo E-Mail), tatsächlich aber über den darin enthaltenen Link die Mobilfunknummer bestätigt (CERTIFICATION MOBILE PHONE). Eine zweite E-Mail führt mich scheinbar an den Anfang des defekten Online-Antragsverfahrens zurück (Attiva Bolletta Web), aber hinter dem Button verbirgt sich nun ein funktionierender Link. Mit einem Link in einer dritten E-Mail (Completa attivazione del servizio Bolletta Web) wird dann die E-Mail-Adresse bestätigt. Sicherheitshalber erhalte ich zwei Tage später erneut eine E-Mail zur Bestätigung der Mobilfunknummer. Mit Hilfe der bestätigten E-Mail-Adresse und Mobilfunknummer funktioniert die Aktivierung eines Accounts für den Online-Servicebereich, wo man auch eine andere E-Mail-Adresse als Benutzername wählen kann, wenn man es unübersichtlich mag.

Für die Einrichtung eines Lastschrifteinzugs gibt es ein PDF-Dokument, das ausgefüllt, vom Kontoinhaber unterschrieben und mit einer Personalausweiskopie des Kontoinhabers eingereicht werden muss. Das vorgesehene Upload-Formular funktioniert wieder nicht (Qualcosa è andato storto.), aber das PDF-Dokument kann auch per E-Mail übermittelt werden. Weil ich (als Kontoinhaber) noch keine italienische Steuernummer habe, lasse ich das entsprechende Feld ich leer, was zur Folge hat, dass der Lastschrifteinzug mit meiner Kontonummer, aber dem Namen und der Steuernummer des Hausbesitzers/Vertragspartners hinterlegt wird.

Ich protestiere schriftlich und beantrage parallel eine Steuernummer beim zuständigen Generalkonsulat in Deutschland. Die italienischen Generalkonsulate haben für das Antragsverfahren einen großen Gestaltungsspielraum, so dass das Konsulat in Frankfurt sich am offiziellen PDF-Formular der Agenzia delle Entrate orientiert, während Köln ein individuell gestaltetes Word-Dokument zum Download anbietet. Der Antrag bleibt auf Grund der Sommerferien für einige Wochen unbeantwortet, aber in der korrigierten Lastschrifteinzugsbestätigung von ENEL taucht plötzlich eine (meine?) neue Steuernummer auf. Eine Mitarbeiterin des Konsulats erklärt mir später auf Nachfrage, dass ENEL tatsächlich eine Steuernummer erstellt habe, die aber nicht validiert sei. Damit die Angelegenheit nicht noch komplizierter wird, validiert sie die ENEL-Steuernummer nachträglich.

Weiter geht es mit dem regionalen Wasserversorger, Acqua Bresciane. Er hat weniger schicke, aber dafür funktionierende digitale Dienste: Ich kann mich ohne weitere Identitätsprüfung mit Kunden- und Steuernummer des Hausbesitzers über ein Web-Formular registrieren und im Kundenbereich die Zustellung von Rechnungen per E-Mail einrichten. Die Forderung des PDF-Formulars für den Lastschrifteinzug nach einer Steuernummer des Kontoinhabers (Al presente modulo è necessario allegare copia del Documento d’Identità valido e del codice fiscale del Sottoscrittore.) kann ich dank ENEL und Generalkonsulat erfüllen.

Die Gebäudeversicherung Vittoria Assicurazioni verlangt für die Einrichtung eines Online-Accounts die Übermittlung von Kundennummer, Steuernummer und Personalausweiskopie per E-Mail und schickt anschließend ein Erstpasswort (ebenfalls per E-Mail). Rechnungen werden per SEPA-Überweisung bezahlt, so dass kein Lastschrifteinzug eingerichtet werden muss.

Das Portal des Stromversorgers A2A fordert schließlich zur Registrierung eines Online-Accounts aus technischen Gründen (un vincolo tecnico della piattaforma) eine italienische Mobilfunknummer und setzt mir damit eine harte Grenze. Allerdings gibt es ein Kontaktformular (leicht instabil, an manchen Tagen kann es trotz korrekt ausgefüllter Felder und Kenntnisnahme der Datenschutzhinweise nicht abgeschickt werden), über das der elektronische Rechnungsversand (bollett@mail) und ein Lastschrifteinzug (nach Angabe von Vertragsnummer, Steuernummer des Vertragspartners, Lieferanschrift, Personalausweiskopie und Steuernummer des Kontoinhabers) formlos veranlasst werden können.