Kategorien
Elektronik Hard- & Software In eigener Sache Medien Projekte

Videotext online: ttxweb im Live-Betrieb bei der ARD

Kurzmeldung

Wie vielleicht einige von euch wissen, faszinieren mich Technik und Geschichte des Teletexts, hierzulande eher bekannt als Videotext, schon seit langem. Die damals wie heute ingenieurstechnisch höchst clevere Mischung aus digitaler Codierung und analoger Fernsehübertragung, insbesondere die Art und Weise, wie das Signal aufgebaut ist und wie einfach es dadurch auf Hardware der damaligen Zeit decodiert werden kann, finde ich bis heute großartig. Auch wenn ich durchaus immer mal wieder meine Zweifel hatte, ob seine schiere Existenz heute noch gerechtfertigt ist, bin ich doch sehr dafür, ihn zu pflegen und gut zu behandeln, solange wir ihn noch haben. ;)

Wie begann sie also, meine „Teletext-Geschichte“? Da meine Großeltern bereits seit den späten 80er-Jahren einen Fernseher mit Videotext-Decoder hatten (im Gegensatz zu meinen Eltern) und ich dort regelmäßig den „Witz des Tages“ (im ARD/ZDF-Videotext auf Tafel 571…) lesen durfte, gehörte dieses Medium für mich von Kindesbeinen an dazu. Wie es genau funktionierte, verstand ich natürlich erst viel später.

Als dann irgendwann Level 2.5-Teletext aufkam und spätere Fernsehgeräte, mit denen ich in der Familie in Berührung kam, tatsächlich diesen Standard unterstützten (Wow! Plötzlich richtige Logos, wie beim ZDF, und eine ungeahnte Farbenvielfalt im Videotext!…), wollte ich irgendwann wirklich wissen, wie das alles funktioniert, und begann, mir im Internet – zum Glück wurde das damals gerade möglich – die entsprechenden Standards zusammenzusuchen und mich einzulesen.

Im Jahr 2011 habe ich mich dann in einem Blogbeitrag und einem zugehörigen, längeren Artikel mit den technischen Hintergründen des Standards beschäftigt und habe versucht, diesen in möglichst verständlichen Worten zu erklären.

Da ich mich in der Folgezeit selbst auch immer mehr mit (Retro-)Hardware beschäftigt habe, wurde mir seitdem mehr und mehr klar, mit welch einfachen Logikbauteilen eine Dekodierung eines Teletext-Signals möglich ist. Wie wenig „State“ ein solcher Decoder hat. Dass es letztlich nur ein paar Bytes RAM, ein paar (Schiebe)register, ein paar Logikbausteine, einen Character Generator mit CG-ROM und ein bisschen Videoelektronik braucht, um einen Teletext-Decoder zu realisieren. Theoretisch alles mit diskreten Bauteilen machbar (bis auf den Seiten-RAM und das CGROM vielleicht).

Irgendwann hatte ich seitdem immer Lust, so etwas selber – komplett diskret – nachzubauen. Allein, es fehlte mir die Zeit und die Muße. Später sah ich dann, dass das schon andere getan haben – in VHDL, was eine großartige Idee ist.

In meinem Beruf ergab sich dann irgendwann die Herausforderung, die Web-Darstellung des hr-texts, des Videotexts des Hessischen Rundfunks, technisch auf neue Beine zu stellen, wenn auch zunächst als vages Ziel, ohne konkreten Auftrag oder Deadline.

Meine Idee, einen eigenen Videotext-Decoder – zumindest Seiten-Decoder, ohne die Empfangs- und Auswahllogik, die ja beim Decodieren von fertigen, als Datei vorliegenden Seiten nicht nötig ist – zu schreiben, in dem Fall mit Ausgabe als HTML, nahm hierdurch neue Gestalt an, und ich programmierte „nebenher“ eine kleine Skriptsammlung in PHP, die genau das tat: ttxweb.

ttxweb kann Videotext-Daten aus einer Datei (momentan im EP1-Dateiformat, eine Anpassung an alle anderen Dateiformate, die Level 1.0/1.5-Teletext-Daten enthalten, ist aber sehr leicht machbar) lesen und in standardkonformes HTML wandeln, das in allen aktuellen Browsern aussieht wie eine „echte“ Teletextseite.

Die Besonderheit – zumindest für mich – daran ist, dass die Dekodierung genauso „stateless“ und ohne separaten „Framebuffer“ für die Displayattribute erfolgt, wie dies ein uralter Teletext-Decoder der allerersten Generation auch getan hätte.

Sprich: die Steuerzeichen werden im Zeitpunkt ihres Auftretens in Anweisungen für die HTML-Ausgabe übersetzt, anstatt dass für jede Zeichenzelle eine Speicherzelle für die Attribute (Vorder-/Hintergrundfarbe, Blinken etc.) vorgehalten würde, wie es z.B. bei einer VGA-Grafikkarte im Textmodus der Fall wäre.

Genau so arbeitet auch ein ursprünglicher Teletext-Decoder ohne Mehr-Seiten-Speicher: letztlich werden die Attribute wie Farbe, Blinken usw. in einfachen Registern vorgehalten und während jeder Rasterzeile während des Auslesens des Seitenspeichers und des CGROM in Echtzeit geändert, sobald im Seitenspeicher an der jeweiligen Spalte ein entsprechendes Steuerzeichen auftritt.

Mit dem Aufkommen von Level 1.5 (erweiterter Zeichensatz) bzw. Level 2.5 (erweiterte Farbpalette und dynamisch definierbare Zeichen) war ein solches Vorgehen dann nicht mehr möglich. Die erweiterten Zeichen bei Level 1.5 werden beispielsweise durch ein zusätzlich übertragenes Packet (X/26), also einer „unsichtbaren“ 26. Zeile, definiert, welche dem Decoder sagt, in welcher Zeile und welcher Spalte er ein Zeichen ersetzen soll. Hier ist definitiv Software nötig, um die entsprechenden Steuer-„Triplets“ zu durchlaufen.

Mein Decoder unterstützt – in auf die in europäischen Sprachen üblichen Sonderzeichen begrenztem Maße – Level 1.5, indem vor der Ausgabe die X/26-Triplets prozessiert und die betreffenden Zeichen durch die korrekten Unicode-HTML-Entitäten ersetzt werden.

Nun – wie ging die Geschichte aus? Ich habe das Ganze Open Source gemacht und auf GitHub gestellt und insbesondere der ARD und allen anderen öffentlich-rechtlichen Rundfunkanstalten ausdrücklich erlaubt, den Code zu verwenden (tatsächlich ist er auch in einem separaten Repository im ARD-internen GitLab eingecheckt, wo noch ein paar Konfigurations-Besonderheiten mitgepflegt werden, die Codebasis ist aber die gleiche). Die Lösung basiert auf zeitgemäßen Webtechnologien, ist mobil-tauglich bzw. responsiv, unterstützt Updates in Echtzeit via XHR, zeigt alle denkbaren Textattribute (inkl. doppelter Höhe/Breite/Größe und Blinken) an, unterstützt, wie gesagt, Level 1.5-Zeichen (auch das „gefürchtete“ @-Zeichen in allen möglichen Codiervarianten) und liest EP1-Dateien sowohl ohne als auch mit X/26-Erweiterungen aus, letztere in mehreren Geschmacksrichtungen (Softel Flair und Softel TAP).

Als erster Sender der ARD nutzt der Hessische Rundfunk nun die Lösung für den hr-text – und spart damit jedes Jahr bares Geld, da nicht mehr auf einen externen Dienstleister für die Web-Darstellung zurückgegriffen werden muss. Das kommt allen Beitragszahlenden zugute. Die neue Lösung läuft auf einem schlanken Webserver (mehr braucht’s ja nicht) als VM in der „ARD-Cloud“ und kann von allen gern hier bewundert werden:

https://hr-text.hr-fernsehen.de

Und ja, ich geb’s zu: ein bisschen stolz bin ich darauf schon… ;-)

Falls irgendwo Interesse an einer Implementierung „in the wild“ bestehen sollte, zögert nicht, mich zu kontaktieren, falls es Fragen zum Deployment geben sollte.

Liebe Grüße und einen guten Rutsch,
Euer Fabian

Kategorien
In eigener Sache Netzwelt Projekte

Und wieder: Alles neu …

FABIANS WEBWORLD

… oder: warum, und vor allem wie, es hier jetzt auf einmal weitergeht

Es war im Jahr 2008, als ich Folgendes schrieb:

„Endlich ist es so weit. Nach mehreren Tagen des intensiven Programmierens ist die neue Version meiner Homepage nun online. Alles ist neu – ich habe für Fabians WebWorld 2.0 sogar ein eigenes Content Management System entwickelt […]“

archive.fabianswebworld.de

Das war die Geburtsstunde meines ersten Blogs, also „richtigen“, definitionsgemäßen Blogs, auf WordPress-Basis. Er war technisch und optisch ziemlich aufwendig in die Struktur meiner seit 2004 existierenden Webseite (Fabians WebWorld) integriert und war nur ein Teilaspekt der Seite. Der Hauptteil waren mehr oder weniger statische (wenn auch über das oben erwähnte eigene CMS mehr oder weniger komfortabel editierbare und mit Menüs verknüpfbare) Seiten, auf denen Themen wie Elektronikbasteleien, Firmware-Updates für DVD- und MP3-Player, BASIC-Programme für Taschenrechner, selbst erstellte MIDI-Files und so weiter zu finden waren.

Was man als nerdiger Schüler bzw. Student im Jahr 2005 halt so angesagt fand.

Heute würde ich solche Dinge selbstverständlich ebenfalls über das WordPress-System veröffentlichen, und da ich einiges diesbezüglich – so zum Beispiel zum Thema Heimautomation, OpenSource-Coding und Fotografie – in der Pipeline habe, werde ich das auch genau so machen. Das alte System ist nicht mehr zeitgemäß und die damit ausgelieferten Seiten weder mobil- noch suchmaschinenfreundlich.

Schon 2021 hatte ich vor, mich wieder öfter im Blog mitzuteilen und dabei explizit erwähnt, dass ich von den alten Inhalten nichts löschen würde, aber:

„Vielleicht werde ich, wenn Zeit ist, hier und da etwas modernisieren, technisch und optisch, vielleicht werde diese Seite auch über kurz oder lang auf eine andere technische Infrastruktur umziehen […]“

archive.fabianswebworld.de

… und genau diese Zeit ist jetzt da.

Mit dem heutigen Tag schalte ich nun die dritte Inkarnation von FABIANS WEBWORLD online – in neuem Design, mit frischem Logo, diesmal wirklich vollständig mobil-optimiert, barrierefrei, sicher und zukunftsfähig (endlich TLS-verschlüsselt sowie über IPv6 erreichbar). Die technische Basis ist nun vollständig WordPress; Artikel aus dem alten System, die noch von Belang sind, überführe ich nach und nach in statische WordPress-Seiten oder verlinke sie einfach in Beiträgen: denn alles, was jemals war, bleibt online (depubliziert wird hier mal grad gar nix…) und verlinkbar unter https://archive.fabianswebworld.de. Wie ich schon im oben verlinkten Artikel schrieb:

Sie ist ein Archiv aus meiner Vergangenheit, sie sieht aus wie aus den frühen 2000ern, weil sie es ist. Viele Texte und Beiträge von damals sind heute höchstens noch zum Schmunzeln, aber peinlich sind sie mir nicht.

archive.fabianswebworld.de

Wer nochmal nachlesen möchte, wie das damals war mit den ersten zwei (eigentlich drei) Versionen meiner Webseite, kann das gerne hier tun.

Ansonsten wünsche ich jetzt erst mal: (weiterhin) viel Spaß beim Lesen!

Wer mit mir in Kontakt treten möchte, kann das jederzeit (am Besten!) über die Kommentarfunktion bei den Beiträgen tun – wobei ich mir vorbehalte, bei älteren Beiträgen oder überhand nehmendem Spam die Kommentare zu schließen – oder mich einfach über einen der unten verlinkten Social-Media-Kanäle anfunken.

Ich freue mich auf euch!

Mit den herzlichsten Grüßen
Euer Fabian

Kategorien
In eigener Sache

Warum es hier jetzt auf einmal einfach weitergeht

Lange (fast genau 4 Jahre!) war es still in meinem Blog. Lange schon hatte ich vor, das zu ändern. Lange hab ich überlegt, ob ich erstmal einen technischen und optischen Relaunch machen sollte. Lange hat das alles gedauert, weil ich für so Zeug eigentlich gar keine Zeit habe.

Aber lange hielt sich auch mein Drang zur Mitteilung in Grenzen. Vieles bewegte mich zwar, aber nichts davon erschien mir tatsächlich lohnenswert für einen neuen Blogbeitrag. Selbst zum zwischenzeitlich allgegenwärtigen Thema Coronakrise und deren Bewältigung hätte ich zwar so, so vieles zu sagen gehabt, aber das meiste haben andere schon – und viel besser – gesagt.

Nun, das hat sich in den letzten vier Wochen endlich geändert. Mittlerweile gibt es Themen, die mir – getreu dem Motto „Steter Tropfen höhlt den Stein“ – tatsächlich nach so langer wiederholter Konfrontation mit ihnen einfach an die Substanz gehen, auch wenn es lange, lange Zeit nicht so war. Auch meine Resilienz ist nicht unendlich. Einiges brennt unter den Nägeln. Und so will ich hier weitermachen.

Und die Seite bleibt ganz bewusst so, wie sie ist. Sie ist ein Archiv aus meiner Vergangenheit, sie sieht aus wie aus den frühen 2000ern, weil sie es ist. Viele Texte und Beiträge von damals sind heute höchstens noch zum Schmunzeln, aber peinlich sind sie mir nicht. An dieser Stelle mal ein ganz ausdrückliches und ehrliches Danke für eure Treue, wenn ihr dies lest. Auch, dass in der Zwischenzeit tatsächlich der einmillionste Besucher hier vorbeigeschaut hat, macht mich dankbar. Danke euch!

Vielleicht werde ich, wenn Zeit ist, hier und da etwas modernisieren, technisch und optisch, vielleicht werde diese Seite auch über kurz oder lang auf eine andere technische Infrastruktur umziehen. Aber ich werde nichts einfach so löschen, keine alten Texte an neue Gepflogenheiten anpassen (Stichwort Gendern – da weiß ich im übrigen auch noch nicht ganz, wie ich das für zukünftige Beiträge am schönsten löse. Schreibt es gern in die Kommentare, wenn ihr euch da was wünscht! Ich tendiere einfach zu abwechselnd gemischten Formen); auch Dinge, die im Nachhinein irrelevant erscheinen, wie z.B. der letzte Blogeintrag oder die Links zum dort erwähnten Add-On (das von addons.mozilla.org bereits, wie alle XPI-Addons, in die ewigen Jagdgründe geschickt wurde) werde ich nicht ohne Not löschen.

Wär alles viel zu aufwendig, würde alles vom eigentlichen Ziel ablenken.

Nein – hier geht’s jetzt einfach weiter!

Vielleicht sehr bald schon!

Es grüßt
Euer Fabian von fabianswebworld

Kategorien
Hard- & Software In eigener Sache Netzwelt Projekte

Warum FLST unter Firefox 57 nicht mehr funktioniert, und warum ich daran nichts ändern kann

FWW-FLST Logo-Grafik

Vor einigen Tagen wurde Firefox 57 veröffentlicht (auch unter dem Namen „Firefox Quantum“ bekannt), und wer keine Add-Ons installiert hat, wird vor allem eines gemerkt haben: Der Browser ist merklich schneller geworden und auch das Font-Rendering auf Webseiten ist nun schöner.

Alles in allem also ein toller Fortschritt – oder?

Nun ja – Langjährige Firefox-User, die seit über 12 Jahren Funktionalitäten zu schätzen gelernt haben, die nur mit Add-Ons realisierbar waren (zum Beispiel das von FLST implementierte Tab-Flipping per Klick auf den aktuellen Tab… ;-), aber auch: Tab-Scrolling durch alle offenen Tabs durch Drehen des Mausrades auf der Tableiste; bunte Tabs usw.) werden das anders sehen. All ihre geliebten Add-Ons funktionieren auf einen Schlag nicht mehr. So auch mein Add-On „FLST (Focus Last Selected Tab)“ mit seiner wohl tatsächlich von einer Vielzahl von Usern jetzt schmerzlich vermissen Tab-Flipping-Funktion.

Warum? Weil Mozilla die XPCOM/XUL-API, die die Grundlage für alle Add-Ons war, einfach „abgeklemmt“ hat. Das Killer-Feature von Firefox, nämlich die Erweiterbarkeit durch Add-Ons (und zwar nicht nur „optische Erweiterbarkeit“ wie bei Skins/Themes oder Erweiterbarkeit um bestimmte Website-spezifische Aktionen wie bei Chrome-Extensions), welches für viele eingefleischte Firefox-Fans das Hauptargument war, bei diesem Browser zu bleiben (denn langsamer als Chrome war er schon immer…), ist damit einfach weg. Einfach so.

Begründung von Mozilla: Die XUL-API habe Firefox verlangsamt und sei unsicher gewesen, da Add-Ons im Prinzip die komplette Kontrolle über den Browser (nämlich: über seine Oberfläche, seine Funktionalitäten, sein Aussehen, sein Verhalten) hatten.

Stimmt soweit – aber genau das war ja der Punkt, der die Add-Ons und damit die gesamte Firefox-„Biosphäre“ so interessant gemacht hat!

Absurd ist das deshalb, weil mit der Einführung von Add-On-Signaturen das Problem der Sicherheit von XUL-Add-Ons eigentlich schon gelöst oder zumindest gelindert wurde, und weil die neuen WebExtensions „nur noch“ so Sachen machen dürfen, wie… JavaScript in Seiten injizieren. Ja, richtig gelesen. Mein FLST darf nicht mehr den Klick auf die Tab-Leiste abfragen, aber JavaScript in jede beliebige Seite injizieren (nachdem ich bei der Installation einmal um Erlaubnis gefragt habe) dürfte es! Da schüttelt man doch den Kopf.

Und jetzt? Die erwähnten WebExtensions sind der neue Weg, Erweiterungen für Mozilla zu schreiben. Vorteil soll sein, dass diese (fast) unverändert kompatibel zu Chrome sind (oder gemacht werden können) und weniger tief in den Browser eingreifen. Damit soll der Browser insgesamt wartbarer werden, schneller, sicherer.

Und das stimmt sogar. Ja, alles wirklich valide Argumente aus Sicht der Entwickler! Vielleicht lassen sich damit neue User gewinnen, und klar: der neue Firefox ist schnell und sieht gut aus! Aber meiner Meinung nach hat sich Mozilla hier den Ärger all derer selbst eingehandelt, die über Jahre hinweg die größten Verfechter waren und selbst gegenüber anderen, die immer meinten, Firefox sei langsam(er), argumentierten, das habe gute Gründe und dafür sei er von den Features her auch viel mächtiger.

Jetzt ist er es jedenfalls nicht mehr.

Schade!

Wie geht es nun mit den „Legacy-Add-Ons“ weiter? Einige simple Funktionen lassen sich sicher in WebExtensions abbilden, aber gerade die Add-Ons, die die vermeintlich einfachsten Features (wie FLST) implementiert haben, lassen sich auf der neuen API einfach nicht mehr implementieren. Weil, „geht halt nicht“! Punkt!

Ganz konkret scheitert es im Falle von FLST am Fehlen eines bestimmten Event-Listeners (nämlich dem für Klicks auf der Tableiste bzw. auf Tabs). Und ich scheine mit meinem Add-On nicht der Einzige zu sein, der sich diesen (oder auch Events für Rechtsklicks/Linksklicks/Mausradklicks/Mausrad-Bewegung auf der Tableiste) wieder herbeiwünscht – ein Blick in den Mozilla-Bugtracker unter der ID 1246706 zeigt hitzige Diskussionen (Tipp: auch die als „unangemessen“ gemeldeten Beiträge mal einblenden…) ;-)

Was soll ich sagen: der Bug ist im Status „RESOLVED – WONTFIX“. Was soviel heißt wie: „Gibbet nich. Wird nicht mehr implementiert. Basta.“

Also – allen, die sich in den vergangenen Tagen darüber geärgert haben, dass mein Add-On nicht mehr funktioniert, oder mich angeschrieben und darum gebeten haben, dass ich das Add-On für Firefox 57 aktualisiere, sei gesagt: Ich würde ja gerne – aber es gibt einfach technisch keine Möglichkeit! Bedankt euch bei Mozilla! ;-P

Tipp: wer FLST weiter nutzen möchte, kann noch bis Mitte nächsten Jahres auf die (in erster Linie für Unternehmen mit „konservativerer“ Update-Politik gedachte) sogenannte ESR-Version von Firefox zurückgreifen. Dort werden bis voraussichtlich Juni 2018 noch XUL-Add-Ons unterstützt. Danach ist, wie es aussieht, auch hier Schluss.

Sollte sich an Mozillas Haltung etwas ändern bzw. bestimmte APIs wieder eingeführt werden, werde ich gerne nochmal einen Anlauf unternehmen. Für jetzt ist das Projekt „FLST als WebExtension für Firefox 57+“ allerdings erstmal begraben.

Euer Fabian

Kategorien
Hard- & Software In eigener Sache Netzwelt Projekte

FLST aktualisiert, neues Tool veröffentlicht

Seit letzter Woche gibt es ein kleines Update zu "Focus Last Selected Tab", welches ein kleines Problem mit Firefox 42 und höher aus dem Weg räumt (ein Klick auf den neuen Tab-Mute-Button löste immer auch ein Tab-Flipping aus, sofern dies aktiviert war). Viel Spaß mit der neuen Version (1.2.1)!

AESy IconAußerdem habe ich mein vor einigen Monaten entwickeltes Mini-Tool AESy online gestellt (der etwas merkwürdige Name leitet sich vom digitalen Audio-Datenstromformat AES/EBU ab, das im professionellen Audio-Umfeld verwendet wird). Auch wenn das Tool seit einiger Zeit in mehreren Fernseh-Ton-Regien innerhalb der ARD tatsächlich zum Einsatz kommt, um die Soundausgabe softwarebasierter Sample-Player in Verbindung mit günstigen USB-Soundkarten unterbrechungsfrei zu machen (und auch ursprünglich hierfür entwickelt wurde), so kann es doch auch für Heimanwender einen recht hohen Nutzwert haben:

Wer seinen PC über S/PDIF oder HDMI an seinen Heimkino-Receiver oder Verstärker mit digitalem Audioeingang angeschlossen hat, kennt eventuell das Problem, dass immer dann, wenn längere Zeit kein Sound vom PC ausgegeben wurde, der Anfang des jeweils nächsten Sounds (z.B. der Song-Anfang des nächsten Stücks) abgeschnitten wird, weil der AV-Receiver ein paar Millisekunden braucht, um sich erneut auf den S/PDIF-Bitstrom zu synchronisieren. Das passiert insbesondere bei Laptop-Soundkarten, die den S/PDIF-Strom komplett abschalten, wenn einige Sekunden kein Sound mehr durch den Soundtreiber ausgegeben wurde.

Wen das nervt, für den ist AESy das richtige Tool. AESy löst das Problem durch kontinuierliche Erzeugung eines stummen Audio-Streams ("Leerrahmen") einer ausgewählten Sample-Rate. Es bietet darüber hinaus noch die Möglichkeit, einen 1-kHz-Pegelton (Sinuston) zu generieren. Es kann auf meiner Download-Seite für persönliche und nichtkommerzielle Zwecke kostenlos heruntergeladen werden. Zu nichtkommerziellen Zwecken zähle ich im Fall dieses Programms auch den Einsatz in öffentlich-rechtlichen Rundfunkanstalten sowie in Bildungseinrichtungen.