Das mein Blog mit WordPress arbeitet, dürfte jetzt keine neue Nachricht sein. Aber das ich jetzt wieder auf mein altes Design gewechselt habe, dürfte vielleicht etwas Verwunderung hervorrufen. Als Softwareentwickler, der eher im Desktop-Bereich unterwegs ist, komme ich nur selten dazu, mich mal mit Phänomenen wie SEO (Suchmaschinenoptimierung) oder Seitenperformance zu beschäftigen. Wenn ich aber schon mal dabei bin, kann ich ja meine Erfahrung kurzerhand mal teilen.

weiterlesen

Moment mal, wie lange sitze ich jetzt schon am Rechner und programmiere? Also meine ersten Erinnerungen belaufen sich so ungefähr auf 1987 zurück, d.h. also seit 30 Jahren. In dieser Zeit laufen einem viele Merkwürdigkeiten über den Weg, aber mit Visual Foxpro verbindet mich eine gewisse Hassliebe. Die Altvorderen kennen vielleicht noch dBASE als einen Vorgänger von Foxpro. Als ich anfing mich damit zu beschäftigen, bin ich schon über das Wunder des Stringvergleichs gestoßen, aber jetzt muss ich das mal festhalten. Vielleicht kann ich doch noch andere für diese archäologische Relikt begeistern.

weiterlesen

Ich bin ja seit einigen Wochen stolzer Besitzer einer Garmin vivoactive HR. Das ist nicht nur eine schicke Uhr, sondern auch ein erstklassiker GPS-Tracker. Leider fehlte mir bis jetzt noch ein schönes WatchFace (zu Deutsch eine Uhrendarstellung), die mir gefällt. Das Switch-Theme ist schon mal ganz gut, weil es Akkuladung, Herzschlag, kCal und gelaufene Strecke neben der Uhrzeit anzeigt, aber das Design ist verbesserungswürdig.

Also habe ich mir mal angeschaut, wie man so ein Watch Face erstellt. Es gibt prima Tutorials bei Garmin, die das einfach erklären. Die verwendete Sprache MonkeyC ist etwas gewöhnungsbedürftig. Sie soll eine angereicherte C-Variante sein, mutet aber wie Java mit schlechten Basic-Angewohnheiten (untypisierte Parameter) an. Kleine Kostprobe?

function writeText(dc, position, text, fontType) {
  dc.drawText(dc.getWidth() / 2, position, fontType, text, Gfx.TEXT_JUSTIFY_CENTER);
}

Zum Glück erklären auch die Tutorials, wie man das MonkeyC bzw. das Connect IQ in Eclipse einbindet, sonst musste man das auch noch über Textzeile steuern. Ganz so viel Retrocharme brauch ich dann doch nicht. Jedenfalls habe ich mir als Ziel gestellt, ein Watch Face zu erstellen, welches die Uhrzeit in Worten anzeigt. Auf der Webseite von Garmin gibt es auch ein Video, welches zeigt, wie man benutzerdefinierte Fonts einbindet. Und so entstand eine Uhr, die auch noch die Uhrzeit in einer Frakturschrift ausgibt.

Letztens stellte ein Kumpel die Frage in die Runde, ob wir nicht mal ein neues Spiel für die LAN-Party kaufen wollen. Es ging ein kleiner Dialog los, ob man nicht lieber ein Spiel zum Downloaden nehmen sollte, weil es kaum noch Spiele auf DVD zu kaufen gibt. Der Urheber der Frage mag keine Downloads und lehnte das ab. Ich wollte auch meinen Beitrag leisten und fing an zu schreiben und zu schreiben und irgendwann merkte ich: Jetzt wird es zu viel. Also entstand dieser Blogeintrag…

Heute mal ein kurzer Abriss über den Fortschritt der Spiele in den letzten Jahren. Fangen wir vor 15-20 Jahren an, wo man noch mit einem Modem online gegangen ist. Da war es für Spiele wichtig zu unterscheiden, ob man online ist oder nicht.

Damit nicht jeder mit gecrackten Spielen rumflitzte, erfand man den Kopierschutz. Der war damals noch auf der CD/DVD drauf (Hintergrund: Meistens bestand der Kopierschutz aus Fehlern auf der CD/DVD, die erwartet wurden oder Missachten des Standards). Als Laufwerke auf einmal mit mehreren Standards (CD, DVD, DVD+R, DVD-R usw.) umgehen mussten, wurden sie strikter bei der Einhaltung der Standards, d.h. die Spiele liefen mit bestimmten Laufwerken nicht, weil das Laufwerk der Meinung war, kein Medium zu erkennen. Das führte zu frustrierten Kunden und Herstellern, die den Kram zurücknehmen mussten. Was für ein Glück, dass sich zu der Zeit ein anderer Standard breit machte, der sich DSL nannte. Dieses komische Internet und auch noch zuhause und auch noch viel schneller wie Modem. Toll!

Und irgendwie stellte sich jede Spielfirma einen Server hin, der für Registrierungen verantwortlich war. Das Spiel telefonierte nach Hause und man bekam das Okay, dass man spielen durfte. Die Hersteller entdeckten irgendwann, dass es natürlich auch so seine Vorteile hat, wenn der Kunde online ist. Denn hatte man einen groben Schnitzer im Programm, konnte man Dateien zum Kunden schicken und schon lief das Spiel wieder. Also fingen die Programme an, bei jedem Start nach Haus zu telefonieren und nach Updates zu fragen. Außerdem hatte es natürlich auch Vorteile für die Kunden: Menschen ohne Freunde konnten über dieses Internet Fremde einfach herausfordern und man musste kein schlechtes Gewissen haben, wenn die anderen verlieren. Die können schmollen, ohne dass es einen juckt.

Bis irgendwann den Herstellern die Ideen für Spiele ausgingen. Geballer, Strategie, Logik… alles schien ausgereizt. Also kam ein Spielehersteller auf die clevere Idee und dachte sich: Warum stelle ich nicht den gesamten Prozess (Auslieferung, Registrierung, Updates) nicht jungen Firmen zur Verfügung, damit die neue Ideen bringen und ich trotzdem Geld verdiene. Und so entstanden Portale wie Steam, Origin usw. Und damit sind wir quasi auf dem Stand vor 9 Jahren.

Ich lasse das komplette Konzept von Spielen, die eigene Welten generieren mal außen vor. Ach naja, vielleicht einen Satz: Mittlerweile gibt es Spiele, wo es keine feste Handlung mehr gibt. Der Inhalt wird dynamisch generiert und man kann ein komplett neues Universum entdecken. Hier geht es um entdecken, überleben und Bilden von Allianzen, Handel etc. Je nachdem, worauf man Lust hat.
Wer neugierig ist: No man’s sky

Aber worauf will der alte Mann mit seinem Geschwafel hin? Stellt euch vor, ihr geht in den Mediamarkt und fragt nach „La-la-Land“ auf VHS.

Immer wieder habe ich zwischendrin mal eine Idee, was ich von meiner Plattenverwaltung noch gerne wissen möchte – so eine Art universelle Statistik. Zum Beispiel wissen, welche Platten noch kein Cover haben, wo noch kein Erscheinungsjahr hinterlegt ist usw. Völlig unabhängig davon entdeckte ich auf meiner virtuellen Maschine auf Arbeit einen Hinweis auf Microsoft Power BI. Wenn man das auflöst wird Business Intelligence daraus. In Kombination mit „Power“ klingt das richtig gruselig nach stundenlangen Besprechungen in den Fakten und Zahlen präsentiert werden. Fakt ist – genau dafür ist das Teil gedacht. Man verbindet sich mit einer Datenquelle, extrahiert die Daten – gruppiert, summiert und macht dann eine schicke Grafik daraus.

Also hab ich mich hingesetzt und der Power BI meine Plattenverwaltung zu futtern gegeben. Prima hat mir gefallen, dass man sofort das komplette Datenmodell sieht und die Beziehungen der Tabellen untereinander. Und genau entlang dieser Beziehungen kann man seine Abfragen aufbauen. Meine erste Frage an das System war: Wie oft höre ich Platten in Beziehung zu ihrem Erscheinungsdatum? Ich schnappte mir die Tabelle „PlayStats“, wo das Datum hinterlegt ist, wann eine Platte abgespielt wurde. Diese Tabelle verweist auf die Platte und diese wiederum auf die Veröffentlichung. Ich reduzierte das Abspieldatum auf Monat und Jahr, entfernte IDs und andere Daten, die nicht relevant sind und gruppierte dann nach dem Erscheinungsjahr, was eine neue Spalte hervorruft: Die Anzahl pro Monat und Erscheinungsjahr.

Jetzt kommt der optische Teil – bis jetzt starrt man nur auf langweilige Zahlenkolonnen, aber nachdem man die Daten fertig hat, kann man ähnlich wie in Excel Diagramme generieren und dabei live die Diagrammtypen ändern usw. Und fertig war mein erstes Diagramm: Eine Treemap, die zeigt, dass mehr als ein Drittel der Veröffentlichungen, die ich bisher (seit Einführung der Abspielfunktion) aus dem Jahr 2016 stammen und darunter – feiner aufgeteilt – die einzelnen Monate. Und auf die Schnelle noch ein zweites Diagramm: Anhand der Veröffentlichung sehen, wie sich die Verteilung des Mediums geändert hat.

Schon seit letztem Jahr nervt mich meine Serie zu den alternativen Raumantrieben gewaltig. Entweder landen Leute bei mir, die eine leichte Veranlagung zum Esoterischen haben und Teilchen erfinden, um aberwitzige Theorien zu erklären oder es finden sich die Supernerds ein, die klugscheißern, dass es wissenschaftlich totaler Blödsinn wäre, was ich da schreibe. Dabei habe ich damals (2006) die Serie so verfasst, dass sie auch ein Normalbürger halbwegs verstehen kann – also meine Zielgruppe war eigentlich irgendwo dazwischen. Und jetzt will ich den Kram loswerden, ohne ihn zu löschen. Kann man Google nicht überreden, dass man auf meinem Blog auch tolle Sachen zu Reisen, elektronischer Musik und so finden kann. Ich installierte ein SEO-Plugin…

Ich lernte relativ schnell kennen, was eine Sitemap ist, dass es auch eine Image-Sitemap gibt und dass meine Image-Sitemap über 80 Fehler hat. Aber so wirklich den Benefit eines SEO-Plugins habe ich noch nicht erfasst. Dafür freue ich mich um so mehr, dass ich jetzt die Google Search Console gefunden habe. Dort sehe ich jetzt welche Suchbegriffe zu meiner Seite geführt haben, eine Funktion, die Piwik als auch Google Analytics verwehrt bleibt. Natürlich habe ich keine Information zum Benutzer, aber die brauche ich eigentlich auch nicht.

Bei meinen Recherchen stieß ich darauf, dass Google angeblich Webseiten bevorzugt behandelt, die mit einem SSL-Zertifikat ausgestattet sind. Vor einiger Zeit hatte ich schon mal mit dem Let’s encrypt-Zertifikat herumgespielt, aber wegen der Umstellung aller Links hatte ich es doch für meinen Blog doch sein gelassen. Diese Woche war es aber dann soweit – ich ersetzte alle HTTP-Aufrufe durch HTTPS und schaltete bei all-inkl scharf, dass alle HTTP-Aufrufe auf SSL umgesetzt werden. Wesentliche Hilfe dabei war ein Beitrag, der einen todsicher durch dieses gefährliche Gebiet führt. Seit dem ist man im wahrsten Sinne des Wortes bei mir auf der sicheren Seite.

Gleichzeitig bin ich dabei, die fehlerhaften Seiten der Image-Sitemap zu korrigieren, damit alle Bilder vernünftig im Index aufgenommen werden. Vor dem nächsten Schritt – sämtliche Beiträge, d.h. über 1.500 Stück (zzgl. Bilder) mit passenden Tags zu versehen – drücke ich mich erstmal. Ich glaube, das macht die SEO wirklich aus – noch das letzte Quäntchen aus den Suchmaschinen zu pressen. Und was ist nun mit meinem eigentlich Vorhaben? Abwarten – am Ende werde ich die Beiträge wahrscheinlich von der Indexierung ausschließen lassen.

Eine ganze Weile bin ich davon ausgegangen, dass es irgendwie daran lag, dass ich einfach das Mainboard unter Windows einfach weggerissen habe und irgendein Treiberproblem vorlag. Aber heute habe ich mir einfach mal die Zeit genommen und recherchiert.

Das Problem äußert sich wie folgt: Ich schalte meinen Rechner ein, BIOS-Screen, Windows 10 startet, der Anmeldeschirm kommt hoch, ich logge mich ein und nach und nach werden die Programme für die Taskleiste gestartet und bringen ggf. ihre Meldungen hoch. Aber ich höre nichts – Stille! Starte ich darauf hin den Rechner neu, habe ich wieder Sound. Konfiguration: Mainboard ASRock, Soundkarte Soundblaster Z. Ich schreibe mal wieder zusammen, damit der geneigte Leser weiß, was nicht hilft:

  • Problembehandlung für Soundprobleme: Windows wurstelt eine ganze Weile vor sich hin und stellt dann fest, dass es neu starten will. Das Ergebnis: Sound geht, aber das geht ja immer, wenn man das zweite Mal startet. Sobald der erste Systemstart kommt, ist wieder Ruhe.
  • Treiber neu installieren: Schien für eine gewisse Zeit zu helfen, aber kaum meldete sich der neue GeForce-HD-Audio-Treiber, war wieder Ruhe. Auch wenn ich jetzt den Soundblaster-Treiber neu installierte half das nichts.

Also fragte ich Google, ob es nicht eine Lösung für mein Problem weiß. Die Überraschung war, dass ich auf erstaunlich viele Einträge stieß, die in erster Linie ins Kundenforum von Creative führten, wo sich etliche Nutzer beschwerten, dass ihre Soundkarten beim ersten Systemstart keinen Mucks von sich geben. Natürlich wurden mehrere Lösungsmöglichkeiten diskutiert, in erster Linie den Fast Boot im BIOS zu deaktivieren, wobei dann die Hälfte meinte, es hätte bei ihnen nicht geholfen. Danach folgte das Deaktivieren des Schnellstarts im Windows. Ein paar schlugen noch vor, die UEFI-Option im BIOS zu deaktivieren und ggf. Windows neu zu installieren. Na klar…

Ich filterte den für mich essenziellen Hinweis heraus und machte mich schlau, was der Schnellstart seit Windows 8 bedeutet. Im Grunde ist es wie der Stand-By-Modus beim Laptop. Windows schreibt den gesamten Speicherinhalt auf die Platte und muss so beim Neustart des Systems nichts mehr groß nachladen oder initialisieren. Sehr zu Leidwesen der Soundblaster, die offensichtlich eine besondere Behandlung fordert.

schnellstart

Um den Schnellstart abzuschalten, muss man in der Systemsteuerung in die Energieoptionen gehen. Dort gibt es links den Punkt „Auswählen, was beim Drücken von Netzschaltern geschehen soll“. Jetzt sieht man schon den Punkt „Schnellstart aktivieren (empfohlen)“, der aber noch deaktiviert ist. Also muss man kurz den Admin raushängen lassen und oben „Einige Einstellungen sind momentan nicht verfügbar.“ auswählen. Jetzt kann man den Haken entfernen und mit „Änderungen speichern“ sollte man wieder beim ersten Start was hören.

Ich würde das Problem in erster Linie bei Creative und ihrem Treiber suchen, denn das Problem besteht, wie oben schon beschrieben schon seit Windows 8 und scheint etliche Nutzer zu betreffen. Eine gut funktionierende Soundkarte wäre mir an der Stelle lieber, als ein rotes Glühen im Gehäuse.

Ich muss zugeben, das alte Blogdesign war schon ziemlich miefig. Die Zeiten im Web ändern sich schnell und damit die Anforderungen an eine Webseite. Immerhin war das alte Blogdesign schon responsive, d.h. es passte sich seiner Umgebung an (Handy, Tablet, PC). Aber heute hat keiner mehr Bock seitenlang sich durch Einträge zu scrollen, das Optische steht viel mehr im Vordergrund. So in etwa war meine Anforderung an das neue Blogdesign. Es folgte das übliche Spiel. Design ausprobieren, bei Bedarf runterladen, auf den Server kopieren, nochmal ausprobieren und dann (zu 90%) wieder löschen. Nach einiger Zeit stellte sich raus, dass mir das Masonry-Design ziemlich gut gefällt, d.h. von den Beiträgen sieht man das Titelbild und einen Ausschnitt des Artikels. Also suchte ich gezielter und wurde bald auf das Oria-Theme aufmerksam. Ich aktivierte es und es gefiel mir sehr gut. Krisztas Meinung ging in einer andere Richtung, ich meinte nur: „Wart’s mal ab…“.

Also hockte ich mich hin, stellte die Farben um, verschob einige Bilder, dass sie als Titelbilder angezeigt wurden und spielte ein bisschen mit der meiner Tag-Cloud meiner Last.fm-Titel herum. Heraus kam der schöne Header und fertig war das neue Design. Kriszta war neidisch und wollte auch gleich, dass ich was für unseren Reiseblog finde. Aber das ist eine Aufgabe, die noch vor mir liegt. Momentan bin ich damit beschäftigt, immer mal hier und da einen Artikel anzupassen, dass die Bilder nicht mehr 300 x ??? sind, sondern auf 500 Pixel aufgeblasen werden. Kann ewig dauern, drängelt ja aber auch nicht…

Letzten Montag / Dienstag habe ich mir mal die Zeit genommen, meinen Rechner auf Vordermann zu bringen. Schon seit der Umstellung auf Windows 10 zickte mein Mainboard. Die alte Software für die Lüftersteuerung lief nicht mehr. Das neue Programm, was von Gigabyte geliefert wurde, startete zwar artig mit Windows, machte aber nichts, bis man das Fenster aus der Taskleiste aufrief. Nachdem Mitte September Windows 10 wieder aktualisiert wurde, half auch der Aufruf aus der Taskleiste nicht mehr, es blieb laut. Wir erinnern uns: Draußen waren noch angenehme 24°C, aber es reichte, dass der Rechner auf Hochtouren röhrte.

Und jetzt kam die Herausforderung: Ich hatte mir ein neues Mainboard von ASRock gekauft, was eine bessere Aufteilung der Steckplätze versprach und mir damit ermöglichte, endlich mal eine PCI-Express-Soundkarte einzubauen. Außerdem gab es laut Hersteller vollständige Windows-10-Unterstützung, nicht wie beim einem alten Board, wo mit Windows 8 (nicht mal 8.1!) Schluss war. Ich fragte bei einem Kollegen auf Arbeit nach – Mainboard wechseln, ohne komplett alles neu zu installieren? Seine Meinung – Windows 10, klar kein Problem!.

Also sicherte ich am Montag alle meine Daten – nur zur Vorsicht. Dann folgte der Ausbau – raus mit dem alten Board, neues Board rein, alle Pins wieder belegen, Prozessor & Lüfter aufbauen, Karten stecken und dann das erste Einschalten…

Stille! Ach so, ich hatte vergessen, den Schalter am Netzteil anzuschalten. Der Rechner röhrte los, das BIOS meldete sich. Ich stellte schnell alles ein, jetzt wurde es richtig spannend. Es meldete sich schon mal das Windows-10-Logo und kurz darauf sah ich das, was ich jeden Tag sehe: den Anmeldebildschirm. Das sah prima aus. Ich hatte schon alle Treiber für das neue Board und die Soundkarte heruntergeladen und installierte sie jetzt der Reihe nach. Danach ging ich in den Gerätemanager und ließ mir alle Geräte anzeigen, die jetzt nicht mehr aktiv waren und entfernte sie (so wird man die Treiberleichen los). Das Ergebnis: Ein superstiller Rechner mit neuem Mainboard ohne Neuinstallation. So geht Betriebssystem heute!

Heute gibt es mal wieder was zu sehen. Nachdem ich das letzte Mal den Grundstein für meine Backup-Software gelegt habe, ging es jetzt darum, Stück für Stück die Software zu erweitern. Schritt 2 sieht vor, dass ich überprüfen möchte, ob meine Sicherung erfolgreich war. Wie macht man das am besten? Einfach vergleichen, ob die Dateigröße übereinstimmt? Nein, dass ist zu simpel – ich möchte wirklich sicher sein. Meine erste Idee war, dass ich beide Dateien (aus Quelle und Ziel) wirklich Byte für Byte miteinander vergleiche. Aber eine kleine Internetrecherche brachte mich auf eine andere Idee: Aus dem Inhalt beider Dateien einen MD5-Hash berechnen und den miteinander vergleichen. Die Chance, dass hier das Gleiche entsteht, ist zwar vorhanden, aber mit dem Risiko kann ich leben. Außerdem habe ich dann die Möglichkeit wenn ich später noch das inkrementelle Backup einbaue, dass ich an jedes Paket eine Datei mit den MD5-Hashes anhänge und mir den Vorteil erkaufe, nicht nur nachsehen zu müssen, ob an der Datei geändert wurde, sondern auch inhaltliche Änderungen registriere.

Und dann war mal wieder die Oberfläche dran. Ich musste wieder einige Klassen in meine gemeinsam genutzte Bibliothek verschieben, Namespaces korrigieren und dann konnte ich mich darum kümmern, dass ich das Quellverzeichnis auswählen kann. Und nun das Ergebnis von Schritt 3: Ich kann das Quellverzeichnis auswählen:

Im Zusammenhang mit dem MD5-Hash ist mir natürlich aufgefallen, dass ich da etwas mit dem Feuer spiele. Denn wenn ich große Dateien (z.B. 1GB) miteinander vergleiche, dann steigt mir das Programm mit einem Fehler aus: Out of memory. Bei 16GB Hauptspeicher etwas merkwürdig, aber um solche Fehler will ich mich erst kümmern, wenn das Backup bei mir in Echtbetrieb geht.