Sonntag, 7. Mai 2023

ChatGPT ist keine kuenstliche Intelligenz (KI)

ChatGPT ist keine kuenstliche Intelligenz sondern eine praechtiges Beispiel fuer maschine learning und Computer Linguistik. Jedem Informatiker ist das klar.

 

Um das zu illustrieren, hier ein lustiger Chat mit ChatGPT. Der Chat ist nicht von mir, er wurde mir aus vertrauenswuerdiger Quelle zugeschickt und hat sich Anfang Mai 2023 ereignet. 


Und weiter gehts.


Und zu guter letzt.


Wer jetzt ChatGPT fuer intelligent haelt, tja dann weiss ich auch nicht mehr.

Donnerstag, 2. Februar 2023

Managing Dependencies for Micro Services

Dependency Hell, das kennen viele Softwareentwickler oft aus mature Projekten. Was bedeutet das fuers Projekt?

  1. Es kann nicht auf aktuelle Versionen von Libs migriert werden, Java eingeschlossen. Dadurch bleiben nuetzliche Funktionen verschlossen.
  2. Das Projekt ist statisch wie Beton und nur unter sehr grossem Zeitauswand aenderbar.
  3. CVEs koennen nicht behoben werden.

Um Dependencies effiktiv zum meisten und obige Schwaechen zu umschiffen, hier ein paar Best Pracices im Umgang mit Dependencies.

  1. Goldene Regeln
    1. Less is more
    2. Convention over configuration
  2. Versuche mit moeglichst wenig Konfigurationen auszukommen.
  3. Versiuche moeglichst wenig Dependencies zu benutzen.
  4. Benutze Parents wenn moeglich.
  5.  Benutze Dependeny Management (Maven) wenn es moeglich ist.
  6. Benutze nur fixe Versionen von Libs wenn sie nicht im Parent verfuegbar sind.
  7. Wenn du Excludes/Includes brauchst z.B. um CVEs zu fixen, dann hinterlasse einen entsprechenden Kommentar mit der CVE Nummer. So kann diese Konfiguration spaeter sehr einfach entfernt werden.
  8. Update regelmaessig deine Dependencies um keinen Wartungsstau aufkommen zu lassen. Du kannst leicht einen Check Step in der Build Pipeline einbauen die dir Anzahl der outdated Libs ausgibt.
  9. Aktuelle Libs verbessern die Sicherheit, aktuelle Libs haben weniger CVEs. 
  10. Pruefe ob Dependencies noch benutzt werden
    1. Grep isy dein Freunf fuer Compile Scope Dependencies: grep -r com.strange-package src/
    2. Organize your imports
  11. Das Build file ist genauso ein Teil deines Softwareprojetes wie der Code selbst.

 

Dienstag, 3. Januar 2023

Model Driven Architecture ist tot

 Model Driven Architecture (MDA) und alle Verwandte sind seit den fruehen 2000er tot. Trotz viel Energie, Enthusiasmus, Zeit und Geld die in MDA Projekte geflossen sind, gibt es zwei Erkenntnisse: MDA ist sicher tot und UML ist sinnvoll zur Beschreibung von Software-Konzepten.

Weil es scheinbar zu wenige Senior Software Developer gibt, gibt es Heute MDA Zombies. MDA ist von den Toten auferstanden in Form der Generierung von Klasssen aus YAML Schnittstellenbeschreibungen die dann z.B. über Micro Services geteilt werden.

Bei genauerem Hinsehen sieht man, dass dieser Ansatz auch nicht funktioniert. Er hat folgende Nachteile:

  1. Aenderungen an der Schnittstelle fuehren zu aufwendigen Abstimmungsprozessen die multiple Teams, oft das ganze Projekt, einbeziehen. Das ist sehr, sehr teuer.
  2. Kein Team ist in der Verantwortung, shared  whatever sind gut Beispiele fuer Verantwortungsdiffusion.
  3. Selbst wenn ein Team Zeit fuer die Wartung aufwenden moechte, so werden die Kommunikationskosten zur Aufgabe fuehren.
  4. Weil sich die Softwareanforderungen aendern die Schnittstelle aber in Beton gegossen ist, fangen die Entwicklerteams an der 'offizielle' Schnittstelle vorbei zu arbeiten. Sie haben gar keinen anderen Weg.

Was lernen wir daraus:

  1. MDA in allen Varianten ist teuer und ineffizient.
  2. MDA ist das Gegenteil von agiler Softwareentwicklung .
  3. Share Nothing ist und bleibt eine Grundlage fuer agile Softwareentwicklung
  4. Die Entwicklung von (shared) Bibliotheken ist deutlich anders zur Entwicklung normaler Micro Services.

Donnerstag, 15. Dezember 2022

Golf: Clubmeister im Team 2022

Dieses Jahr haben wir die Dominaz der guten Teams gebrochen. Und wir, die Aussemseiter haben es geschaft, mit weitem Abstand.


Clubmeister mit dem Team 2022



https://golfclub-fischland.de/


Donnerstag, 22. September 2022

Versenden von E-Mails via CURL

 

Ich war erstaunt wie universell CURL doch ist. Hier ein Beispiel zum Versenden von Emails.

from="service.accout.1@xyz.com" 

mail_template_text="Hello!\n"

 
file=$(echo -e "From: $from\nTo: mirko@xyz.com\nSubject: Dringend\n\n $mail_template_text\n")


curl    --url       "smtp://mail.xyz.com:587" \
--mail-from "$from" \
--mail-rcpt "mirko@xyz.com" \
--mail-rcpt "mirko.ebert@xyz.com" \
--mail-rcpt "other.guy@xyz.com" \ 
--user      "$from:smtpPassword" \
-sS \
-T -  <<<"$file"


Zuerst wird ein String für die Email zusammengebaut. Dann wird dieser String per CURL an mehrere Empfänger verschickt.

Mittwoch, 27. Juli 2022

Der Big Mac Index für die Company IT.

Ich denke Einigen ist der Big Mac Index als Indikator für die Kaufkraft in verschiedenen Ländern. ein Begriff. Sicher dieser Wert ist nicht perfkt aber er ist sehr einfach zu ermitteln und ist sehr aussagekräftig. 

Einen ähnlichen Indikator oder Index habe ich für die Effiziens der Firmen IT gefunden - Wenn ich als externer Mitarbeiter bei einer neuen Firma anfange, wie lange dauert es in Tagen, bis ich voll einsatzbereit bin, d.h. bis mein Computer voll funktioniert und alle Zugänge funktionieren so dass ich den ersten Code commiten könnte.

  • Der bisher beste Wert liegt bei 0,5 Tagen. 
  • Der Durchschnitt liegt bei 2-3 Tagen.
  • Der whorts case liegt bei 7,5 Tagen (Arbeitstagen).

 Was sind eure Erfahrungen? Hinterlasst bitte einen Kommentar.


Noch einb Anmerkung, der beste Wert, dort wurde das Onboarding durch das Entwicklerteam komplett organisiert. Der Worst Case Fall, dort gab es eine sehr stark zentralisierte IT. Zentralisierte IT ist ineffizient im Vergleich zu selbst organisierten Teams.

Dienstag, 15. März 2022

Pi Day

 Es ist wieder Pi Day, der 14.3. oder im amerikanischen auch 3-14. Lasst es euch schmecken!