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.

const class typename Besserwisser

Es ist oft ganz lustig, wenn man Leute (oder auch sich selbst) dabei ertappt, wenn sie altkluge Belehrungen zum Besten geben.

Aber das ist menschlich und auch nicht wirklich schlimm.

Da kam einmal die Frage an mein Ohr:

Wusstest du nicht, dass man heute nicht mehr template<class ...> schreibt, sondern template<typename ...> ?

Man erkennt dann beim Gegenüber, dass jetzt ein “Oh Gott, Nein” von einem selbst erwartet wird.

» Weiterlesen

Kenn ich nicht - mag ich nicht

Ein Kollege meinte einmal:

Schreib’ deinen C++ Code um, weil so etwas habe ich noch nie gesehen.

Gemeint war ein do { ... } while(0); Block.

Doch da musste ich darauf hinwirken, dass wir zuerst das Problem “So etwas habe noch nie gesehen” lösen.

» Weiterlesen

Schaltkreis Stecker

Wenn man mal eine Idee am Steckbrett getestet hat, damit zufrieden ist und nun an die Praxis denkt, kommt einem - bzw. kommt mir zumindest - die Frage unter:

Und wie wird das jetzt möglichst modular zusammengesteckt?

Wie kommt der Strom zum Gerät?

» Weiterlesen

GEM: GUI von 1985

Mama hat auf dem Flohmarkt fast kostenlos ein altes etwas mitgenommenes Buch gefunden und ihrem Sohnemann geschenkt.

Es trägt den Titel

Vom Anfänger zum GEM-Profi
Perfekte Programmierung auf Atari ST und IBM-PC

» Weiterlesen

Server 2016 + Intel HD Graphics = Crash

Mein Glückssträhne geht weiter …

Windows Server 2016 ist installiert, alles läuft perfekt und dann mache ich den schlimmsten Fehler überhaupt:
System wird mit dem Internet verbunden, Windows Updates laufen an und … das System friert ein.

Perfekt! Dafür liebe ich Microsoft.
Ein kluger Mann sagte mal zu mir:

Ein Feature, das man nicht abdrehten kann, ist ein Bug!

» Weiterlesen

Server 2016: Ein Tag ohne DHCP

Nach meinem Server Crash erfolgte nun der eigentlich für nächstes Monat geplante Umstieg auf Server 2016. Zwar habe ich noch keine Lizenzen, aber die ersten 180 Tage darf man ja kostenlos testen.

Die Installation lief problemlos und auch das Setup der Zusatzdienste wie z.B. DHCP war kein Problem. Getestet habe ich das allerdings nicht, weil mein Hauptrechner ja sowieso mit statischen IP Adressen konfiguriert ist.

Und heute sind die Akkus meiner Smartphones und vom 3DS leer.

» Weiterlesen

Festplatten-Totalausfall

Heute Nacht hat die Festplatte meines Servers zu Hause den Geist aufgegeben.

Backup? Nö … nicht notwendig. Die Daten darauf sind sowieso mehrfach auf anderen Systemen gespeichert und die Test-VMs sind auch egal …

… dachte ich.

» Weiterlesen

C Control Probot

Vor einige Jahren kaufte ich mir mal beim Conrad den kleinen Probot 128.

Der ist für “fortgeschrittenere” Kinder geeignet, also müsste ja sogar ich damit klar kommen. Und das wäre dann auch ein super Einstieg in die Mikrocontroller Welt.

Und das Teil ist ja auch lieb und alles, aber dann gibt es da ein Detail, dass mir die Freude nachhaltig vermiest hat.

Die C-Control Mega 128 und ihr beknacktes Compact-C.

» Weiterlesen

if (c like recursion)

Da hatte mal ein pfiffiger Kerl einen Code für eine Wildcard - Suche verfasst, der mein C-Fanboy-Herz schneller schlagen lässt.

Wenn man eine komplexere Suche in eine Zeile bannen kann, die auch noch korrekt funktioniert, ist das schon was sehr Schönes.
Und die besonderen Nebeneffekte sind:

  • Sehr geringer Maschinencode
  • Portabel auf alle (und zwar wirklich alle) Plattformen
  • Man kann damit Wettbewerbe gewinnen

Und wie hat der Junge das geschafft?

Mit einer Rekursion.

» Weiterlesen

Text-Double-Buffering

Als Entwickler freue ich mich natürlich sehr, dass meine Erfindung letztlich dann doch in den C++17 Standard Einzug gefunden hat.

std::string_view

OK, Spaß bei Seite … das haben wohl auch schon zehntausende Entwickler vor mir gebraucht und darauf hin erfunden. Aber trotzdem erinnere ich mich noch zurück an das Jahr 2007, als mir bei der Arbeit mit std::string unmittelbar auffiel, dass dieses unglaublich wichtige Feature im Standard fehlte.

» Weiterlesen

Arrays: Wenn C templates hätte...

… dann wäre C++ womöglich arbeitslos.

Naja, vielleicht nicht ganz, also Spaß bei Seite. Aber generische Programmierung mit Templates zählt für mich neben RAII zu den wichtigsten Features von C++.

Also Frage: Wie löst man dieses Manko in reinem C?

Die beiden üblichen und widerlichen Antworten sind:

  1. MACROs
  2. void*

» Weiterlesen

Die V-Table objektiv betrachtet

Man wirft sowohl C++ als auch dem COM unter Windows vor, dass sie eine V-Table (auch Virtual Method/Function Table genannt) in ihrem Objektmodell und -layout einsetzen.

Die Kritik lautet dann: O-M-G! Ein Funktionsaufruf läuft über 2 Pointer! Der erste zeigt auf die Methodentabelle und in der Tabelle zeigt ein zweiter Pointer zur tatsächlichen Funktion.

Na … jetzt könnten wir doch meinen: Ha! Das machen wir einfacher.

» Weiterlesen

Dem Leonardo die Hand schütteln

Der Arduino Leonardo ist zwar auch ein Arduino … aber eben doch ein bisschen anders.
Das gilt in erster Linie für die serielle Kommunikation, denn schnell schreibt man sich ein paar Zeilen um Bytes an die Mikrocontroller zu senden.

Beim UNO oder allgemein bei allen Boards mit separatem USB-zu-Seriell-Konverter sind die Parameter für den COM-Port recht anspruchslos …
… doch beim Leonardo funktioniert das dann nicht.

» Weiterlesen

Zeitumstellung

Ah, die Uhr hat sich wieder 3 mal zurückgestellt.

… muss ich zum Glück nicht mehr an Tagen wie heute sagen. Denn die Umstellung von Sommer- auf Winterzeit ist wieder einmal fällig.

Als ich damals vor 15-20 Jahren 3 Windows-Installationen auf einem PC parallel installiert hatte und mit VAMOS hin- und her bootete, stellte jede Windows-Installation die Uhr vor oder zurück. Damit lief die Uhr dann bis zu 2 Stunden falsch. Ein Umstellung erfolgte durch mich selbst manuell unter DOS bzw. Windows 3.x , und dann führten Windows 9x und danach Windows NT das gleiche nochmals automatisch durch.
(Anmerkung: Damals war ich hauptsächlich in DOS unterwegs und nutzte Windows nur für Office Anwendungen)

Und NTP … was ist das?

» Weiterlesen

Der unbekannte Monitor

Fast kein Programmierer weiß heute mehr was ein Monitor ist.

Natürlich meine ich damit nicht den Bildschirm, sondern ein Synchronisierungsobjekt, das in vielen Sprachen und Betriebssystemen vorhanden ist.

Ausgerechnet die Windows API hat auf dieses Konstrukt bis zu NT 6 (auch als Vista bekannt) verzichtet.

In Java und C# hingegen ist quasi alles ein Monitor … nur nutzt diesen fast niemand.

» Weiterlesen

Mixed-Reality: Im Minecraft-Wohnzimmer

Dieser Spontankauf einer Lenovo-Explorer VR-Brille leitete natürlich ein paar Folgekosten und Umbauarbeiten ein, doch am Ende landete ich dann doch in meinem virtuellen Holographic-Wohnzimmer.

Die projizierte Landschaft draußen sieht besser aus, als die mit Apps-behängten Wände und die herum schwebenden Stein-Inseln erinnern fast ein bisschen an Aincrad aus Sword Art Online.

Wirklich lustig sieht Minecraft aus, man sitzt dann in einem Minecraft-Wohnzimmer mit Glowstone an der Decke und die eigentliche Spielwelt hat man in einem übergroßen Bilderrahmen vor sich.

» Weiterlesen

Das Geheimnis von su

Während in Windows ein ganzes Gestrüpp an Funktionen herangewachsen ist um Prozesse mit anderen Rechten zu starten, hat POSIX bzw. Linux gleich ganz auf eine API verzichtet. Wer root ist, darf mit setuid() und seinen Freunden machen was er will und sonst hat niemand (kein nicht-privilegierter Account) was zu melden.

Wie bekommt also ein normaler User eine Funktion mit “erhöhten Rechten” ausgeführt?

Na man ruft das Programm su oder sudo auf … und die machen das schon irgendwie.

» Weiterlesen

Sind stop() cancel() oder quit() asynchron?

Komponenten, Dienste oder Micro-Services stellen gerne Funktionen wie start() run() oder execute() bereit, die einen spezifischen Arbeitsprozess initiieren. Nicht selten sind solche Routinen asynchron, sie veranlassen intern den Ausführungs-Start (z.B. in einem anderen Thread) und kehren unmittelbar mit einer Erfolgs- oder Fehlermeldung zurück.

Die Ausführungsumgebungen des Initiators und der Komponente sind getrennt.

Jetzt brauchen wir natürlich auch eine Möglichkeit um die Komponente zu informieren, dass sie ihre Tätigkeit einstellen bzw. abbrechen soll.

» Weiterlesen

Heute vor 20 Jahren...

… war Windows 98 aktuell.

Und nachdem ich gerade 20 Minuten in eine solche Neuinstallation investiert habe, fällt einem wieder ganz besonders auf: dass früher alles anders war.

Doch mit großer Freude stelle ich fest, dass der Blog im alten IE5 (OK ich hab die SE von 1999 installiert) angezeigt wurde. Zwar nicht ganz perfekt “responsive”, aber nutzbar.

» Weiterlesen

Fehlerströmung

Ich liebe Streams! Die Idee, dass man alles als Stream öffnen kann, Daten herausziehen und Daten reinstecken kann ist doch eigentlich genial.

Diese überlegene Unix-Konzept wurde zum Glück auch in Windows (zumeist) übernommen, und so bieten Dateien, Sockets, Pipes, Geräte, Treiber und auch Prozesse eine recht einheitliche Schnittstelle an, um Daten auszutauschen.

Man kann also mit den 2 Funkionen read() und write() bzw. ReadFile und WriteFile die halbe Welt erobern.
(Bei Windows sieht man schon am Namen, wie limitiert die API früher war, heute sind die beiden Funktion wesentlich mächtiger.)

» Weiterlesen