Schon mal versucht eine moderne Seite mit einem Raspberry PI Zero zu öffnen?
Viel Spaß dabei!

Hier befindet sich eine entschlackte Zusammenstellung meiner Tagebucheinträge von opengate.at/blog, aber ohne unnötigem HTML oder CSS Schnickschnack.

So haben Webseiten vor 20 Jahren ausgesehen und ich möchte hiermit beweisen, dass man auch heute noch Content so gestalten kann, dass er auf alten Browsern, Embedded-Systemen und energie-effizienten SoCs vernünftig dargestellt werden kann.

Denn schließlich geht es hier um Inhalte, und nicht darum, ob Überschriften mit Farbverläufen funkeln können.
d(^_^)b

Meine Ärztin hat mir vom Verzehr von Cookies abgeraten.
Cookies sind schädlich für den Organismus und schränken die Bewegungsfreiheit im Netz ein.
Folglich muss auch diese Seite ohne diese Bürde auskommen.

ARM Crosscompiler

Wenn man jetzt schon dank MinGW unter Linux seine Windows Programme kompilieren lassen kann, warum soll man denn nicht auch unter X86 PCs die ARM Binaries für den Raspberry PI erstellen lassen können?

Und mit Debian geht das echt einfach … und am Ende klappt das Ganze sogar unter WSL in Windows 10.

» Weiterlesen

LUA: Scripts für C/C++

Die Scriptsprache LUA beeindruckte mich schon vor vielen Jahren mit ihrer einfachen Implementierung und dem geringem Ressourcenverbrauch.

Und außerdem ist es in keiner anderen Sprache so leicht möglich Kernfunktionen wie den Dateizugriff selbst zu implementieren oder ganz wegzulassen.

» Weiterlesen

C++ RTTI: Run-Time Type Information

Die Run-Time Type Information (kurz RTTI) ist eines dieser Features in C++, weshalb mache Anwender auf Exceptions und virtuelle Methoden verzichten.

Denn während viele andere Features der Sprache genau “abgeschätzt” werden können, eröffnet RTTI einen Baum von Abhängigkeiten, die schnell auch zu ungewolltem Overhead werden können.

» Weiterlesen

Webmin

Es muss etwa im Jahr 2003 gewesen sein, als mir ein Freund die Installation von webmin auf meinen Linux Systemen empfohlen hat.

Und tatsächlich war dann webmin der Grund, weshalb ich überhaupt angefangen habe, mit Linux zu arbeiten.

» Weiterlesen

SFU und SUA: Unix unter Windows

Eher zufällig stolperte ich bereits für über 15 Jahren mit meinem damaligen Server 2003 über die interessante Erweiterung “Service for Unix”.

Denn tatsächlich gab es seit NT 4 kein Windows, das gänzlich ohne POSIX Schnittstelle auskam. Windows 10/Server 2016 war hier anfangs die Ausnahme, doch bereits im Server 2019 kehrte der Nachfolger mit Windows Subsystem for Linux zurück.

» Weiterlesen

Star Trek: Discovery Staffel 4

Mit der 4.Staffel von Star Trek: Discovery hatten mich die Macher, Netflix und Paramount schwer verärgert, denn wenige Tage vor dem Beginn des Ausstrahlung wurde verkündet, dass die Serie gar nicht im europäischen Raum verfügbar sein würde.

Doch … nach sehr viel Kritik … entschied man sich doch noch auf pluto.tv jede Woche eine Episode zu zeigen.

Und so kam ich letztlich doch in den Genuss, die neueste Star Trek Produktion (ganz ohne Tricks) mitverfolgen zu können.

» Weiterlesen

Abstürze abfangen

Das Schlimmste, was passieren kann, ist, wenn eine Fremdbibliothek in einem internen Aufruf eine Schutzverletzung (Segmentation Fault) produziert und den eigenen Prozess dann gleich mit in den Abgrund reißt.

Das Debugging wird dann sehr erschwert.

Doch es gibt Hoffnung: Man kann auch SegFaults abfangen und im Idealfall einen Crash verhindern.

» Weiterlesen

restrict

Mit der Fehlermeldung

error C2485: ‘constant’: unrecognized extended attribute

eröffnete mir der MSVC 2022 beim Kompilieren von libreSSL die Möglichkeit, wieder einmal über ein “neueres” C Schlüsselwort nachzudenken, nämlich restrict

» Weiterlesen

Serieller Bypass

Unterschiedliche Menschen sehen die gleichen Dinge unterschiedlich.
Manche schreiben Buchstaben, die einen von links nach rechts, die anderen umgekehrt, und wieder andere malen Logogramme von oben nach unten.

… und unterschiedliche Mainboards nummerieren COM-Port Pins unterschiedlich. Einige waagerecht, andere senkrecht.

» Weiterlesen

archive.org

Entgegen vieler Behauptungen nach der Art:

Das Internet vergisst nicht.

behaupte ich: Das Gegenteil ist der Fall.
Denn Websites und Software, die älter als 5 Jahre sind, verschwinden von heute auf morgen, wenn Firmen Pleite gehen oder Privatleute ihre Homepage auflösen. (Nur bescheuerte Fotos von Fresstellern und Katzen leben auf Facebook ewig weiter.)

Doch einer kämpft gegen das globale Vergessen an:
Das Internetarchiv von archive.org.

» Weiterlesen

Logging und Zustände

Wenn man mit Hintergrunddiensten arbeitet, die sich schwerer debuggen lassen und an keine UI oder Konsole gebunden sind, bekommt ein uraltes Schema wieder eine große Bedeutung: Nämlich leicht lesbare Logdateien.

Basierend auf den Erfahrungen mit anderen Bibliotheken wurde im GATE Framework auch ein “etwas anderes” Logging-System integriert.

» Weiterlesen

Lokale C++ Typen

Compiler Experimente mit älteren Varianten des GCC haben mir leider einen Workaround zerschossen, den ich als Abstraktion und Ersatz von Lambda Ausdrücken vorgesehen hatte:

Nämlich den Einsatz von lokalen Typen.
Konkret: Klassen, die innerhalb einer Funktion deklariert werden.

» Weiterlesen

Lupus est homo homini

Während 1000 km von mir entfernt Schusswaffen abgefeuert werden, habe ich sie heute wieder aus meiner DVD Sammlung rausgesucht: Eine der vermutlich bedeutendsten Folgen aus der Serie Star Trek Deep Space 9.

Es war die 8. Folge der 7. Staffel, in der das sonst so sterile Set von Raumschiffen durch die raue Kulisse eines Stellungskrieges ausgewechselt wurde und wo nur Waffengewalt und Zerstörung die Handlung dominierten.

» Weiterlesen

daemonize()

Tools wie daemonize oder start-stop-daemon starten laut ManPage einen Prozess “als Daemon” unter BSD oder Linux.
Doch die Einrichtung und der automatische Start von Diensten unter unixoiden Systemen ist am Ende dann doch noch etwas ganz anderes.

Und wieder einmal muss ich mich zuerst mal mit mir selbst einigen, wie man das daemon Konzept in C/C++ Programmen integrieren kann.

» Weiterlesen

HTTP Server

Mit der Entwicklung eines eigenen kleinen HTTP Servers bin ich damals vor 9 Jahren in die Embedded-Welt eingestiegen.

Auch im GATE Projekt befindet sich eine adäquate neue rein auf C aufbauende Implementierung, die mir die Verwaltung von MicroServices erleichtern soll.

» Weiterlesen

IP Konfiguration

Während alle Betriebssysteme vergleichbare APIs für das Dateisystem haben, ist die zweitwichtigste (manchmal auch wichtigste) Konfiguration vollkommen individuell in die Software eingeflossen: Die TCP/IP Konfiguration.

Dass Windows und Linux unterschiedliche Meinungen haben, war zu erwarten. Doch dass alle Unix Derivate unterschiedliche Wege gehen, überrascht mich immer wieder.

» Weiterlesen

Straßenkarten und Satellitenbilder

Als ich damals meinen PKW Führerschein machte, war die Landkarte aus Papier immer noch ein übliches Inventar in jedem Fahrzeug.
Doch spätestens 2010 hatte jeder entweder ein separates Navigationsgerät oder ein Smartphone mit einer entsprechenden App, um sich auf den Straßen orientieren zu können.

Viel interessanter ist aber, wie man solche Karten-Apps selbst schreiben kann.

» Weiterlesen

Webhosting 1.0

Als ich etwa im Jahr 2001 “das Internet” entdecken durfte, wollte ich auch meine eigene Webseite haben. Aber bezahlen … nein … für so etwas reichte das Taschengeld nicht.

Also begann die Suche nach gratis Webhostern.

» Weiterlesen

MSVC 6/7 type traits

Mit dem Visual Studio 2005 wurde der MSVC halbwegs ordentlich nutzbar. Zwar nicht alle, aber zumindest viele C++ Template-Konstruktionen wurden mit dieser Version endlich standard-konform umgesetzt und so konnten boost und andere Bibliotheken langsam in Richtung C++11 marschieren.

Doch … was war vorher?
Tatsächlich dokumentieren ältere boost Ausgaben einige faszinierende Workarounds um Template-Features wie Type-Traits auch mit älteren nicht-standard-konformen Compilern umzusetzen.

» Weiterlesen

Bitbucket App-Passwords

Am 1. November wurde es angekündigt und am 1. März 2022 ist es so weit:

Bitbucket sperrt User Passwörter für den Zugang zu seinen GIT Repos.

Die Alternative sind SSH Schlüssel oder “App-Passwörter”.

» Weiterlesen