Softwareentwicklung

Kenntnisse in Sprachen und Tools

Meine Hobbyprogrammiererlaufbahn begann ich mit Delphi. Über C#, C++, PHP, Ruby und Python landete ich schließlich einmal bei Common Lisp (mit CLOS) und schrieb damit ein Abschlussprojekt für den Informatik-Leistungskurs am Gymnasium. Mit der Zeit, dem Studium und meiner Werkstudententätigkeit kamen noch Java, JavaScript (zuletzt ECMAScript 2015), C, Prolog, VHDL, Groovy und Smalltalk (Squeak und VA Smalltalk) hinzu. Und irgendeine Form von Shell Script lernt vermutlich sowieso jeder Entwickler früher oder später. Stand 2017 ist Smalltalk in Squeak meine Lieblingssprache. Sprachen sind natürlich das eine, aber Tools sind ein zweiter wichtiger Baustein. Im Laufe der Jahre habe ich mindestens mit folgenden Technologien zu tun gehabt: Spring Boot, Maven, Gradle, Eclipse4 RCP, Jenkins CI (Java/Groovy), 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) 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 Smalltalk Sharing Facilities wie FileOuts, Monticello oder ENVY auf den Smalltalk Code. Dabei ist das direkte Arbeiten mit Objekten, statt nur mit Code, in der 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, wie zum Beispiel Dateien außerhalb von Squeak zu verwalten oder die Objekte/Dateien irgendwie in Methoden zu serialisieren (um sie dann als Code zu versionieren). Im gleichen Zuge soll Squot die Anbindung von Squeak an Git Repositories verbessern.

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. Seitdem ich vor einigen Jahren auf Linux umgestiegen war, habe ich hieran aber nicht mehr viel getan und den Anschluss an neuere Windows-Versionen verloren. Da es auch andere Programme gibt, die ähnliches leisten, fehlt mir die Motivation, das Programm auf den neusten Stand zu bringen.

Comments are closed.