Kategorien
Elektronik Hard- & Software In eigener Sache Kurzmeldung 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
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.

Kategorien
Hard- & Software In eigener Sache Netzwelt Projekte

Update für FLST (Focus Last Selected Tab) für Firefox 29 verfügbar

FWW-FLST Logo-GrafikIn den letzten Tagen erreichten mich vermehrt Kommentare, dass mein Firefox-Add-On „Focus Last Selected Tab“ (FLST) für Firefox 4 und höher unter dem neuen Firefox 29 nicht mehr ganz das tut, was es soll: Tab-Flipping funktioniert zwar noch, aber die Funktion, den zuletzt fokussierten Tab beim Schließen eines Tabs automatisch anzuwählen, funktioniert nicht mehr, wenn man einen Tab per Klick auf den „X“-Button schließt. Beim Schließen von Tabs mittels Tastatur-Shortcut funktionierte alles wie gehabt.

Da ich selbst aufgrund der neuen Oberfläche von Firefox 29, mit der ich mich irgendwie noch nicht so recht anfreunden kann, derzeit die ESR-Version von Firefox 24 weiternutze, wurde ich erst durch die Benutzer-Reviews auf den Fehler aufmerksam und habe mich dessen nun angenommen. Seit heute steht auf der Mozilla-Add-On-Webseite eine aktualisierte Version (1.1.5) bereit, die das Problem behebt und auch unter Firefox 29 und höher einwandfrei funktioniert.

Benutzer, die automatische Add-On-Updates in Firefox aktiviert haben, kommen automatisch in den Genuss des Updates.

Darüber hinaus habe ich das Add-On mit diesem Update auch kompatibel zu SeaMonkey 2.x gemacht; ein Wunsch, der ebenfalls schon seit Monaten immer mal wieder aus der SeaMonkey-Gemeinde an mich herangetragen wurde.

Ich hoffe, mit diesem Update allen Firefox-29- und SeaMonkey-Usern den Wochenstart etwas versüßen zu können!

Viele Grüße,
Fabian