Tales about Aviation, Coaching, Farming, Software Development

Stephan Schwab

Phone +49 151 6162 3277
email sns@caimito.net

German citizen fluent in English, German, Spanish.

Hands-on, get things done attitude. Able to pick up quickly new subjects, languages, technologies and rise to expert level.

Available remotely or on-site with flexible rates as:
  • Software developer / engineer / architect
    Build software as a member of a development team
  • Technical advisor to senior leadership
    Provide insight at the C-level or departamental level into technical topics
  • Senior Developer Advocate
    To uplift technical and organizational skills of all team members reporting to senior leadership

Trusted by these organizations

Since 2006 I have provided professional services in different roles to the following international clients. See project history for details below.

Germany

  • Mercedes-Benz
  • Versandhaus Walz
  • Deutsche Bank
  • AXA Insurance
  • Virtual Solutions
  • Huawei
  • Webtrek
  • OBI Smart Technologies

USA

  • Independent Health
  • Nationwide Insurance
  • Serials Solutions
  • Cloud9 Analytics

Russia

  • Alfa Insurance
  • Alfa Bank
  • Bank Otkritie

Other countries

  • PH7 (Japan)
  • Raiffeisen Bank (Balkans)
  • Huawei (China)
  • RealWorld Systems (Panama)

Executive Summary

As a lifelong software developer (since the 1980s), I am proficient in Java, JavaScript, and Ruby, with additional experience in C, C++, and Objective-C. I can even read COBOL from back in the day. I also have contributed to Open Source Software as part of client engagements.

When embedded in a software development team as a Senior Developer Advocate I help to uplift the technical and organizational skills of all team members in collaboration with and reporting to senior management.

My extensive business experience and knowledge at the international level are invaluable when working with global teams and senior leadership. While most of my work communication is in English, I am also fluent in German (my first language) and Spanish.

At https://www.stephan-schwab.com I maintain a personal website and blog with technical articles that further shows my expertise and serves as a reference for my clients.

Knowledge overview

When you are looking for a contractor, consultant, advisor, or developer advocate to introduce better practices, you want someone experienced who can deliver measureable results. You don’t want a cog in the machine or a one-trick pony; you want someone who can quickly figure out how to best contribute to your business needs without being tied to technologies or limited by personal preferences. In a coaching role you want a seasoned practicioner instead of an outsider.

Programming languages: proficient in Java (J2EE, JBoss, WebSphere, Tomcat, Jetty, Spring Framework family, Spring Boot), JavaScript (ECMAscript) (browser and NodeJS) and JS frontend frameworks (VueJS, React, Angular and similar). Can do Ruby (Ruby on Rails), C, C++ and Objective-C. Used BASIC, Pascal, Perl, Python, Modula-2, TypeScript, VisualBasic (and developed extensions), x86/68000 Assembler. Can still read COBOL.
Databases: SQL, stored procedures (MS SQL, MySQL, MariaDB, PostgreSQL, Oracle), NoSQL (MongoDB)

Search engines: Apache Solr, Lucene, full-text search in databases

World Wide Web: Hypertext (HATEOAS), HTML, CSS, able to create a website with no framework
Concepts: messaging (Pub/Sub, IBM MQ, RabbitMQ, ActiveMQ, MQTT); Event-Based Architecture; Object-Oriented Programming (OOP); Domain-Driven Design (DDD); Clean Code; functional, procedural, structured, declarative programming paradigms. Familiar with UML, state/flow diagrams.
Networking: Ethernet, TCP/IP, DNS, application protocols (HTTP/HTTPS, SMTP, NNTP, other RFCs), routing protocols (BGP, OSPF), DHCP, Firewalls, Cisco routers, LoRa, Internet of Things, LoRaWAN, built and ran an ISP (xDSL) and datacenter
Industrial and agricultural automation: sensors, solenoid valves, actuators, MQTT, Home Assistant, event/rules engines
Working knowledge of Lean (inkl. TPS), Kanban, Scrum (since 2006), DevOps, and the original Waterfall model by W. Royce, mob and pair programming
Test-Driven Development (TDD, BDD, ATDD with Cucumber, Behave) and CI/CD (trunk based) advocate.
Development on Linux since 1993 (v0.98), Windows since 1989 (v2.11), Windows NT since 1993 (v3.1), MacOS since 2001; Infrastructure as Code (Ansible, Chef, Terraform); Virtualization (Docker, Kubernetes, Linux KVM, Vagrant, VirtualPC, VMware)
Conceptually familiar with machine learning, artificial intelligence, neural networks. Heavy user of GitHub Co-Pilot and ChatGPT as assistants.

Project History

Client contacts and further details for the projects listed are available on request.

Product Designer & Software Developer

2024, Caimito Services, USA

Development of an agroforestry planning and design tool. ChatGPT is used extensively for research about plant species and their properties as well as a means to speed up development tasks. GitHub Copilot in VS Code helps to quickly prototype the application. The development approach is trunk-based development with git commits and pushes directly to the production environment.

Technologies used: Spring Boot, Thymeleaf, htmx for HTML5/CSS3 frontend instead of a framework, ChatGPT

IoT Developer

2024, Caimito Agile Life, Spain

Evaluated, planned and installed IoT gateway and end nodes to monitor soil humidity, temperature and conductivity to provide automated irrigation to a Miyawaki style forest co-financed by the European Union's LIFE program (via LifeTerra foundation).

Created dashboards and automations for power monitoring, to control water pumps and other devices. Did the electrical installation and software. The system is solar powered and off the utility grid.

Technologies used: Internet of Things Network, LoRaWAN, NPC, BLE, Home Assistant, Dragino, Milesight, Shelly, and SMA devices

Magic Link Demo

Magic Links are a simple way to allow authorized access to a website without building a full-fledged user management system. This code repository shows how this can be implemented easily:

Demo code on GitHub

Software Developer & Developer Advocate

2021 - 2022, Mercedes-Benz, Germany

Worked 100% remote with an international DevOps style group on an internal application to manage SonarQube in combination with GitHub Enterprise.

Backend work with Java, Quarkus, Hibernate, Maven

Frontend work with VueJS, Vuex Store, Typescript, Vuetify, Cypress automated testing

Development environment was Docker, GitHub Actions. Production deployment to Azure Kubernetes cluster. Worked on Quarkus Native Executable on GraalVM as Docker container. Did minor changes to Helm charts and within Microsoft Azure.

The application uses Keycloak for authentication and I also got to do some work with its API and manage local deployment for testing purposes.

Worked on a demo setup for a different group to enable them to use Microsoft .NET on Kubernetes. Development with .NET on Mac OS and deployment to selfhosted Ubuntu MicroK8s.

Did some limited coaching on Object-Oriented Programming and Test-Driven Development for the colleagues with a SysAdmin background.

Technologies used: Java, JavaScript, Typescript, C#, Quarkus, Hibernate, Maven, Cucumber.js, VueJS, Vuex Store, Vuetify, Cypress, Docker, GitHub, Microsoft Azure, Microsoft .NET, MacOS, Linux, Ubunto MicroK82, Kubernetes, Terraform, Keycloak

Product Designer and Software Developer

2021 - 2023, Caimito Agile Life, Spain

CaimitoEU is a frontend application to promote an ecosystem restoration project in Andalusia, Spain. The application contains a shop for packaged products and also an innovative butcher shop to facilitate the sale of fresh Iberico meat.

It is written in JavaScript with VueJS (version 3), HTML5 and CSS3 for styling. After a bad experience with TailwindCSS the styling was redone in pure CSS3. It is deployed as a Docker container with an NGINX reverse proxy in the front and for handling SSL encryption. CaimitoEU consumes an API provided by GranjaEU and does not have local data storage.

Secured via Keycloak, CaimitoEU calls the backend API REST endpoints authenticating itself as a service account.

To process payments PayPal is integrated. CaimitoEU displays information in English, German, Spanish languages via vue-i18n and some Vue Router tricks to redirect to language specific pages for larger content.

Build and deploy happen via GitHub Actions to a staging and production environment. The multi-stage build includes Cypress UI tests and also Cypress smoke tests before a candidate container is marked as ready for deployment.

More complex features that take longer in development are controlled via feature flags in order to make them visible in the staging but not in the production environment.

GranjaEU is the backend API for CaimitoEU and also a small-scale ERP system for running a farm which is being used daily by the workers of Granja Caimito.

The backend API is coded in Java with Spring Boot. It exposes REST endpoints to the GranjaEU webapp and also a secured public API, via Keycloak, for CaimitoEU (in the future, other farm applications as well).

User management is done within Keycloak. Data is stored either structured in PostgreSQL or as documents in MongoDB.

The user interface is made with Vuetify and supports English and Spanish languages via vue-i18n.

GranjaEU also sends emails via JavaMail and the Google SMTP server to customers in response to shop actions and to notify customers about state changes for their orders.

Test-driven development and rapid prototyping are two of the methods used. Actual farm workers use the application at a very early stage and provide feedback. Deployment to production - in the sense of trunk-based development - for both applications happens multiple times per day in small chunks.

As with CaimitoEU build and deploy happen via GitHub Actions as a multi-stage build pipeline. Maven is building and running a large number of JUnit unit and integration tests. Cypress is used to test the GranjaEU web UI and also runs smoke tests of the deployed application for selected critical functionality. The output is several Docker containers which are stored at GitHub's container registry and deployed via SSH to a Docker Compose to staging and production environments.

All servers running Docker Engine based on Debian Linux are maintained by myself.

Technologies: Java, JavaScript, VueJS, Vuetify, Cypress, Keycloak (OAuth2), Docker (compose), MongoDB, PostgreSQL, NGINX, Spring Boot (REST, Data, Mail, Thymeleaf, Security), Flyway, JUnit, Maven

Software Developer & Developer Advocate

2020, PH7, Japan, USA, Europe

Worked on a NodeJS based API to orchestrate a number of external services. Functional programming style and use of Promise and lodash/fp. Unit testing with JEST, acceptance and smoke testing with Cucumber.js and Chai.

Geographically distributed team with team members working from individual locations in Europe, Japan, and USA.

Technologies used: NodeJS, JavaScript, Cucumber.js, Chai, OneSignal, Firebase

Technical Management Advisor

2019, Raiffeisen Bank on site at subsidiaries in Sarajevo (Bosnia-Herzegovina), Belgrade (Serbia), Pristina (Kosovo)

Performed assessments of IT processes and systems for the executive board of each subsidiary.

Further on-site engagement was stopped due to the beginning of the COVID pandemic. It was planned that I take on the role of an embedded Developer Advocate with the aim of creating a new development center.

Senior Developer Advocate

2018, Alfa Insurance, Moscow, Russia

Continued the work from 2017. Worked with several teams and senior management on improving engineering practices. Advised on network security and information security practices. Introduced a former coachee to the teams to support XP style testing practices at the team level. Consulted on Self-Contained Systems (SCS) based on Docker containers to improve application architecture.

Technologies used: Java, JavaScript, Docker, Vaadin, SQL

Senior Developer Advocate

2017, Alfa Insurance, Moscow, Russia

Performed an audit of the software development and operations groups in preparation of a larger engagement to uplift skills and create a DevOps structure. Did some initial coaching on two teams to lay the foundation for future coaching work with these two teams and additional groups to follow.

Technologies used: Java, JavaScript, Docker, Vaadin, SQL

Senior Developer Advocate in cooperation with Agile Coaches

2017, Alfa Bank, Moscow, Russia

Continuation of the 2016 engagement. Objective is to create a DevOps culture inside the bank and restructure the whole organization accordingly.

Senior Developer Advocate

2016, Thales, Stuttgart, Germany

Within the axle counter group of Thales Transportation Systems I coached project manager and solution architect on their new roles of Scrum Master and Product Owner. Introduced technical team members to Test-Driven Development in C using the tool Cantata.

Technologies used: C, Cantata

Senior Developer Advocate

2016, Versandhaus Walz, Bad Waldsee, Germany

The engagement started as a group of three coaches for their main office and an external development partner. Initially I trained and coached on technical matters in a Java J2EE environment with IBM Websphere Commerce. Over time I became the main advisor and developer advocate for the main office and worked with a larger group developing the new eCommerce shop for Walz. Coaching topics included product development vs service delivery, information visualization, integration of non-developers, restructuring a traditional retailer to become an eCommerce company, new roles and skills. For 2017 Walz wants to bring all shop development inhouse and I started in 2016 to train newly hired developers on microservices architecture and the DevOps model.

Technologies used: Java, JavaScript, Docker, IBM Websphere eCommerce, Spring Framework, Spring Boot

Senior Developer Advocate in cooperation with other Agile Coaches

2016, Alfa Bank, Moscow, Russia

Did anamesis with a number of several development groups over the course of a whole week and created a proposal about creating a DevOps culture within a division for management. Received approval to proceed in 2017.

Senior Developer Advocate

2016, Deutsche Bank, Frankfurt, Germany

Tought Product Owners and team members from different vendors the basics of Scrum. Introduced User Story Mapping. Performed a three day learning week to introduce kanban elements and the concept of 3 Amigos via paper prototypes amongst others. Consulted on team size and shape and what Scrum can do for the organization.

Senior Developer Advocate in cooperation with Agile Coaches

2015, Bank Otkritie, Moscow, Russia

Performed initial workshops about team formation, team coaching with management. Did organizational anamnesis and proposed potential solutions to populate first version of Coaching Map as a guiding tool going forward.

Senior Developer Advocate in cooperation with resident Scrum Master

2015, AXA Groupsolutions, Cologne, Germany

Performed introductory workshops about Acceptance Test-Driven Development for project leaders and team members.

Technologies used: Cucumber, Ruby

Senior Developer Advocate / Trainer with resident Scrum Master

2015, Virtual Solution, Munich, Germany

Performed workshops, in the form of code retreats, with two teams on test automation, clean code and architecture, intra-team collaboration and Specification by Example for IOS and Android platforms.

Technologies used: Java, Objective-C, Android, IOS, Appium, Cucumber

Management Advisor working with Department Leader

2015, Huawei Technologies, Munich, Germany

Management report on organizational and human factors for dealing with complexity in software product development.

Senior Developer Advocate / Scrum Coach working with Project Managers and Department Leaders

2014, Huawei Technologies, several cities, China

Introduced ATDD and situational kanban after client’s failed attempt to do so to several teams and coached middle management on agile principles.

Technologies used: Java, Android, Appium, Cucumber, Ruby, Python, Behave

Senior Developer Advocate / Scrum Coach pairing with resident Scrum Masters

2013 - 2014, Webtrekk, Berlin, Germany

Coached the CTO on agile principles and testing. Introduced Acceptance Test-Driven Development and coached Scrum Masters.

Technologies used: Java, Cucumber, Ruby

Interim Scrum Master for development group</br> Senior Developer Advocate / Scrum Coach working with Department Heads

2013 - 2014, OBI Smart Technologies, Wermelskirchen, Germany

Led a Scrum team. Added testers to the team. Improved requirements gathering and intra-departmental collaboration. Coached department heads on agile values & principles.

rmq - Ruby Wrapper for MQ Series client API

Similar as with RAutomation at another client there was a need to have a testing tool for IBM MQ Series and I created it.

Code on GitHub

Technologies used: IBM MQ, Ruby, Cucumber

Senior Developer Advocate / Scrum Coach working with team leaders

2012, Independent Health, Buffalo, New York, USA

Coached SOA teams on Acceptance Test-Driven Development and created a technical tool for doing it.

RAutomation - Small and easy to use library for helping out to automate windows and their controls for automated testing

At a client there was a need to automate windows desktop application for Acceptance Test-Driven Development. After some experiments on my own I discovered another developer on GitHub and started to collaborate on the project with the gracious support of my client.

Code on GitHub

Senior Developer Advocate / Scrum Coach working with Iteration Managers and Application Development Leaders

2009 - 2011, Nationwide Insurance, Columbus, Ohio, USA

Participated in an agile transformation spanning 23 teams and personally provided technical and organizational coaching to 6+ teams and about 80 individuals.

Technologies used: Java, Ruby, Cucumber, Spring Framework, Spring Batch, IBM Websphere, SQL

Software Developer on a self-organizing geographically distributed international team

2008 - 2009, Serials Solutions, Seattle, Washington, USA

As part of a 6 person team I co-created the Summon product.

Technologies used: Java, Apache Solr, Apache Lucene, XML, Apache Camel, ActiveMQ

Senior Developer Advocate / Scrum Coach working with Software Architects

2008, Nationwide Insurance, Columbus, Ohio, USA

Coached software architects and team members on agile development practices including test-driven development and continuous integration.

Technologies used: Java, Ruby, Cucumber, Spring Framework, IBM Websphere, SQL

Product Designer & Software Developer

2007 - 2009, Caimito Development, Panama City, Panama

Developed the agile lifecycle management tool Caimito One Team, which was aimed at distributed Scrum teams.

Software Developer</br> Senior Developer Advocate / Scrum Coach working with Project Manager and CEO

2007, Cloud9 Analytics, San Mateo, California, USA

Built Cloud9's Messenger product (webapp) (from inception to deployment to production) using Scrum as methodology.

Senior Developer Advocate / Scrum Coach working with team members and CEO

2006 - 2007, RealWorld Systems, Panama City, Panama

Coached team on Scrum and XP practices.

Technologies used: C, Java, Ruby, Cucumber, Spring Framework, SQL

Founder and Managing Director of various ventures

Founder, Managing Director at Caimito Development S.A.

2006 - 2009, Panama

Outsourcing projects for customers in USA.

Development of the agile lifecycle management tool Caimito One Team from idea to market introduction.

Founder, Managing Director at Caimito Technologies LLC

2003 - 2006, Florida, USA

Professional services in the areas systems operation, networking, software development.

Founder, Managing Director at DINX GmbH

1999 - 2003, Germany

Hosting of Application Servers

Operations of IP Backbone and access concentrators

Web development

Co-Founder, Managing Director at Farside Communications

1997 - 2001, Germany

Regional Internet Access Provider for the region Rhein-Neckar in the southern part of Germany.

IP backbone network with of 4 intra-city distribution hubs for DSLAMs and several BGP connections to other carriers.

Security systems including firewalls, intrusion detection systems, virtual private networks on a national and international scale.

Co-Founder, Managing Director at VentureNET GmbH

1995 - 1996, Germany

Co-Founded VentureNET GmbH in Heidelberg, Germany, together with Heidelberg based consulting company OSS Consulting GmbH and two partners. Served as member of the board and was responsible for the company's Internet division.

Co-Owner, Software Architect at SoftStream Development

1989 - 1996, Germany

Convince, an illustration and presentation graphics program was developed from 1989-1990 and marketed in Germany. It was written in Modula-2 for the GEM/3 environment on DR-DOS and MS-DOS.

DEO - Documents of Objects - was a software technology in C/C++ on Windows 3.0 that is a little bit comparable to OLE 2 from Microsoft. The product knew a container application with software components running inside. Available software components were a spreadsheet, illustration graphics, presentation graphics and a word-processing component from a third party.