Meine Software-Entwicklung
Bevor ich mich auf diesem Blog ganz in Pensionisten-Jammereien über die böse Welt verliere, sollte ich mich vielleicht noch einmal auf mich selbst besinnen und auf mein Schaffen als Software-Entwickler zurückblicken. Vielleicht könnt ihr ja das eine oder andere gebrauchen, was derzeit von mir am Internet noch vorhanden ist.
Ich habe mich nach mehr als 8 Jahren C-Programmierung 1997 der Sprache Java zugewandt und seither nicht mehr davon gelassen, und die Zeit hat gezeigt, dass diese Entscheidung richtig war. Ich kann C oder C++ Programme einfach nicht mehr ansehen, was für eine Kryptografie. Ich halte Java auch heute noch für das beste verfügbare Softwareentwicklungs-Werkzeug. Objektorientiertes Denken spart einem viel Ärger mit Copy & Paste Programmierung, wenngleich es aufwändig ist. Plattformübergreifende Anwendungen sparen einem viel Ärger mit der Vielfalt und dem Protektionismus von Betriebssystemen wie WINDOWS. Aber ich habe mich auch intensiv mit Dokumentation beschäftigt, und mit Automation über Shell-Scripts (UNIX / LINUX). Ich bin übrigens schon seit 1997 ständiger LINUX-Benutzer.
Entwickler Blog
Mein Entwickler Blog schrieb ich ab 2007 unregelmäßig, von 2014 bis 2024 aber regelmäßig. Dort habe ich neu Gelerntes und selbst Erarbeitetes in Englisch festgehalten, vor allem über Web-Entwicklung. Da sind Themen wie Java, Objektorientierung, JavaScript, ES6, XML, Datenbanken, Dokumentation, Projektmanagement (Scrum) und vieles andere behandelt. Einige Kostproben (Achtung, manche pages funktionieren nicht auf mobile phones):
- Good Documentation
- Notorious Developer Habits
- Three Steps to Success
- Twelve Factor Cloud Apps
- Model-View-Controller Paradigma und Model-View-Presenter Evolution
- HTML Table-of-Contents with JavaScript
- HTML Form Layout CSS
- Filter/Sort HTML Table with ES6
Dieses Google-Blog hat oben links ein Textfeld, in dem man einen Suchbegriff eingeben kann. Versucht mal "ES6" (ECMA-Script Version 6, das neue JavaScript), damit findet ihr einen kompletten learning-by-doing Einführungskurs in das neue JavaScript, wie es alle web-browser mittlerweile schon implementieren.
Ich kann Blog Schreiben sehr empfehlen, man kann nicht einfach alles in seinen Kopf hineinstopfen. Komplexe Zusammenhänge erfordern bleibend festgehaltenes Wissen, das möglichst einfach und kurz dargestellt werden muss. Blog Schreiben klärt das Denken, befreit den Kopf und verbessert die Kommunikationsfähigkeit.
SourceForge Open-Source Projekte
Open-source ist meine Überzeugung. Gemeinsam müssen wir das schaffen, nicht alleine. Auf dem immer noch existierenden SourceForge (das war die allererste open-source site!) habe ich einige alte Projekte:
- PolyTreeTable (2004)
Das ist eine Java/Swing user-interface Komponente, die über einen hierarchischen Baum hinausgeht, indem sie die Darstellung von Graphen ermöglicht, in denen ein Knoten mehrere übergeordnete (parents) und mehrere untergeordnete (children) Knoten haben kann. Jeder Knoten kann in Form mehrerer horizontaler Tabellenspalten dargestellt werden. Mit Doppelklick verändert man den eigenen Standort im Graphen. - RunCC (2005)
Ein compiler-compiler für einfache Programmiersprachen. Anders als alle anderen Parsergeneratoren kann man diesen zur Laufzeit betreiben, d.h. er generiert Java source-code nur wenn ausdrücklich gewünscht. Wenn eine Semantik-Klasse zur Verfügung steht, kann der generierte Compiler sofort ein gelesenes Programm abarbeiten. D.h. man gibt nur eine Grammatik (EBNF) an und eine Semantik, die Generierung des Compilers geschieht zur Laufzeit. Ich habe das einmal erfolgreich verwendet um Suchausdrücke zu interpretieren, die logische Operatoren wie AND, OR, NOT und Klammerungen enthielten. Das ist zwar nicht so schwierig zu programmieren, aber mit RunCC lässt sich die Grammatik einfach verändern ohne wieder programmieren zu müssen (ausgenommen die Semantik-Klasse). - JPumpDX (2005)
Praktisch alle Projekte, die Datenbanken verwenden, brauchen Grundladedaten, also Datenbankinhalte und -strukturen, die in die DB eingespielt werden müssen, bevor man die Anwendung das erstemal startet. Wie speichert man die, wie spielt man die ein? Mein Konzept speichert sie als XML und spielt sie dann in jede beliebige Datenbank über Java/JDBC ein. Man kann damit auch Datenbanken komplett oder teilweise nach XML exportieren und in andere Datenbank-Instanzen einspielen, wenn die Datenbank korrekt aufgebaut ist (d.h. foreign-key-constraints definiert wurden). - JCustomizer (2006)
Ein Java/Swing user-interface Projekt für Benutzerfreundlichkeit, das es dem Benutzer ermöglicht, seine grafische Anwendung selbst mit Farben, Schriften (Fonts), Rahmen, und sogar eigenen Beschriftungen zu versehen (mehrsprachig, ohne Neustart auf andere Sprache umschaltbar).
GitHub Open-Source Projekte
Ich habe auch einige Projekte auf GitHub:
-
Java File World (begonnen 1999, letzte Wartung 2024)
-
Ihr könnt euch die fertig compilierte und startbare Anwendung vom GitHub herunterladen,
wenn ihr auf der GitHub-page auf die Datei FileBrowser10.jar klickt,
dann auf der sich öffnenden page rechts den "Download raw file" button klickt.
Auf eurem Computer muss ein Java (JRE) installiert sein, damit die Anwendung gestartet werden kann:
java -jar FileBrowser10.jar.
-
Ihr könnt euch die fertig compilierte und startbare Anwendung vom GitHub herunterladen,
wenn ihr auf der GitHub-page auf die Datei FileBrowser10.jar klickt,
dann auf der sich öffnenden page rechts den "Download raw file" button klickt.
Auf eurem Computer muss ein Java (JRE) installiert sein, damit die Anwendung gestartet werden kann:
-
ffmpeg Video Scripts (2022)
ffmpegist open-source Video-Software, die praktisch jeder web-browser verwendet, und die eine breite commandline-Schnittstelle bietet, mithilfe derer man auch Video-Schnitt automatisieren kann.ffmpegist nicht gerade leicht zu verstehen, aber ich konnte meine Videoschnitt-Arbeitszeit damit dramatisch verkürzen (für komplexere Arbeiten verwende ich allerdings OpenShot). Achtung, das sind UNIX Shell-Scripts, auf WINDOWS nur zusammen mit CygWin verwendbar! Etwas umfangreichere Dokumentation (als das git-README) dafür gibt es auf meinem Entwickler-Blog. -
JPA Tree DAO (2013)
- Für GitHub download hier klicken. (Obige Dokumentation ist dort unter doc/JpaTreeDao.html, leider zeigt GitHub davon den HTML-source statt dem Dokument an).
-
Differencetones Piano (2024)
Ein musikalisches und erzieherisches Projekt über das Thema Harmonie und deren Historie, das ich im Herbst 2024 begonnen habe. Ich arbeite noch daran. Das Projekt wird einige auch für Nicht-Musiker erstaunliche Einblicke enthalten.
Shell Scripting
Dazu gibt es Artikel auf meinem Entwickler-Blog:
-
UNIX Shell Kontrollstrukturen
Das ist eine Kurzanleitung zum Schreiben von Shell-Scripts. Script-Beispiele findet ihr in meinem ffmpeg Projekt. -
vi Manual
Das ist eine Kurzanleitung zum Umgang mit dem Terminal-orientierten UNIX Texteditor vi, der auch heute noch die einzige brauchbare Lösung zum Betrachten riesengroßer Textdateien ist (z.B. Datenbank-Exporte). Normale Texteditoren würden nämlich an solchen Dateien zugrundegehen, weil sie den gesamten Datei-Inhalt in den Hauptspeicher zu laden versuchen würden.
Sonstiges
-
Soft Skills Überlebenstraining
Man glaubt es nicht, wie oft und wie sehr man mit anderen Menschen Probleme bekommen kann. Software-Entwickler und -Produzenten sind nicht gerade einfache Arbeitskollegen. Mit meiner (den Vater nachahmenden) Kritikfreudigkeit war ich mehrmals in Zusammenstöße mit eigensinnigen Entwicklern und Managern verwickelt, die mich irgendwann dazu veranlasst haben, meine Umgangsformen für die Zukunft festzulegen. Leider hat es nicht viel geholfen, in der Kindheit eingelerntes Verhalten lässt sich durch solch gute Vorsätze nicht beseitigen. Ich habe da aber keine Schuldgefühle, meine Fehler waren ziemlich gering, gemessen an der Arroganz und Unkenntnis, die mir da entgegengeschlagen ist.
Die hier angeführten Verhaltensregeln lassen sich ganz allgemein auf den Umgang mit Menschen anwenden, auch mit solchen, die nicht unbedingt nur ihren Software-Kopf durchsetzen wollen. Das mal durchzugehen ist immer wieder heilsam.

Comments
Post a Comment