Softwareentwicklung

In den letzten Jahren arbeitete ich im Rahmen der selbständigen Tätigkeit, des Studiums und privat an verschiedenen Projekten. Die interessantesten Projekte möchte ich im Folgenden kurz vorstellen. Die Liste ist chronologisch sortiert und beginnt mit dem aktuellsten Projekt.

Digitale Visitenkarte

Die digitale Visitenkarte ist eine für mobile Geräte optimierte Website, die dank modernster Webtechnologien ohne Installation auch als Smartphone-App nutzbar ist.

Sie dient als Ersatz für klassische Visitenkarten oder ist als schlichte Website für kleine und mittlere Unternehmen (KMU) verwendbar.

Das Backend mit RESTful-API ist in Go entwickelt und nutzt PostgreSQL als Datenbank. Das Frontend ist in HTML, CSS und JavaScript implementiert und nutzt die JavaScript-Bibliothek Riot.js sowie den Static-Site-Generator Hugo. Die digitale Visitenkarte selbst ist eine Progressive Web App (PWA) und nutzt die aktuellsten Webstandards.

Kundengalerie- und feedback-Software für Fotografen

Die Webanwendung myFOTOSHOOT hat die Vereinfachung der Zusammenarbeit zwischen Fotografen und deren Kunden zum Ziel.

Mit myFOTOSHOOT können Fotografen ihren Kunden unkompliziert die Fotos eines Fotoshoots zur Verfügung stellen und Feedback von den Kunden einholen, beispielsweise können Kunden eine Fotoauswahl für die Nachbearbeitung treffen.

Das Backend mit RESTful-API ist in Go entwickelt und nutzt PostgreSQL als Datenbank. Das Frontend ist mit HTML, CSS und JavaScript umgesetzt und nutzt die JavaScript-Bibliothek Riot.js sowie den Static-Site-Generator Hugo.

Stateless Passwort-Manager

Da keiner der auf dem Markt verfügbaren Passwort-Manager meine Anforderungen erfüllte, habe ich einen eigenen Passwort-Manager für private Zwecke entwickelt. Das Besondere an diesem Passwort-Manager ist, dass die Passwörter nirgends gespeichert werden und bei jeder Verwendung unter Einbezug eines Master-Passworts neu berechnet werden.

Der Passwort-Manager ist umgesetzt als Chrome-Erweiterung.

Integration Solaranlagendaten in Website

Für eine langjährige Kundin habe ich eine Anwendung zur Aufbereitung und Darstellung der Live-Daten der auf dem Dach der Arbeitshalle neu installierten Solaranlage entwickelt. Die Live-Daten der Anlage werden auf der Website, sowie einem Fernseher in der Arbeitshalle für Besucher, angezeigt.

Die Rohdaten werden über eine API von der Solaranlage bereit gestellt und von einer für diesen Zweck entwickelten Joomla-Erweiterung aufbereitet und mit Hilfe der JavaScript-Bibliothek Chart.js visualisiert.

Abrechnungssystem für SaaS-Webanwendung

Für eine im SaaS-Modell vertriebene Zeiterfassungssoftware habe ich in Zusammenarbeit mit einem User-Experience-Designer ein Abrechnungssystem entwickelt.

Zuvor wurde die Anzahl der genutzten Lizenzen regelmäßig manuell von der Buchhaltung überprüft und dann den Kunden in Rechnung gestellt. Das neue Abrechnungssystem automatisierte die Berechnung der nötigen Lizenzen, die Rechnungsstellung und Bezahlung per Kreditkarte für kleine und mittlere Kunden. Für grössere On-Premises-Kunden, welche weiterhin auf Rechnung bezahlten, wurden die Arbeitsabläufe für die Buchhaltung optimiert.

Das Backend mit RESTful-API wurde in Go entwickelt und nutzt PostgreSQL als Datenbank. Das Frontend ist mit HTML, CSS und JavaScript umgesetzt und nutzt die JavaScript-Bibliothek Riot.js sowie den Static-Site-Generator Hugo.

Modernisierung einer Legacy-Anwendung

In einem mehrjährigen Projekt habe ich zusammen mit einem User-Experience-Designer, einem Webdesigner und dem Hauptentwickler der bestehenden Software die Benutzeroberfläche einer über 20 Jahre alten Zeiterfassungssoftware modernisiert. Der Fokus lag auf der Vereinfachung der Bedienung der Software für die Kunden sowie der Optimierung der Arbeitsabläufe für das Support-Team.

In der Kernsoftware (entwickelt in C) wurde die bereits vorhandene REST-like-API vom Entwickler der Kernsoftware weiter ausgebaut. Darauf wurde von mir eine Abstraktionsebene in Go mit RESTful-API, die von mehreren Instanzen der Kernsoftware genutzt wird, aufgesetzt. Als Datenbank kommt PostgreSQL zum Einsatz. Das neue Frontend (HTML, CSS, JavaScript, Riot.js und Hugo) kommuniziert teilweise direkt mit dem Kernsystem und teilweise mit dem Go-Aufbau.

Website-Tools

Die Website-Tools habe ich als Nachfolgelösung für meinen Website-Backup-Service entwickelt. Die Website-Tools sind eine zentrale Plattform für die es diverse Konnektoren zur Anbindung von Content-Management-Systemen (CMS) gibt. Momentan nutze ich sie zur Überwachung von Websites auf verfügbare Updates und zur täglichen Erstellung von Backups.

Die Anwendung ist in Go implementiert und nutzt PostgreSQL als Datenbank. Das Frontend ist mit HTML, CSS und JavaScript umgesetzt und nutzt die JavaScript-Bibliothek Riot.js sowie den Static-Site-Generator Hugo. Die Konnektoren sind in PHP als Joomla-Erweiterungen und WordPress-Plugins entwickelt.

Bewerber- und Talent-Management

Zusammen mit einem User-Experience-Designer und einem Webdesigner habe ich eine Webanwendung zum Bewerber- und Talent-Management für die Personalabteilung eines führenden Schweizer Telekommunikationsunternehmens entwickelt.

Die Anwendung optimiert die Abläufe bei der Bewerberauswahl, beispielsweise die Kommunikation zwischen der Personalabteilung und den Verantwortlichen in den jeweiligen Abteilungen, und unterstützt bei der Besetzung neuer Stellen mit internen Talenten.

Das Backend mit RESTful-API ist in Go entwickelt und nutzt MariaDB als Datenbank. Das Frontend setzt auf HTML, CSS, Vanilla-JavaScript und den Static-Site-Generator Hugo.

Link-Checker und Sitemap-Generator

Die erste Version des Sitemap-Generators zur Erstellung von XML-Sitemaps habe ich im Jahr 2014 entwickelt und als Online-Tool veröffentlicht. Der Sitemap-Generator ist heute als Online-Tool, Kommandozeilen-Anwendung, WordPress-Plugin und Joomla-Erweiterung verfügbar.

Die Entwicklung des Link-Checkers folgte im Jahr 2015 und die Weiterentwicklung dauert bis heute an. Er dient zur Überprüfung von Websites auf kaputte Links, Bilder und Videos und ist als Online-Tool, WordPress-Plugin und Joomla-Erweiterung verfügbar.

Zusammen haben die beiden Tools über 50'000 aktive Installationen und werden über 500 mal pro Tag genutzt.

Das Backend beider Tools ist in Go implementiert und über eine RESTful-API ansprechbar. Der Client nutzt HTML, CSS, JavaScript und die JavaScript-Bibliothek Riot.js. Die WordPress- und Joomla-Integration ist in PHP programmiert.

Site- und Webcrawler

Die Arbeit am Sitecrawler begann im Jahr 2014 als Übungsprojekt beim Erlernen der Programmiersprache Go. Ich habe ihn über die Jahre immer weiter ausgebaut und er ist heute die Grundlage des Sitemap-Generators und Link-Checkers.

Aufbauend auf dem Sitecrawler habe ich auch einen Webcrawler entwickelt, der von mir primär für die Analyse des Schweizer Internets eingesetzt wird.

Der Site- und Webcrawler sind in Go implementiert und der Webcrawler verwendet PostgreSQL als Datenbank.

Website-Backup-Service

Mit dem Website-Backup-Service konnten Websites und Datenbanken regelmäßig gesichert werden und er unterstützte mit einer integrierten Vergleichsfunktion bei der Detektierung von Manipulationen durch unbefugte Dritte.

Den Website-Backup-Service habe ich bis zur Ablösung durch die Website-Tools als SaaS-Anwendung betrieben.

Entwickelt als Java EE-Anwendung mit MySQL als Datenbank.

Online-Meeting-Software für die Entwicklungsarbeit

Für eine Hilfsorganisation habe ich eine einfache Online-Meeting-Software, die auch mit schlechter Internetverbindung funktioniert, zur Durchführung von Präsentationen als Erweiterung für Joomla entwickelt.

Die Organisation hatte zuvor mit den auf den Markt verfügbaren Online-Meeting-Lösungen das Problem, dass sie eine stabile und schnelle Internetverbindung voraussetzen und die lokalen Partner in den Entwicklungsländern oftmals über keine ausreichend gute Internetverbindung verfügten und die Online-Präsentationen daher nicht oder nur mit Einschränkungen durchgeführt werden konnten.

Umgesetzt mit PHP, HTML, CSS und JavaScript für Joomla.

Ausarbeitung Android-Angriffstechnik

Im Rahmen eines Studien-Projekts habe ich im zweiten Halbjahr 2013 eine Angriffstechnik auf Android-Smartphones ausgearbeitet. Mit der Technik kann das Betriebssystem eines Smartphones bei physikalischen Zugang innerhalb einer Minute beliebig manipuliert werden. Für die Demonstration der Folgen eines Angriffs habe ich eine App, die regelmäßig Fotos mit der Kamera aufnimmt und an eine zuvor festgelegte E-Mail-Adresse verschickt und als Systemapp getarnt intstalliert wird, entwickelt.

Ein Angreifer könnte sich mit der ausgearbeiteten Angriffstechnik beispielsweise an einer Messe, einem Seminar oder an einer Fortbildung für kurze Zeit Zugang zum Gerät des Opfers verschaffen und das Betriebssystem so manipulieren, dass das Gerät als Wanze agiert.

Detaillierte Auseinandersetzung mit dem Android-Betriebssystem und Entwicklung der App in Java.

Forschungsprojekt im Bereich der künstlichen Intelligenz

Von September 2011 bis Februar 2012 absolvierte ich in Vollzeit ein Praktikum am Forschungszentrum für Ambient Intelligence der Saxion University of Applied Sciences. Meine Aufgabe war herauszufinden, ob es möglich ist, ein selbstlernendes System zu entwickeln, das Menschen in einer Wohnung anhand von Geräuschen zuverlässig identifiziert. Zur Erreichung dieses Ziels arbeitete ich intensiv mit neuralen Netzwerken.

Die Experimente wurden mit Neuroph in Java durchgeführt und mit umfangreichen Shell-Skripten wurde eine Umgebung zur Verteilung der Rechenlast auf mehrere Rechner umgesetzt.

Verwaltungssystem für eine niederländische Non-Profit-Organisation

Während des Studiums an der Saxion University of Applied Sciences habe ich im Rahmen eines Projekts zusammen mit vier Studienkollegen ein Verwaltungssystem für eine niederländische Non-Profit-Organisation entwickelt. Ziel des Projekts war, die bisher mit Excel-Tabellen organisierten Arbeitsabläufe der Organisation mit Hilfe einer zentralen Webapplikation zu vereinfachen und zu optimieren. Die entwickelte Plattform wird von über 50 Personen aktiv verwendet.

Entwickelt mit PHP, HTML, CSS, JavaScript und MySQL als Datenbank.

Linux-Dateisystem

Im Frühjahr 2012 entwickelte ich einen Prototypen für ein Tag-basierendes UNIX-Dateisystem. Das besondere an diesem Dateisystem ist, dass es vollständig im Kernelspace arbeitet und auf ein beliebiges vorhandenes Dateisystem non-destruktiv aufgesetzt werden kann. Der Hauptanwendungszweck des Dateisystems liegt in der Verwaltung von Fotos und anderen Multimedia Inhalten.

Entwickelt in C für den Linux-Kernel.

Digitale Bibliothek

Für einen Schulbuchverlag aus Österreich habe ich eine digitale Bibliothek mit Zugangssystem entwickelt, mit der die Lehrer und Lehrerinnen, sowie Schüler und Schülerinnen die Lehrbücher auch online nutzen können.

Umgesetzt mit PHP, HTML, CSS und JavaScript für Joomla.

Joomla-Galerien

Für das Content-Management-System (CMS) Joomla habe ich zwei Open-Source-Galerien entwickelt. Das besondere an diesen Galerien ist, dass sie ohne Datenbank auskommen und die Ausgabe on-the-fly aus den Fotos auf dem Dateisystem generiert wird.

Umgesetzt mit PHP, HTML, CSS und JavaScript für Joomla.

Verlosungssystem für ausgediente Hardware

Während meiner Ausbildung zum Chemielaboranten bei einem Schweizer Pharmakonzern habe ich im Rahmen eines Lernunternehmens eine Intranet-Anwendung zur Verlosung ausgedienter Hardware (primär die Laptops der Außendienstmitarbeiter) unter den Mitarbeitern entwickelt. Die nötigen Fähigkeiten habe ich mir in den Jahren zuvor im Selbststudium angeeignet.

Lernunternehmen waren kleine von den Auszubildenden selbständig geführte Unternehmen innerhalb des Unternehmens, die Dienstleistungen für die Mitarbeiter erbrachten.

Umgesetzt mit PHP, HTML, CSS, JavaScript und MySQL als Datenbank.