Legacy Code — Exe schläft nach Kaltstart

Endlich kam eine interessante Aufgabe. Eine Aufgabe, die typisch für Legacy Code war. Die schon in die Jahre gekommene Anwendung zeigte mit jeder neuen Version einen schlechteren Kaltstart. Wenn sie zum ersten Mal gestartet wurde, fror sie für einige Zeit ein. Diese Zeit wurde von Version zu Version immer länger. In der aktuellen Version konnten es mehrere Minuten sein.

Zwar hatten sich die Anwender schon an einen Verzug gewöhnt. Nun sollte wenigstens ein Grund für diesen Verzug gefunden werden. Eine Behebung sollte anschließend geplant werden.

Wie freute ich mich auf diese Aufgabe!

„Legacy Code — Exe schläft nach Kaltstart“ weiterlesen

boolVariable = !! BoolVariable, was will der C++ Source mitteilen?

Ich staunte nicht schlecht, als ich die zwei ! Zeichen sah.  Was sollte das?

War das ein Versehen? Hat da jemand den not-Operators überladen?

Es waren immer Stellen wie diese:

bIsOpen = !!mPtr->openFile(….) ;

Nachdem ich das zum ersten Mal gesehen hatte, entdeckte ich die doppelte Verneinung an immer mehr Stellen, in dem C++-Source, den zu warten ich für dieses Jahr übernommen hatte.

Um 20005 herum war es einmal eine Art Richtlinie. Was für einen Sinn das wohl gehabt hatte?

Ich forschte nach und bekam Antworten und Ergebnisse, die mich dann doch überraschten.

„boolVariable = !! BoolVariable, was will der C++ Source mitteilen?“ weiterlesen

Religion und Informatik – zwei Überraschungen

“Also Religion, da soll nur jemand kommen”, meinte mein neuer Kollege. Es ging beim Mittag um Themen, die im Job nicht angesprochen werden sollten. Das waren eben Religion und Politik.

Ich erkannte sofort ein Exemplar des atheistischen Logikers. Logik und Glauben schliessen sich bei dieser Spezies aus.

Schade, dabei kenne ich zwei religiöse Vorstellungen und Erzählungen, die nur aus informatischer Weltsicht richtig verständlich sind.

Schade, dass das Gespräch darüber eher schwierig ist. Zumal in einem Plenum immer auch das Gesicht verteidigt werden muss. Dann muss ich das wohl beschreiben.
„Religion und Informatik – zwei Überraschungen“ weiterlesen

Drei Userstories zum Thema Webapp und WordPress 5.x

Zufällig las ich in MeWe diesen Beitrag zu react Komponenten und Gutenberg:

Sharing React Components With Gutenberg

Der Schreiber verheiratet modernste Webtechnologie mit dem guten, alten WordPress. Für mich war das ein Grund einmal nachzuforschen, wie es mit meinem Lieblingsthema, den progressiven web Apps, und der Beziehung zu WordPress, meiner neuen Blogging Plattform, steht. Ich hatte dort schon push notifications eingebaut. Andere Entwickler beschäftigen sich selbstverständlich auch mit solchen Ideen.

Nach einer Mitteilung in WordPress core Forum ist revolutionäres geplant. WordPress Blogs sollen zu richtigen web Apps werden können. Damit unterschiedliche Plugins und Themes sich ihr service worker Javascript nicht überschreiben, entwickeln sie einen Standard. Das soll dann ähnlich wie bei den Widgets mit einem Registriermechanismus funktionieren.

Diese Entwicklungen werden von Google angetrieben.  Weil mit diesen Techniken die Webseiten schneller laden, bekommen diese eine höhere Sichtbarkeit. Das ist immer gut!

Was bringt das einem Blogger noch?

Ich habe mir drei Userstories überlegt:

  1. Freizeitblogger und seine Leser
  2. Produktblogger, die bloggen um zu verkaufen
  3. Patientenblogger, die nur für ihre Ärzte bloggen

„Drei Userstories zum Thema Webapp und WordPress 5.x“ weiterlesen

Freiberuflich auf Zuruf

“Das hat geklappt!”, sagte er. Dann fügte er noch ein “auf Anhieb” hinzu.

“Bin auch überrascht”, fügte ich hinzu. Meine Finger hatten noch darauf mit den regulären Ausdrücken. Es galt eine Kontrollausgabe umzuformatieren. Das erste Tab sollte zu einem Bindestrich und das zweite Tab zu einem Semikolon werden. Dann kann die Datei von der Datenbank wieder eingelesen werden.

Als mein Einarbeiter das sah, fluchte er.

“Mit regulären Ausdrücken geht das doch”, bemerkte ich und übernahm.

Damit kam ich letzte Woche im Team an. Zunächst ging es um die Werkzeuge und um Dokumentation lesen. Danach sollte mir gezeigt werden, wie das mit den Datenbanken und dem Abgleichen funktionierte.

Wie kam ich hier eigentlich hin? So richtige, freiberufliche Projektarbeit war das doch nicht.

„Freiberuflich auf Zuruf“ weiterlesen

WordPress plugin boilerplate – Alles klar?

Ein Plugin für WordPress hatte ich schon programmiert. Dieses passte nicht so richtig in das Repository von wordpress.org hinein. Ich las die Anleitungen und versuchte gar nicht mein poor man push Plugin hineinzustellen. Plugins werden vor einer Freigabe zunächst geprüft, ob alle Vorgaben erfüllt sind.

Am besten sollten Plugins nach der Boilerplate programmiert sein!

Diese Boilerplate stellte sich als eine Sammlung von php und html Dateien mit Struktur heraus. Der Programmierer brauchte nur den Namen plugin_name durch mein_wundervolles_ding zu ersetzen und schon war die Software auf Kurs die richtige Form zu haben.

Anschließend galt es, die Rümpfe von php Klassen und Javascript Dateien mit Funktionalität anzureichern.

Das wollte ich mit einem neuen Plugin für Blog Promotionen machen. Jeder Blogger sollte sein Geschreibsel promoten:

  • Den Blog in Blog Verzeichnisse eintragen
  • Die Artikel in sozialen Medien posten
  • Kontrollieren, ob das alles irgendwie Sinn ergibt

Das sollte für etwas reichen, das mir mit meinen Blogs hilft.

Wie erging es mir mit dem Boilerplate Plugin?

„WordPress plugin boilerplate – Alles klar?“ weiterlesen

Node.Js – prototyping für Progressive Web Apps

Er sagte, er hätte tausende Kunden, die bereit wären pro Monat 10,- € für die Nutzung einer kleinen App zu bezahlen. Seine Kunden könnten auch mit dem Smartphone ihre Fotos machen. Wenn es noch ein wenig Komfort dabei gäbe, würden die bestimmt zahlen. Für mich wären pro Kunden ein bis zwei Euro pro Monat drin. Wäre das nichts für mich?

Da war er wieder, der Mann mit der Idee und den Kunden. Meine Erfahrung sagte mir, dass das wohl nichts wird. Aber ich könnte etwas lernen. Wieder etwas in Java für Android und dann für IOS implementieren, kam für mich gar nicht infrage. Das hatte ich 2011 gemacht. Wir schreiben das Jahr 2018. Da gibt es bessere Möglichkeiten.

Eine progressive Web App verhält sich wie eine native App. Wenn das rund läuft, kann ich mit react native das auch native machen, wenn es denn sein sollte. Node.Js interessierte mich sowieso schon. 

Ich war bereit für ein neues Abenteuer.

Wie immer war der Anfang furios. Schnell hatte ich node und npm installiert und auch schon die webcam Komponente heruntergeladen. Am Nachmittag liefe eine erste App, die meine USB Kamera für den mini Mac ansteuerte.

Nun fehlten nur noch die Einstellungen für den Zoom und das Licht. War das wirklich so einfach?

„Node.Js – prototyping für Progressive Web Apps“ weiterlesen

Agile Softwareentwicklung für Startups – Scheitern ist alles

Startups scheitern im Normalfall. Die Idee, die eben noch reiche Ernte versprach, funktioniert aus irgendwelchen Gründen nicht. Mein allererstes Projekt scheiterte bei der Hannovermesse 1984, weil IBM die Schnittstelle zur mittleren Datentechnik (lu 2.16) erst ab 1985 ausliefern wollte. Die Arbeit wurde dann vom Bundesministerium für Forschung und Technologie weiter gefördert.

Ein Startup ohne große Eltern kann auf solch einen Ausweg nicht bauen. Deswegen sollte man die Ursachen des nahezu unausweichlichen Scheiterns so früh wie möglich finden. Ich sage hier wirklich Scheitern, weil es weh tun muss, damit etwas gelernt wird. Damit es weh tut, müssen alle Beteiligten zunächst an den Erfolg bei der Entwicklung des nächsten Iterationsschritts glauben und, soweit als möglich, investieren.

Leider schreib sich das Besser als es mit Gründern und ihren Ideen läuft. Diese träumen lieber und stellen sich vor, ihr Vorhaben wäre fertig. Je exakter die Vorstellung ist, umso schwieriger wird das Scheitern. Deswegen werden dann zunächst risikolose Aktivitäten durchgeführt, damit ja nicht gescheitert wird.

Mittlerweile habe ich drei Anfragen von Startups in diesem Jahr bekommen. Die erste scheiterte nach drei Monaten. „Agile Softwareentwicklung für Startups – Scheitern ist alles“ weiterlesen

Node.js – im Notfall

“Also wenn es ein Notfall ist, kann ich auch Node.js”, sagte ich zu Sascha, einem Recruiter am anderen Ende des Telefons. Auf die Gegenfrage, was ich denn gemacht hätte, antwortete ich, dass ich das installiert habe und bestimmt schaffen würde.

Wir beide lachten.

Er meinte dann, dass Node.js schon im Lebenslauf stehen sollte. Ansonsten glaubte dieser Kunde nicht, dass man das kann. Er selber würde mir das zutrauen, aber die Kunden nicht so direkt. Wenn ich da etwas vorzeigen könnte, dann wäre das etwas anderes.

Für mich war das ein Grund den Besonderheiten von Node.js auf den Grund zu gehen:

  • Was ist Node.js
    Ich kannte es um react.js zu webpacken und zu transpilieren. Damit wollte ich React.js Apps zusammenbauen.
  • Was ist die Hürde für Softwerker mit C++/Pascal Background?
    Da muss etwas sein, das den Auftraggeber zögern lässt.
  • npm – Das Node.js Ökosystem
    Hier mal schauen, was für Bausteine herumliegen.

„Node.js – im Notfall“ weiterlesen

Poor Man Push – WordPress Plugin

Mein Poor Man Push konnte mit Kenntnissen in javascript und html ganz nett in eine einfache Homepage eingebaut werden, aber für eine Einbettung in WordPress war das zu kompliziert. Blogger, die in erster Linie bloggen wollen, brauchen hierfür ein Plugin.

Wer einen WordPress Blog betreibt, kann auch Plugins installieren. Diese Plugins realisieren Funktionen, wie z.B. Bilderleisten, Suchen in Blogartikel oder auch den Verkauf von Produkten und so weiter. Unter https://de.wordpress.org/plugins/ kann er aus mehr als 50.000 Plugins auswählen, welches er hinzufügt. Auf der Verwaltungsseite des Blogs, im “Dashboard”, aktiviert und konfiguriert er das Plugin. Zu der Beitragsvorlage fügt er die Widgets, das sind die Teile, die der Leser des Blogs sieht, an die gewünschten Positionen.

So wollte ich das auch mit dem Poor Man Push machen.

Das klang nach richtiger Arbeit. Um das nebenher zu erledigen, brauchte ich Erfolgserlebnisse. Bei Erreichen eines Zwischenschritts, konnte ich feiern und die Arbeit ruhen lassen, da ich nicht immer Zeit hatte.

Der Plan hatte zunächst drei Punkte:

  1. Widget für den Button An- und Abmelden
    Das klang einfach. Ich würde hier Javascript in WordPress einbauen lernen.
  2. Tabelle in der WordPress Datenbank, Funktionen zum Eintragen und Listen im Admin Panel.
    Der Datenbank Viewer sollte mir die richtigen Ergebnisse anzeigen. Ich könnte einfach die Datenbank zu den WordPresstabellen stellen und gut wäre.
  3. Verschicken der Pushnachrichten aus dem Admin Panel
    Hier wollte ich ein Kommandodatei online erzeugen, die auf dem Mac oder einem anderen Gerät mit Kommandozeile heruntergeladen und dort ausgeführt wird.

 

Ich fing mit einem einfachen Tutorial für Widgets und für Plugins an. Der erste Erfolg kam zu schnell, so daß ich vom Weg abkam.  „Poor Man Push – WordPress Plugin“ weiterlesen