Als erfahrener Softwareentwickler und Leiter der Grundlagenentwicklung in einem mittelständigen Unternehmen für Software und Telekommunikation verfüge ich über ein breites Spektrum an Erfahrung und Fachwissen. Für meine Projekte verwende ich verschiedene Technologien und Ansätze, um den jeweiligen Anforderungen optimal gerecht zu werden. Ich bevorzuge testgetriebene Vorgehensweisen, da sich die anfängliche Zusatzinvestition in einer besseren Qualität des Endprodukts und einer sichereren Wartung und Weiterentwicklung niederschlägt.
Open-Source-Veröffentlichungen
Seit einigen Jahren veröffentliche ich hin und wieder einen Teil meiner privaten Projekte kostenfrei als Quellcode und unter einer Open-Source-Lizenz auf GitHub. Die dazugehörigen kompilierten Pakete sind auf NuGet verfügbar.
Weitere Veröffentlichungen
Auf dieser Website veröffentliche ich Apps, die kostenfrei genutzt werden können. Außerdem schreibe ich hier gelegentlich Beiträge zu technischen Themen mit dem Schwerpunkt Softwareentwicklung.
Vielversprechende Technologien
Seit 2004 entwickle ich .NET-basierte Anwendungen und schätze die Eleganz und die Möglichkeiten von C# sehr. Unabhängig von dieser persönlichen Vorliebe hat .NET durch die Offenlegung von .NET Core im Jahr 2015 und mit den neuen Versionen .NET 5 und .NET 6 einen gigantischen Schub erhalten. Plattformunabhängigkeit wird nun mehr als je zuvor hervorgehoben und unter Beweis gestellt.
Durch die Einführung von HTML5 und CSS3 haben sich für die Frontend-Entwicklung neue Möglichkeiten ergeben. Spätestens seit der Abkündigung des ungeliebten und veralteten Internet Explorers können die Neuerungen aus dem Standard bedenkenlos und fast ohne Einschränkungen genutzt werden, ohne dass mit Kompatibilitätsproblemen gerechnet werden muss.
Weiteren Schub erfährt die JavaScript-getriebene Frontend-Entwicklung durch TypeScript. Damit können JavaScript-Anwendungen nun typsicher entwickelt werden, was die Qualität signifikant erhöht, ohne dabei Performance zu verlieren. TypeScript eignet sich auch für andere JavaScript-basierte Systeme wie Node.js, V8 oder Jint.
Ausgewählte Projekte
- Entwicklung plattformunabhängiger Anwendungen für Desktopsysteme, Tablets, Smartphones und Web
- verschiedene Telefonieplattformen auf Basis von C#, C++ und Java
- Serversystem zur Verarbeitung und Archivierung von Dokumenten und E-Mails
- Software zur Überwachung und Steuerung redundant ausgelegter Hochverfügbarkeitssysteme
- Medizinanwendungen zur Verarbeitung von CT- und MRT-Aufnahmen
- Betriebssystem für verschiedene Laserbeschriftungssysteme
- Mess- und Regelungssystem für chemische Anlagen
- Server und Web-Frontend für Hausautomatisierung
- Entwicklung von Sensoren und Aktoren für diverse Anwendungen
- Lizenzierungssystem für Desktop- und Serveranwendungen
- Parser-Framework für ABNF-Grammatiken
- Erweiterungen für Entwicklungsumgebungen
- Komponenten und Werkzeuge zur Softwareentwicklung
- spezialisierte Web-Server mit C# und C++
- Web-Portale auf Basis von C#, Node.js, PHP und Java-GWT
- JavaScript-basierte Websites mit WebSocket-basierter Backend-Anbindung
- Websites mit Responsive Web Design (ohne JavaScript)
- Plug-Ins für jQuery und WordPress
Einplatinencomputer und Microcontroller
Steuerungen und kleine Serveranwendungen realisiere ich mit minimalem Hardwareeinsatz und bevorzuge dafür Einplatinencomputer wie Raspberry Pi oder Banana Pi. Meine Plattform für mobile Sensoren und Aktoren sind die Microcontroller ESP8266 oder ESP32, da diese per WLAN eingebunden werden können. Für Steuerungen, bei denen WLAN keine Rolle spielt, setze ich je nach Aufgabe die Microcontroller der Atmel megaAVR-Serie (ATmega328, ATmega2560) oder Atmel tinyAVR-Serie (ATtiny25, ATtiny45, ATtiny85) ein.
Programmiersprachen
Für serverbasierte Anwendungen verwende ich die .NET-Programmiersprache C# oder Java. Desktop-Anwendungen realisiere ich mit C#, TypeScript oder JavaScript. Für die Programmierung von Microcontrollern kommt C++ oder Python zum Einsatz. WordPress-Anwendungen werden durch Themes und Plug-Ins auf Basis von PHP ergänzt.
Ursprünglich bin ich mit Turbo Pascal in die professionelle Softwareentwicklung eingestiegen. Dabei habe ich proprietäre Grafikkartentreiber für eine Medizinanwendung entwickelt, die für den 32-Bit-Protected-Mode konzipiert war. Funktionen mit hohen Anforderungen an die Ausführungsgeschwindigkeit wurden dabei in x86 Assembler realisiert. Später habe ich dann verschiedene Desktop-Anwendungen mit Delphi realisiert.
Entwicklungsumgebungen
Meine aktuell bevorzugten Entwicklungsumgebungen sind Visual Studio und Visual Studio Code. Für in Java geschriebene Android-Anwendungen setze ich Android Studio ein. Andere Java-Anwendungen entwickle ich mit NetBeans oder Eclipse.