Was macht am meisten Spaß beim einrichten einer Webseite? Genau. Die „Über mich Seite schreiben“. Also dann mal los.
Erst mal ein paar technische Daten:
Name: Michael Jentsch
Geboren: 11.03.1973 in Gelsenkirchen (Bin trotzdem nicht der größte Fußballfan)
Größe: 180 cm (mehr oder weniger)
Schuhgröße: 43 (Manche technischen Daten sind einfach überflüssig)
usw.
So, jetzt habe ich mich hoffentlich etwas warm geschrieben und die spannenden Teile können folgen. Schließlich bilde ich mir ja ein, ein begabter Software-Entwickler zu sein.
Was macht mich also zu einem Software-Entwickler:
Erfahrung
Meine ersten Erfahrungen mit Computern habe ich im Jahr 1984 mit dem Commodore VC 20 und später mit dem Schneider CPC 464 gemacht. Am Anfang habe ich mich aber darauf beschränkt, endlose sinnlose Zeichenketten aus Computerzeitschriften abzutippen – das war ein Spaß …
Wenn man Glück hatte gab es auch ein Wenig Basic Code. Da konnte man dann schon ein paar Anpassungen machen und ich habe so langsam verstanden, wie Computer funktionieren.
Für meinen Schneider CPC 464 habe ich mir dann später Power-Basic gekauft. Damit hatte ich 47 neue Befehle zur Verfügung, die spezielle für die Programmierung von Spielen und Grafik interessiert waren. Mit Power-Basic konnte ich 27 Farben des auf einmal darstellen, mehrere Modi auf den Bildschirm bringen und noch vieles mehr – das waren noch Zeiten ….
Nachdem mein Interesse an Computern irgendwann ein wenig ins Stocken geraten ist, habe ich dann 1995 angefangen Informatik an der FH Dortmund zu studieren und habe mir meinen ersten IBM PC zugelegt. Ein 486-DX (Mathematischer Coprozessor) mit 4MB RAM und einer 170 MB Festplatte. Zum Programmieren habe ich mir Turbo-Pascal 6 zugelegt und dachte, dass ich damit gut gerüstet bin. Ich habe auch ein paar sehr coole Programme und Bibliotheken für Turbo-Pascal programmiert.
- Objektorientierte Sprite Bibliothek zur einfachen Realisierung von 2D Spielen.
Habe ich selber gerne Genutzt für die kleinen Spiel, die ich von Zeit zu Zeit programmiert habe - Ein CD-Player für das CD-ROM Laufwerk, der unter DOS als TSR Programm funktioniert hat und mit einer bestimmten Tastenkombination aufgerufen werden konnte ohne das laufende Programm zu unterbrechen. (Das war damals revolutionär … bis Windows kam und jedes Programm das konnte … )
Während des Studiums habe ich aber nur in meiner Freizeit in Turbo-Pascal programmiert. Im Studium habe ich C/C++ & Assembler gelernt und später dann auch Java (JDK 1.0.2)
Nebenbei habe ich bei Quantum in Dortmund gearbeitet und war Dort so eine Art „Mädchen für alles“ (Hotline, Kundenspezifische Anpassungen, Installation, etc. ) für ein altes C-Programm bis ich dort fest angefangen habe. Danach habe ich weiter an C/C++ Projekten und Java Projekten gearbeitet.
Privat habe ich mehr und mehr zur objektorientierten Java Programmierung gefunden und eigentlich fast nur noch Java programmiert.
Den Java Kurs habe ich mir aus dem archive.org noch mal nach https://www.jentsch.io/java-kurs-von-1997/ kopiert. Das war damals eine ganz andere (Internet)-Welt.
Neben der Programmiersprache Java habe ich auch noch Perl und später auch PHP gelernt. Gerade für die Erstellung von CGI-Programmen waren die einfach besser geeignet als Java da das Apache-Java Interface einfach noch nicht so weit war.
Das Common Gateway Interface (CGI) ist ein Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die Anfragen bearbeitet. CGI ist eine Variante, Webseiten dynamisch bzw. interaktiv zu machen, deren erste Überlegungen auf das Jahr 1993 zurückgehen.
https://de.wikipedia.org/wiki/Common_Gateway_Interface
Meine Diplomarbeit habe ich dann 2000 in objektorientiertem Perl realisiert. Den Code habe ich leider nicht mehr und auch die Diplomarbeit habe ich jetzt so auf die Schnelle leider nicht gefunden. Naja, es gibt noch so viel anderes Zeug zu erzählen ….
Android
Mit der Einführung von Android hat Google einen Entwicklerbewerb mit dem Namen Android Developer Challenge (ADC) veranstaltet an dem ich natürlich auch teilnehmen musste. Gewonnen habe ich leider nichts, was vermutlich daran gelegen hat, dass meine App nicht so ganz fertig geworden ist. :'(
Danach habe ich erst mal eine ganze Zeit nichts mehr mit Android gemacht. Bis ich im Jahr 2010 den SEO-Wettbewerb zum Keyword „iPhone4Spiel“gewonnen habe. Als Sieger habe ich ein nagelneues iPhone 3GS bekommen.
Leider nicht das optimale Handy für einen Android Entwickler und daher habe ich es nach einiger Zeit gegen ein GT-i9020 mit Android 2.3.6 „Gingerbread“ getauscht. Seit dem habe ich auch immer einen Computer in der Nähe auf dem ein Android Studio installiert ist und ich mich mit der Entwicklung von Android Apps beschäftigen kann.
Auch wenn Android Entwicklung für mich momentan hauptsächlich eine Freizeitbeschäftigung ist und ich hauptberuflich bisher nur sehr wenige App realisieren durfte habe ich doch schon eine ganze Menge Apps im Google Play Store veröffentlicht.
Zugegeben, einige davon sind nur simple Wrapper Apps mit einem WebView um irgendeine Webseite darin anzuzeigen, aber daneben habe ich auch ein paar Apps realisiert, auf die ich stolz bin, auch wenn sie heute nicht mehr ganz state of the art sind)
- Floating Timer – clock, timer and stopwatch (Beta)
Der Floating-Timer ist eine App mit der man beliebig viele Uhren, Timer und Stoppuhren als Floating-Windows auf dem Android Smartphone dargestellt werden. - Schwebende Stoppuhr
Eine Stoppuhr, die immer im sichtbar bleibt, egal welche App man gerade nutzt.
Sozusagen eine Multi-Window App, die auch mit Android 4 schon funktioniert. - Smart Squares
Smart Squares ist eine Spiel, bei dem es um räumliches Vorstellungsvermögen, Intelligenz, Entscheidungsfindung und Problemlösungsfähigkeiten geht. Die Spielidee geht auf ein Spiel zurück, mit dem ich während meines Informatik Studiums (gelegentlich) die Zeit totgeschlagen habe. Damals haben wir es allerdings auf kariertem Papier gespielt und es war wesentlich komplexer, da man die Quadrate noch selber suchen musste was ab einem gewissen Punkt fast unmöglich wurde.
Das Ziel des Spiels ist es, Quadrate (keine Rechtecke) zwischen den eigenen Spielsteinen auf dem Brett zu bilden. Gewinner ist der Spieler mit den meisten Quadraten.
Auf Wunsch einiger Spieler habe ich einen Einzelspieler-Modus mit einer fast unschlagbaren KI hinzugefügt und noch einen Missionen-Modus ergänzt. Die 100 handverlesenen Missionen kommen zum großen Teil von mir und meinem Sohn, der das Spiel auch sehr gerne spielt. - Switch Off and Lock screen
Eine kleine App die nur aus einem App Icon besteht und nichts anderes kann als den Bildschirm zu sperren.
Die Idee zu der App kam mir, als ich mich über mein LG G3 geärgert habe, dass den Ein/Aus Schalter auf der Rückseite hat. Eigentlich eine gute Idee, außer das Handy ist gerade in der Auto-Halterung. Dann hat man keine Chance das Handy auszuschalten (Einschalten geht über das Display). Also was tun? Ausschalten könnte ja idealerweise auch über das Display funktionieren. - Webpage to PDF converter
Konvertiert Webseiten in PDF Dokumente. Kann man zwar auch ohne die App, aber ich habe die Frage „Wie kann ich die Webseite offline als PDF speichern?“ einfach satt gehabt und eine App dafür gebaut. Die App selbst nutzt den vorhandenen PDF Drucker und der einzige Mehrwert ist die kleine Katze, die dem Nutzer erklärt, wie die App funktioniert. Onboarding ist halt das A und O. - WYSIWYG HTML Editor
Leider etwas in die Jahre gekommen ist mein WYSIWYG HTML Editor. Ich habe ihn selbst seit einer Ewigkeit nicht mehr verwendet und laut Google Play ist die App von 2014 und das letzte Update von 2016.
WYSIWYG ist das Akronym für den Grundgedanken „What You See Is What You Get“. D.H. das HTML Dokument wird während der Bearbeitung also genauso angezeigt, wie es im Browser aussieht. - Ufos
Ufos ist ein einfacher Asteroids Clone bei dem die Steuerung über ein Bluetooth Game Pad erfolgt. Dies war ein Test bei dem es darum ging, herauszufinden, ob die Gamepads die man Teilweise bei Aliexpress für unter 4$ kaufen kann, wirklich funktionieren.
Tatsache ist, dass die Gamepads sich ganz gut geschlagen haben, auch wenn die App auf einigen aktuellen Geräten leider nicht mehr funktioniert.
Wichtig: Die App kann nur mit einem Bluetooth Gamepad oder einer Bluetooth Tastatur gespielt werden.
- Quad
Bei Quad handelt es sich um den Vorgänger von Smart Squares. Vorteil von Quad ist, dass man es mit 4 Spielern auf einem Spielfeld spielen kann. Dafür fehlen die Missionen. Die KI ist auch noch nicht so smart wir die KI von Smart Squares und die Grafik würde ich heute auch nicht mehr so machen. - BlueTerm +
BlueTerm ist eine VT-100 Terminalemulator zur Kommunikation mit jedem seriellen Gerät unter Verwendung eines seriellen Bluetooth-Adapters. Das RFCOMM/SPP-Protokoll emuliert die serielle Kommunikation über Bluetooth. BlueTerm ist eine Open-Source-Anwendung, die ich für einige meiner Hardware-Projekte verwendet habe. Da ich aber oft und viel tippen musste, habe ich eine Copy/Paste Funktion ergänzt und die App unter dem Namen BlueTerm+ noch einmal im Google Play Store veröffentlicht. Wie sich herausgestellt hat, haben viele Anwender das gleiche Problem gehabt und waren sehr glücklich über die Erweiterung. - etc.
Darüber hinaus gibt es noch eine ganze Reihe anderer Apps im Play Store, die ich eigentlich alle aus dem Wunsch heraus programmiert habe eine solche App zu nutzen.
Typischerweise suche ich dann eine gewisse Zeit etwas passendes im Google Play Store und bei F-Droid. Werde ich nicht fündig, programmiere ich es mir selbst.
Typische Apps, die unter diese Kategorie fallen sind: Leider fehlt mir die Zeit all diese Apps auch immer zu aktualisieren und die vielen Feature Requests der Nutzer umzusetzen, daher sind einige dieser Apps nicht mehr ganz auf dem neusten Stand der Technik ….. sorry.
Mobiles Umfeld
Neben Android gibt es auch noch andere mobile Betriebssysteme, mit denen ich mich schon beschäftigt habe und ich spreche hier nicht von iOS, denn hier ist meine Erfahrung relativ dürftig. Ich habe mir zwar für 2019 vorgenommen Flutter zu lernen, aber damit stehe ich momentan noch am Anfang.
Mehr Erfahrung habe ich eher mit SymbianOS, PalmOS und mit J2ME – allerdings ist das schon einige Jahre her und mir ist kein Unternehmen bekannt, dass heute noch ernsthaft PalmOS oder SymbianOS einsetzt. Die Java2 Micro Edition (J2ME) hingegen ist hier und da noch im Einsatz. Meine letzten Berührungen mit J2ME waren im Jahr 2003/2004 unter anderem:
https://jaxenter.de/mobiler-promille-rechner-9608
https://jaxenter.de/over-the-air-9665
Hardware Projekte (IoT)
Neben den reinen Software Themen mit denen ich mich beschäftige, habe ich auch permanent ein paar Hardware Projekte die aber in den wenigsten Fällen direkt mit Android Entwicklung zu tun haben. Ich bevorzuge hier den Einsatz eines Chatbots (Hello Chatbot – PHP Magazin 6.16).
So ein Chatbot ist reativ schnell eingerichtet und man benötigt keine extra App für jede Kleinigkeit.
Wenn es darum geht, externe Hardware per USB an ein Android Handy anzuschließen bevorzuge ich den „FT311D/FT312D Android USB to serial Port“ Adapter. Damit lässt sich fast jede externe Hardware ganz einfach ansprechen und ein die Dokumentation ist sehr detailiert – genau wie ich es mag :-).
Bei wireless connections setze ich meistens auf WLAN oder Bluetooth (Auch BLE). Hier kann man z.B. mit einem ESP32 sehr viel Spaß haben. Der Mikrocontroller hat genug Power für die meisten kleinen IoT Projekte unb bringt direkt einen WLAN und einen BLE fähigen Bluetooth Stack mit.
PS: Wer jetzt denkt, WLAN oder Bluetooth nur meistens? Was gibt es denn für alternativen? ….. Doch da gibt es mehr. Z.B. 2.4 GHz Transceiver die ohne den WLAN/Bluetooth Stack auskommen oder das extrem faszinierende LoraWAN bei dem die Datenübertragung auf extreme Distanzen (Aktuell ist der Weltrekord eine Distanz von 766 km ) bei geringem Energieverbrauch (25 mW) optimiert ist.
Bei größeren Hardware Projekten macht es dann eher sinn, einen Raspberry PI zu nutzen. Dabei handelt es sich um einen Einplatinencomputer auf dem eine angepasste Linux-Distributionen mit grafischer Benutzeroberfläche läuft. Dieser kann sowohl über USB als auch über WLAN und Bluetooth mit dem Android Smartphone verbunden werden und bietet damit eine gute Lösung komplexe Hardware Projekte umzusetzen.
Hier z.B. ein Projekt über das ich 2019 im Make Magazin berichten durfte.
Deep Learning
Seite 2019 beschäftige ich mich auch mit den Thema Deep-Learning und habe erste Erfahrungen mit Tensoflow und PyTorch gemacht. TODO