Softwareentwicklung

Kenntnisse in Sprachen und Tools

Meine Laufbahn begann als Hobbyprogrammierer mit Delphi. Über C#, C++, PHP, Ruby und Python gelangte ich zu Common Lisp (mit CLOS) und schrieb damit ein Abschlussprojekt im Informatik-Leistungskurs am Gymnasium. Da mein Hobby später zum Beruf wurde, kamen mit der Zeit im Studium und bei der Arbeit noch weitere Sprachen hinzu: Java, JavaScript (zuletzt ECMAScript 2015), C, Prolog, VHDL, Groovy, Shell Script und Smalltalk (Squeak und VA Smalltalk). Im Jahre 2017 entwickelte ich am liebsten in Squeak/Smalltalk.

Sprachen sind natürlich das eine, aber Bibliotheken, Frameworks und andere Tools sind ebenso wichtig. Im Laufe der Jahre habe ich mindestens mit folgenden Technologien zu tun gehabt: Spring Boot, Maven, Gradle, Eclipse4 RCP, Jenkins CI, Angular, npm (JavaScript), CMake (für C/C++), RPython (für virtuelle Maschinen mit Tracing JIT Compiler, wie PyPy), SDL, Context Oriented Programming, OpenGL, XML3D, Django (Python), Altova MapForce (DB Schema Mapping), IBMs DB2 und, last but not least, Git.

Einige Projekte aus dem Studium

Squot – Squeak Object Tracker

Eine Versionsverwaltung mit Git Backend, die es erlauben soll beliebige Squeak-Objekte zu versionieren. Traditionell beschränken sich die Möglichkeiten zum Austausch zwischen Smalltalk-Images weitestgehend auf den Smalltalk-Quellcode (gilt zum Beispiel für File-Outs, Monticello und ENVY/Developer) oder es bedurfte eigener Anpassungen, um auch andere Artefakte in die Versionsverwaltung aufzunehmen. Dabei ist das direkte Arbeiten mit Objekten, statt nur mit dem darunterliegenden Code, in einer Smalltalk-Umgebung einer der großen Vorteile gegenüber anderen Systemen. Um Nicht-Code-Objekte (z. B. UI-Prototypen) zu versionieren, musste man bisher Workarounds bauen. Zum Beispiel musste man Dateien außerhalb von Squeak über anderen Systeme (wie Git oder Dropbox) teilen oder die Objekte/Dateien irgendwie in Smalltalk-Methoden abbilden/serialisieren (um sie dann als Code zu versionieren).

Ein weiteres Ziel von Squot ist, die Verwendung von Git-Repositories mit Squeak zu erleichtern.

ContextJS

ContextJS ist eine Implementierung von Kontextorientiertem Programmieren (COP) für JavaScript. Im Seminar „Web-based development environments“ haben wir ContextJS aus dem LivelyKernel Projekt herausgelöst, sodass man ContextJS auch ohne Abhängigkeit zu Lively in seinen Projekten verwenden kann. Dabei haben wir den Code auch auf ECMAScript 2015 aktualisiert.

RSqueakVM

Die RSqueakVM ist eine in RPython geschriebene virtuelle Maschine zum Ausführen von Squeak Object Memories (Images). RPython ist ein reduziertes Python, in dem auch die PyPy VM geschrieben ist. Das Toolset kann mit nur wenig Nachhilfe automatisch einen Tracing JIT-Compiler in in RPython geschriebene Interpreter einbauen und so große Geschwindigkeitsvorteile gegenüber Interpretern ohne JIT-Compiler erreichen. Im Seminar „Virtuelle Maschinen und Ausführungsumgebungen“ haben wir den „Objects as Methods“ Aufruf in RSqueakVM implementiert, welcher von der COP-Implementierung für Squeak benutzt wird. Im Masterprojekt haben wir die RSqueakVM für das neue Speicherformat „Spur“ der OpenSmalltalk-VM tauglich gemacht, sodass die RSqueakVM auch aktuelle Squeak-Images laden kann. Später habe ich damit begonnen, den Rendering-Code der RSqueakVM von SDL1 auf SDL2 umzustellen.

Multilevel Debugger

Für das Seminar „Programmiersprachen: Werkzeuge, Konzepte, Umgebungen“ haben wir einen Debugger gebaut, der einerseits über Sprachgrenzen (Smalltalk / Qoppa – ein Scheme Dialekt) hinweg Code steppen kann und andererseits beim Steppen innerhalb einer Sprache (Smalltalk) erlaubt, auf der aktuellen Abstraktionsebene zu bleiben (indem der Code anderer Schichten oder Pakete übersprungen wird). Nach dem Seminar wurde das Projekt von Bastian Kruck weitergeführt und stark ausgebaut. Mittlerweile kann man damit parallel den Smalltalk VM Code, den vom JIT-Compiler generierten Code und die Fallback-Smalltalk-Implementierung von Primitiven inspizieren und noch einiges mehr, was beim Entwickeln und Verstehen von virtuellen Maschinen helfen soll.

Alte Hobbyprojekte

Startup Ace

Kann den Windows-Autostart bearbeiten (getestet nur auf Windows XP) und kann einzelne Programme beim Hochfahren zeitverzögert starten lassen. Im Zeitalter von SSDs und Multicore-Prozessoren ist das nicht mehr so sinnvoll, aber früher konnte man so dafür sorgen, dass einige wichtige Programme etwas schneller verfügbar wurden.
Binaries, Source Code

Sportreminder

Lässt regelmäßig einen einstellbaren Text in sich ständig ändernden Farben den Bildschirm herunterwandern. Der Text lässt sich bis zum nächsten Erscheinen vertreiben, indem man im System Tray Icon auf „Done“ klickt. Das nervt natürlich, wie beabsichtigt. Screenshots: 1, 2, 3. Eine professionellere Alternative ist zum Beispiel Toggls Pomodoro Timer und manche Desktop UIs bringen eine Sperrfunktion mit, die zur Einhaltung regelmäßiger Pausen zwingt. Binaries, Source Code

SysIcon

Hiermit kann man viele Windows-Systemsymbole (Icons) austauschen. Nachdem ich seit der Entwicklung von SysIcon für einige Jahren auf Linux umgestiegen war, habe ich das Programm aber nicht mehr weiterentwickelt und den Anschluss an neuere Windows-Versionen verloren. Da es auch andere Programme gibt, die ähnliches leisten, sehe ich derzeit auch keinen Grund, das Programm auf den neusten Stand zu bringen.

Comments are closed.