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.

Die Servos vom Arnold kalibrieren

Die Terminatoren vom Typ T-800 müssen mit äußerst gut kalibrierten und robusten Servomotoren ausgestattet gewesen sein … bzw. gewesen werden. Denn der Nachbau der Mechanik des menschlichen Körpers ist äußerst schwierig.

Mir zumindest gelingt es mit meinem Bausatz leider nicht, einen Greifarm so zu steuern, dass er wirklich exakt gleiche Bewegungen durchführt. Denn wenn jedes Gelenk auch nur ein kleines bisschen abweicht - also seine Endposition nicht ganz genau erreicht - liegt die Vorderzange daneben.

Der Bau eines selbstreparierenden Roboters ist so leider nicht möglich.

» Weiterlesen

jQuery Verbot

Ich bin regelmäßig davon entsetzt, wie es meine Webbrowser stets schaffen, die 3.2 Gigahertz Prozessoren meines PCs voll auszulasten um einfachste Webseiten wie Suchmaschinen-Ergebnisse anzuzeigen.

Gleichzeitig wird das Arbeiten auf ARM und Atom Tablets zur Qual.

Warum zur Hölle sind Webseiten heute langsamer, als zu Zeiten von 56KBit Modems?

» Weiterlesen

GUIs und Threads

Auch wenn modernere Frameworks etwas anderes versprechen, so haben alle bekannten GUI Umgebungen die Eigenschaft, dass sie im Kern “single-threaded” aufgebaut sind.

Oft kommt der Einwand: “Das kommt aus der Vergangenheit”, aber das hätte man schon lange ändern können.

In Wahrheit hat es einige Vorteile, wenn UI Aktionen linear abgearbeitet werden können.

» Weiterlesen

Defekte Profile

Grafische Benutzeroberflächen, auch GUIs genannt, leiden seit ihrer Erfindung an einem ihrer wichtigsten Features:
Nämlich dem Speichern des letzten Zustandes oder der letzten Aktionen des Benutzers.

Während einfache Tools und Konsolenprogramme bei jedem Start glauben, sie seien das erste mal gestartet worden, wollen “die schönen Programme” dort weitermachen, wo sie zuletzt aufgehört haben.

Das klappt so lange, bis ihr Gedächtnis nachlässt …

» Weiterlesen

Sessions unter Linux

Während der Session-Begriff unter Windows noch einigermaßen eindeutig ist, haben wir unter Linux mehrere Hierarchie-Ebenen, auf die dieser Begriff bedeutet werden kann.

Von Prozessen über Logins bis hin zu grafischen Sitzungen finden wir hier unterschiedliche Mechanismen vor, die wir jeweils als “Session” bezeichnen können.

» Weiterlesen

Sessions unter Windows

Eine “Sitzung” auch als “Session” bekannt, kann je nach Applikationssicht alles mögliche sein.

Windows nutzte den Begriff schon in seinen Anfängen.

This will end your Windows Sessions.
(OK) (Cancel)

Doch mit NT 4 und der Einführung von Terminal-Services, hat der Begriff auch programmatisch Bedeutung.

» Weiterlesen

Notwendigkeit des eigenen Ansatzes

Oft behaupten Personen, dass man in der Software-Entwicklung niemals Dinge doppelt tun soll.
Das mag ja grundsätzlich stimmen, doch wird es damit gleich gesetzt, dass bestehende Praktiken nicht mehr hinterfragt werden dürfen.

Ich sehe das anders: Den besten Wissenseinblick erlangt man oft erst durch den Nachbau von Bestehendem.

» Weiterlesen

ZIP drive

Etwas vor dem Jahr 2000 wurden Disketten für mich endgültig zu klein, um Daten darauf auszutauschen. Textdokumente wurden mit jeder Office Version größer und anstatt von kleinen WMF Vektorgrafiken fanden immer mehr echte Bilder Einzug in die Dokumente.

Das gleiche passierte auch mit Quellcode. Immer größer wurden die Resource-Dateien, bis sie schließlich nicht mehr auf 1.44 Megabyte Datenträger passten.

Doch es gab eine Lösung: Das ZIP-Laufwerk von Iomega

» Weiterlesen

fork()

Unixianer preisen fork() für die schnelle und effiziente Art, neue Kind-Prozesse zu erzeugen.

In Windows ist dieses Feature (offiziell) nicht enthalten, was bei der Portierung von Applikationen immer zu Problemen und recht komplexen Workarounds führt.

Während fork() in manchen finalen Programmen vor allem vor der Erfindung von Threads eine großartiges Feature darstellt, so ist - meiner Meinung nach - seine Funktion für Bibliotheken störend.

» Weiterlesen

Alignment: Korrekte Ausrichtung

Wenn aus Dateiformaten oder Datenpuffern Variablen entnommen werden, bzw. wenn Pointer auf eine bestimmte Stelle gesetzt werden und als ein bestimmter Typ re-interpretiert werden, dann hat man PC oft Glück und das funktioniert.

Will man den gleichen Code auf den Raspberry PI oder aufs SmartPhone portieren, erlebt man Abstürze.

Vielleicht handelt es sich dabei um Alignment- Exceptions.

» Weiterlesen

Das Problem mit den Zertifikaten

Und? Bei euch auch alles verschlüsselt?

Zertifikate gestatten uns sicher über das Internet Daten auszutauschen. Alles wird verschlüsselt.

… doch Verschlüsselung ist nur eine von vielen Funktionen von Zertifikaten.

Und hier beginnt die leidige Geschichte, was wann wie sicher und sinnvoll ist.

» Weiterlesen

Mapping

Zu den wichtigsten Container-Datenstrukturen zählten in meiner bisherigen Karriere:

  • Arrays:
    Lineare Felder von Datentypen, die per Index angesprochen werden
  • Maps:
    Felder von Schlüssel-Wert Paaren, die über den Schlüssel angesprochen werden

Maps sind auch als assoziative Arrays, Dictionaries oder Tables bekannt. Jede Programmiersprache bzw. -umgebung lässt sich da offenbar einen anderen Namen einfallen.

» Weiterlesen

Deutsch BASICs

Früher habe ich meinen Lehrern die Schuld daran gegeben, aber die Wahrheit ist, dass ich in Fremdsprachen einfach schlecht bin. Das gilt auch für Englisch.

Trotzdem ist es gerade in der Online-Welt unumgänglich diese Sprache zu verstehen und zu nutzen.
Und für die Programmierer beherrscht Englisch ohnehin die ganze Welt.

Die ganze Welt? Nein, Office 95 leistete erbitterten Widerstand…

» Weiterlesen

Anno 1601

Nachdem ich mit der Anno-Spiele-Serie nie direkt in Berührung gekommen bin und nur davon gelesen habe, handelt dieser Artikel nicht von der Besiedelung unentdeckter Welten.

Es geht um die Zeitrechnung auf unseren Computern.

» Weiterlesen

SetPixel reicht doch ... nicht

Als sich mein Wechsel von Pascal zu Assembler (unter DOS) vollzog, war es für mich ein Spaß, mit Grafiken zu spielen. Da gab es dann immer wieder Vergleiche zwischen meinen damals 3 Rechnern: Pentium, 486 und 386.

Bei mir bildete sich dann die Meinung:

Es reicht eine plattformabhängige Funktion SetPixel(), die einen Pixel auf dem Schirm einfärbt, und alles andere kann plattformunabhängig implementiert werden.

OK, ich war jung und wusste es nicht besser …

» Weiterlesen

Wozu Caches da sind ...

Ein Kollege beharrte einmal darauf, dass eine Datenbankstruktur für die Bedürfnisse der eingesetzten Datenbank abgeändert werden müssen, weil die Performance beim Lesen sehr gering ausfiel.
Konkret ging es um eine Tabelle, die Kunden beinhaltete und die eigentlichen Daten waren mit dieser verkettet.

Es stellte sich heraus, dass bei jeder Anfrage zuerst der gewählte Kunde gesuchte wurde und danach mit dessen ID die weiteren Daten geladen wurden. … Und das geschah unzählige Male für jede Form der Datenbeschaffung.

Mein Vorschlag:

Wieso speichert ihr euch nicht zumindest die Kunden-ID bei der ersten Abfrage und nutzt sie dann direkt?

wurde mit seltsamen Ausreden abgelehnt. Immer wurde auf die Datenbank selbst verwiesen, die mit anderen Abfragen (Queries) schneller läuft.

… für mich klang das eher nach Ich weiß nicht wie. … also ändern wir lieber alle Datenformate ab und brechen die Kompatibilität …

» Weiterlesen

Serielle Kommunikation

In den 90ern zählte die serielle Schnittstelle neben der parallelen Schnittstelle am PC zu den wichtigsten Anschlüssen neben Tastatur und Bildschirm.

Während Drucker am breiten parallelen Port hingen, war die wichtigste Anwendung des seriellen Ports, eine Computer-Maus an das Gerät anzubinden.

Noch viel wichtiger war die Schnittstelle aber in der Industrie und das ist sie teils heute noch.

» Weiterlesen

Jekyll-Search: JSON und das goldene Vlies

Die Geschichte von Iason, dem Anführer der Argonauten, umfasst auch die Suche nach dem Goldenen Vlies. Sie wurde schon öfter verfilmt, aber nichts kommt an die Darstellung von Popeye aus dem Jahr 1960 heran.

[ Youtube Video Link ]

Heute 3500 Jahre nach dem Zeitalter der griechischen Helden erlebt Jason in Form von JSON neue Beliebtheit.

… ganz besonders, wenn es darum geht in Jekyll-Seiten eine Suchfunktion einzubauen.

» Weiterlesen

Windows 10 1809: Jumbo Frames

Nachdem Microsoft das Rollout von Windows 10 1809 im September bzw. Oktober wegen Fehlern zurücknehmen musste und erst Mitte November wieder bereit stellte, fand nun auch mein Update statt.

Die Prozedur lief korrekt ab und nach ein paar Tests entfernte ich das alte Windows 1803 Backup von der Festplatte.

Und dann fiel es mir auf: Das Kopieren von Dateien auf Netzlaufwerke war schwer beeinträchtigt. Datenraten von 50 Kilobyte pro Sekunde waren das Maximum.

Was zur Hölle ist da wieder schief gelaufen?

» Weiterlesen

main() ohne Parameter?

Das Schreiben der Funktion int main() - also ohne Parameter - ist erlaubt und vollkommen OK.

Doch wie kann das sein? C kennt kein Function-Overloading und wir wissen doch, dass main eigentlich so aussieht:
int main(int argc, char** argv);

» Weiterlesen