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 darub, 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.

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 (machmal 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 sowas 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

PCR und Antigen COVID Tests

Das Schicksal (oder meine schlechte Planung) wollte es, dass der Tausch meines Firmen-PCs durchgeführt wurde, womit ich eine Woche lang keinen Home-Office Dienst geleistet habe.
Und wie es bei den aktuellen Infektionszahlen zu erwarten war, traten nun auch positive COVID-19 Fälle in der Firma auf.

Somit hatte ich also einen Grund mich wieder auf das Virus testen zu lassen.

» Weiterlesen

uEFI: Graphics Output Protocol (GOP)

Im klassischen PC BIOS aus den alten 16-Bit Zeiten hatten wir den Interrupt 10h (INT 0x10) um den Grafikmodus zu ändern.

Mit uEFI wurde diese antiquierte 16-Bit Technik modernisiert und somit steht mit dem Graphics Output Protocol (GOP) eine C-API der Firmware bereit, um Pixelgrafiken auf den Monitor zu bekommen.

» Weiterlesen

Runnables

Hinter der Magie von std::bind stecken eine Vielzahl von Hilfsklassen und C++ Template-Tricks, die jeden beliebigen Funktions- oder Methodenaufruf kapseln und frei mit Parametern kombinieren können.

In der C Welt gibt es (meines Wissen) nichts Vergleichbares in der stdlib.

Für die Ausführung von beliebigen Funktionsaufrufen stellt das GATE Framework daher Runnables bereit.

» Weiterlesen

Chromebook

Ein Päckchen kam verspätet unterm Weihnachtsbaum hervor: Ein Lenovo Chromebook.

Als Entwickler muss man eben auch wissen, was es sonst noch so am Markt gibt. Und die wichtigste Frage für mich war natürlich:

Lässt sich das GATE Framework auch am Chromebook kompilieren?

» Weiterlesen

Mandelbrot und Apfelmännchen

Für meine Framebuffer Experimente brauchte irgend eine “anschaubare” Grafikausgabe, und dabei fiel mir spontan wieder das Apfelmännchen ein.

Dieses mathematisch errechnete Farbenspiel aus der Mandelbrot-Menge tauchte und taucht in Schulen immer wieder als Progammierbeispiel auf.

Und heute freue ich mich, dass ich diesen Code auch wieder mal sinnvoll “recyclen” kann.

» Weiterlesen

Framebuffer

Meine OpenGL Experimente und die gategames Demo-App sind zwar toll für Windows, Linux und Android, jedoch kann ich diese Form der Grafikausgabe nie auf EFI, FreeRTOS oder DOS portieren.

Wenn man aber ein abstraktes Modell eines primitiven 2D-Bildspeichers hätte, in dem man Pixel setzen und Grafik-Untermengen hinein und herauskopieren kann, dann hätte man einen Ansatz, den man viel leichter auf alle Formen von “Bildschirmen” portieren kann. (Mikrokontroller inklusive).

» Weiterlesen

Koroutinen Kontextwechsel

Nach meinen Experimenten mit Koroutinen mit OS-Funktionen und meinem Fehlschlag mit setjmp/longjump, ist es an der Zeit, das Thema “neu zu denken”.

Denn jetzt, wo Assembler Patches im GATE Projekt leicht möglich sind und mit UEFI eine zur Zeit thread-lose Implementierung vor mir liegt, bekommen Koroutinen plötzlich eine neue Bedeutung.

» Weiterlesen

Ein frohes Neues...

Das neue Jahr ist angebrochen, doch stellt sich die Frage:

Wohin soll die Reise gehen?

Doch beginnen wir am Anfang mit einem herzlichen:

Prosit Neujahr!

» Weiterlesen

Das Jahr 2021

Ende 2020 haben wir gehofft, dass 2021 wieder “normal” werden würde. Vielleicht hat genau der “Drang zur Normalität” eben diese verhindert.

Vieles hat sich geändert, damit alles gleich bleiben konnte und in vielen Köpfen blieb trotzig alles gleich, damit sie sich von den anderen unterscheiden konnten.

Was ist also passiert in den letzten 365 Tagen?

» Weiterlesen

Corona Impfung - Teil 3

Während andere sich bei boost.org die aktuellen Version 1.78 holen um ihre C++ Programme aufzufrischen, war ich das dritte Mal im Austria-Center um meinen COVID-19 Schutz “boosten” zu lassen.

Fast könnte man sagen:

Same procedure as last year.

… doch noch ist das Jahr nicht vorbei.

» Weiterlesen

Windows X64 Calling Convention

Nach vieeelen Jahren komme ich endlich dazu: X64 Assembler.

Sich selbst ein paar “Features” hinzucoden ist ja kein Problem, doch wenn ich mit C und C mit mir reden will, wird die Einhaltung der X64 Calling Convention essentiell.

» Weiterlesen