Ruben Bakker, Senior Software Engineer
Ihr Software Entwickler für alle Fälle
Benötigen Sie für Ihr Projekt einen erfahrenen Softwareentwickler, der vom Konzept über das Backend bis zum
Frontend überall mit anpackt? Der sich vor CI/CD, Docker und Kubernetes nicht scheut? Der zuhört und mitdenkt, um
optimale Lösungen zu finden?
Dann sind Sie hier richtig.
Kontaktieren Sie mich, ich bin gespannt auf Ihr Projekt.
Über mich
Grüezi!
Darf ich mich vorstellen: Ruben Bakker, Senior Software Engineer.
Ich liebe es, Softwareprodukte zu entwickeln, die Menschen bei der Arbeit unterstützen und produktiver machen, damit sie mehr Zeit für das Wesentliche haben. Mir liegen schnelle, tragfähige und kundennah entwickelte Produkte am Herzen, die im Alltag funktionieren.
Ich bin offen und lerne gerne dazu. Es macht mir Freude mitzudenken um die optimale Lösung zu finden. Dabei sollen die für das Projekt passenden Sprachen und Technologien eingesetzt werden.
Arbeitserfahrung
Gründer & Senior Software Engineer
uncomplex gmbh, Roggwil
2017 - heute
Neu-Entwicklung und Vertrieb von Mailplane v4.0, die beliebte macOS Applikation für Gmail.
Sowie verschiedene Freelancing Software Kunden Projekte.
Senior Software Engineer
myneva Schweiz AG, Sursee
2020 - 2024
Konzeption, Entwicklung und Integration von mobilen Lösungen, welche die Prozesse der in Spitex- und Pflegeheim-Institutionen automatisieren oder vereinfachen. Implementation von mehreren zentralen Kubernetes Diensten in Kotlin sowie C#.
Senior Software Engineer
Evernote Corp, Redwood City, USA
2017 - 2018
Ich war "remote" Teil des Evernote macOS Team in Kalifornien.
Projekte waren z.B. das neue Evernote Business Feature "Spaces" sowie die Trennung zwischen persönlichen und Business Accounts.
Director of Products
Evernote GmbH, Zürich
2012 - 2017
Ich habe das Evernote Development Studio in Zürich eröffnet und dazu Entwickler, UI/UX Designer sowie QA Ingenieure rekrutiert. Über die Zeit wuchs das Team auf zehn Personen an. Das Studio war Teil der Software Produkte Abteilung in den USA (Redwood City, Kalifornien sowie Austin, Texas) und hat wichtige Innovationen und Patente hervorgebracht. Einige davon wurden in Evernote Produkte für Mac und iOS integriert.
Gründer & Senior Software Engineer
uncomplex gmbh, Sursee
2007 - 2012
Konzeption, Entwicklung, Design, Vermarktung der Mailplane app für macOS sowie der Replies app. Beide Apps wurden mit Objective-C entwickelt. Daneben einige Freelancing Projekte.
Senior Software Engineer R & D
BISON Schweiz AG, Sempach-Station
2004 - 2009
Meine Aufgabe war es Ideen, Prototypen sowie erste Implementierungen von Produkt-Innovationen und Verbesserungen für Bison Solution (Java) zu entwickeln. Zusätzlich habe ich die verschiedenen Entwicklungs-Teams unterstützt.
Technical Lead
BISON Schweiz AG, Sempach-Station
1997 - 2004
Ich entwickelte die technische Infrastruktur von Bison Solution, eine flexible ERP Software. Dazu baute ich ein Team von 12 Java Entwicklern auf, welches die Grundlagen für die Applikations-Entwicklung bereitstellte.
Tech Stacks
Mit diesen Technologien habe ich praktische Projekt Erfahrungen
Datenbanken
SQL for Postgres, MariaDB/MySQL, SQLite and Oracle
JVM Backend Entwicklung
Kotlin, Java, Spring Boot, Apache Camel, Clojure
.NET Backend Entwicklung
C#, Asp.net, EntityFramework
Python Backend Entwicklung
python, Django, pytest
Full-stack Entwicklung
React, Remix, Prisma, HTML/CSS, Tailwind CSS, Astro, ClojureScript
Server Betrieb
Docker & Kubernetes
Betriebssysteme
Linux: Arch-Linux, Fedora and Ubuntu; macOS; Windows; Android; iOS
macOS Entwicklung
Objective-C/C++, Foundation, Cocoa
Mobile Android Entwicklung
Kotlin, Jetpack Compose, RxJava, SQLite, Retrofit
Mobile iOS Entwicklung
Objective-C and UIKit
Rust Entwicklung
Rust, Axum, Rocket, Tokio
Scripting und Automation
bash, python, ruby, Powershell
CI/CD
Github Actions, Bitbucket Pipelines, CodeMagic, Jenkins
Metriken
Prometheus & Grafana
Projekt Portfolio
Auswahl von Projekten, welche einen Einblick in meine Arbeit geben.
FileSync und FormSync
Patienten Dokumente mit Android Geräten synchronisieren
Dieses Produkt-Feature durfte ich konzipieren und komplett entwickeln: Die Patienten Dokumente wie PDF, PDF-Formulare, sowie Fotos mit den mobilen Geräten synchronisieren, damit diese offline zur Verfügung stehen und von ambulanten oder stationären Pflegerinnen genutzt werden können. Mit Hilfe der myneva Scanner App erstellt man mehrseitige PDF Dateien und mit der myneva Forms App werden Formulare ausgefüllt.
- Implementierung eines Konnektors für den Integration Server mittels Kotlin und Spring Boot, welcher eine REST Api für mobile Geräte zur Verfügung stellt
- Definierung und Implementierung von GraphQL Queries und Mutation in C#
- Implementierung der Android Synchronisation mit Kotlin, Retrofit und RxJava
- Design und Implementierung des UIs mit Kotlin und Jetpack Compose
- Zur Verfügung stellen von Grafana Boards and Alerts, welche auf Prometheus Metriken zurückgreifen
Android Forms App
Formulare ausfüllen und signieren
myneva Forms für Android ermöglicht es anhand von Vorlagen, Formulare auszufüllen und mit einer oder mehreren Unterschriften zu versehen. Diese App wird von Pflegerinnen eingesetzt und ermöglicht es, Formulare direkt beim Kunden auszufüllen und unterschreiben zu lassen.
Diese App durfte ich von Grund auf entwickeln:
- Implementation der App mit C# und SyncFusion für Xamarin
- Zusätzliches digitales Signieren der Unterschrift
- Einbindung dieser App als “Companion” App zu SWING2Go für Android mittels Kotlin
- Validierung der Formularfelder
- Implementierung von ca. 500 Formular Platzhalter in SWING2Go mittels Kotlin, um Daten wie z.B. Patienten Namen automatisch auszufüllen
Android Scanner App
Mehrseitige PDF Dokumente scannen
myneva Scanner für Android ermöglicht es, Verträge, Medikamenten-Listen und andere mehrseitige Dokumente vor Ort beim Patienten zu scannen. Nach dem Fotografieren wird die Seite automatisch bearbeitet und optimiert:
- Ermittlung der Seitenränder nach Aufnahme des Bildes
- Automatisches Zuschneiden der Seite
- Glätten von Falten und Unebenheiten im Papier
- Proportionen der Seite korrigieren
- Automatisches Drehen der Seiten
Die Algorithmen habe ich mit Kotlin auf Basis OpenCV geschrieben. OpenCV ist eine Open-Source Bibliothek, um Bilder zu analysieren und zu manipulieren.
Das UI wurde mit Jetpack Compose sowie RxJava implementiert.
SWING2Go SyncServer
Neue Daten Synchronisation für Android Pflege App
Wir arbeiteten zu zweit an diesem Projekt, um einen neue Synchronisations-Infrastruktur zu implementieren. Dabei wurde die alte Windows-Server basierte Lösung durch eine Neu-Implementierung ersetzt. Diese Infrastruktur wird von knapp 10’000 Android Tablets täglich genutzt und steht 24/7 zur Verfügung.
- Implementieren des Sync Servers mit C#, Entity Framework und asp.net mit REST APIs für Geräte, für Windows Server der Einrichtungen sowie für die Management Oberfläche.
- Erstellen von Docker Images mit CI/CD
- Erstellen von Kubernetes Definitionen mit automatischen Deployments in drei Umgebungen: dev, staging, prod
- Erstellen eines Sync Dienstes für die Windows Server, welcher mit C# auf die SAP Anywhere Datenbank zugreift
- Neu-Erstellung der Android Sync Library mit Kotlin und RxJava
- Automatische Überwachung der Sync Infrastruktur:
- Erstellen von Incidents auf der öffentlichen Status Seite
- Automatische Benachrichtigung der IT Bereitschaft PRTG
Nach Fertigstellung konnten wir innerhalb weniger Monate sämtliche Kunden und Geräte auf die neue Sync Umgebung migrieren.
Evernote Presentation Mode
Unter meiner Leitung haben wir bei Evernote in Zürich den Presentation Mode erfunden und dazu auch Patente angemeldet. Wir haben das Feature für macOS und iOS entwickelt und in die Evernote Apps integriert. Dieses Premium-Feature erfreute sich bei Evernote Benutzer grosser Beliebtheit. Auch Evernote intern wurden Meetings hauptsächlich mit Presentation Mode geführt. Die wichtigsten Eigenschaften:
- Präsentieren von Notizen auf externen Bildschirmen
- Notizen werden vor der Präsentation im Stil vereinfacht und verschönert
- Automatische Slide Erkennung
- Slides können im Layout Editor angepasst werden
- Die Notiz, welche präsentiert wird, kann während der Präsentation bearbeitet werden.
- Integrierter Laserpointer
- Dark und Light Mode
Wir haben das Feature mit Objective-C, Cocoa, HTML und CSS entwickelt. Die Evernote Mac und iOS Apps haben wir mit einem Plugin System versehen, damit die Entwicklung von Presentation Mode unabhängig der Kernteams erfolgen konnte. Ausserdem haben wir das Feature so entwickelt, das grosse Teile des Codes in den Apps wiederverwendet werden konnte.
Evernote Collect
Das Evernote Team in Zürich - wo ich, als Director of Products die Leitung innehatte - übernahm die gesamte Verantwortung für den ‘Collect’ Teil von Evernote. Dazu gehörten die Apps:
- Web Clipper: Eine Extension für Chrome, Edge, Safari und Firefox, um Web Seiten im Evernote zu speichern.
- Evernote for Outlook: Integration in Office 365 und Outlook, um Notizen aus Emails zu erstellen und zu teilen
- Evernote Scannable: Dokument Scanner App für iOS
- Evernote Share Extension iOS und macOS: Web Seiten und andere Inhalte in Evernote speichern.
- Email to Evernote: Emails an Evernote schicken, um diese zu speichern.
Unsere Aufgabe war es die Anzahl Notizen, welcher ein neuer Benutzer in der ersten Woche erstellt, zu erhöhen, damit diese zu “Premium” Benutzern werden. Dafür haben wir:
- etliche A/B Experimente durchgeführt, d.h. ein Feature mit einer Kontrollgruppe getestet
- mittels “User Testing” gelernt, wie neue Benutzer mit der App umgehen
- Umfragen und Studien durchgeführt
- Designs & Texte getestet und optimiert
Wir haben Evernote Mac/iOS und Evernote Scannable so erweitert, dass wir Features mit A/B ausrollen und die Ergebnisse in Google Analytics messen konnten.