Last update: 17.10.2022
The following is an attempt at giving an overview of my working experience:
- an attempt at writing down the different work engagements (consulting, contracting and more) I have had over the years and that I am allowed to disclose
- a list of R&D projects I have worked on
- a list of tools that I have experience with
See also this article to get more insights about this page.
Consulting engagements
Since 2021: Company (digital media measurement and analytics industry)
Ongoing support of the engineering team with the implementation of Scala- and Akka-based microservices:
- design reviews
- code reviews
- technical questions
- performance engineering
07.2020 - 09.2021: Company (vertical farming industry)
- review of the technical design of a single-node Akka application against the business objectives
- supporting the project team with regard to questions and issues arising during the project with regard to the usage of Akka and Scala
03.2020 - Company (telematics technology industry)
Architecture evaluation of an event-sourced system based on Apache Kafka and Kubernetes
02.2020 - SwissBorg (cryptocurrency technology and services industry)
Troubleshooting performance issues with an Order Management System (based on Akka Cluster and Kafka) and setting up a large-scale load test for the system.
10.2019 - 11.2019: Paidy Inc. (financial services industry)
The onboarding of a new strategic client on the Paidy platform brought with it stricter latency requirements (in order to meet the agreed-upon Service Level Agreement). The backend application built on top of Akka Cluster with cluster sharding did not deliver consistent latency in redeployment and failover scenarios. I helped the engineering team find and understand the root cause of the latency fluctuation and guided them throughout the process of implementing a solution.
09.2019: Delivery Hero (food delivery industry)
A core application based on Akka Cluster had ongoing memory issues. I held a performance engineering workshop to show the team how to use the adequate tooling for performance profiling and memory pressure analysis. A key result of the workshop was a tenfold decrease of the JVM memory required to run the project.
12.2018 - SwissBorg (cryptocurrency technology and services industry)
Development of a template project for deploying Akka Cluster projects with Kubernetes
06.2018: MOIA (mobility industry)
Evaluation of the deployment of a split-brain resolution solution for Akka Cluster deployed with Kubernetes on Amazon Web Services (AWS). At this time, there was no official support for Kubernetes deployments of Akka and therefore I proceeded to analyze the deployment model with regard to different edge-cases that could occur in a split-brain scenario.
03.2018 - 09.2018 - Metaco (cryptocurrency technology and services industry)
I supported the engineering team during the initial development of the SILO platform (based on Akka Cluster and Scala) by:
- reviewing the system architecture and technical feature designs
- providing guidance and best practices with regard to the use of Akka Cluster, Scala and Kubernetes
- developing the initial project scaffold and core application layer
03.2018: Delivery Hero (food delivery industry)
Architecture review and code review of an Akka Cluster based application
06.2016 - 10.2019 - WireCard (financial services and technology industry)
Ongoing support of the engineering teams working on the next generation of the PSP (Payment Services Provider) core platform:
- architecture reviews
- design and code reviews
- performance engineering workshops
02.2016 - 07.2016: DIMOCO (financial services and technology industry)
DIMOCO initially approached me in order to develop a prototype for an architecture evaluation with Akka Cluster to help make a decision of which technology to use (the other contending technology was VertX). I developed a software prototype deployed on multiple Raspberry PI computers to demonstrate the resilience and failover capability of Akka Cluster (unplugging a network cable while transactions were being executed and showing that the processing continues and no transaction is failing makes for a good demonstration).
Akka Cluster was subsequently selected as the technology to use for developing the new version of DIMOCO’s SMS delivery platform. I supported the engineering team in the early stages of the development of the platform by:
- reviewing the architecture and the technical design
- regularly reviewing the code
- providing guidance and best practices with regard to the use of Akka and Akka Cluster
Contracting engagements
10.2020-02.2022: Tech Lead Leap Energy (energy industry)
After watching the drone footage of San Francisco in burning orange skies due to wildfires, with the Blade Runner soundtrack playing on top of it, I decided to look for an engagement with a company helping to do something to address climate change. This is how I learned about Leap Energy which provides solutions for connecting distributed energy resources to wholesale energy markets in order to make the electric grid more resilient.
In the capacity of Technical Lead I focused on projects in the following two areas:
- infrastructure modernization
- migration of the self-hosted customized VPN server to a cloud offering (vendor selection, user migration)
- migration of the self-hosted Kafka cluster to Confluent Cloud (vendor selection, data migration, integration with the monitoring system, service migration and coordinated roll-out)
- migration of the self-hosted elasticsearch cluster to elastic cloud (vendor selection, data migration, service migration, coordinated roll-out)
- microservice architecture modernization
- introduction of ADRs in order to document architecture decisions
- introducing GRPC as a means for service-to-service communication (replacing direct database access accross services and an experimental service-to-service communication via Kafka topics)
- development of a service protocol registry and distribution mechanism (based on protocol buffers) to allow contract-first design and development of the various services
- introducing Gradle with Kotlin support as a build tool as alternative to maven and porting multiple services
- introducing jOOQ as an alternative to Hibernate for database access
Tools used: Kotlin
, Java
, Go
, Python
, Bash scripting
, Gradle
, Maven
, GRPC
, Kafka
, SQL
, elasticsearch
, Terraform
, AWS
06.2018 - 06.2019 - Software Engineer, Payment Services MOIA (mobility industry)
I joined the Payment Services team at MOIA to help with developing the second version of the payment system based on Scala and Akka. The system needed to enable the payment of MOIA trips and needed to integrate with multiple Payment Service Providers while providing strong consistency as well as being highly available.
Tools used: Scala
, Akka
, Akka Cluster
, Akka HTTP
, SBT
, DynamoDB
, AWS Kinesis
, PostgreSQL
, AWS
05.2017 - 12.2017 - Tech Lead and Software Architect, Company (communication services industry)
- architecture of the new microservice-based software platform for an existing real-time communication platform
- design and code reviews
- hands-on development of the core feature set of the platform (based on Akka, Scala and Scala.js)
Tools used: Scala
, Scala.js
, Typescript
, Akka
, Kafka
, SBT
, Terraform
, AWS
08.2016 - 05.2017: Software Engineer, VCharge Inc. (acquired by OVO Energy) (energy industry)
This engagement was a direct result of my work on deploying Akka on the Raspberry PI (see also the initial article).
VCharge developed an embedded system and software solution to help address the issue of maintaining the stability of the electric grid in the presence of increasing renewable generation.
During this engagement I supported VCharge in building a new version of the low-latency backend service (based on Akka) responsible for aggregating telemetry as well as actuating the IoT devices at the core of the VCharge Grid network.
Tools used: C
, Scala
, Python
,Akka
, elasticsearch
, Kibana
, Puppet
, Bash scripting
07.2013 - 07.2016: Software Engineer Nexxchange (property management industry)
See also the Reactive Golf article series part 1, part 2 and part 3.
The NexxChange provides an all-in-one platform for managing Golf resorts.
I designed and implemented the online portal that aggregates the tee times of the multiple golf clubs, making them searchable and bookable.
Tools used: Scala
, Akka
, Play Framework
, Javascript
, elasticsearch
, MongoDB
12.2013 - 03.2016: Software Engineer Talenthouse (digital marketing industry)
I joined the engineering team at TalentHouse in order to build the new version of the company site using the Play Framework and Scala.
Tools used: Scala
, Akka
, Play Framework
, Javascript
, elasticsearch
, RabbitMQ
, PostgreSQL
Training course delivery
2020
- Company (financial products and services industry): Lightbend Akka for Java - Professional
- Company (railway industry): Lightbend Akka for Java - Expert
- Company (digital media measurement and analytics industry): Lightbend Scala Language - Professional
- Company (digital media measurement and analytics industry): Lightbend Akka for Scala - Professional
2019
- Company (financial products and services industry): Lightbend Akka for Java - Professional
- Lunatech, Netherlands: Lightbend Akka for Scala - Expert
2018
- WireCard, Germany: Lightbend Akka for Java - Professional (multiple times)
2017
- WireCard, Germany: Lightbend Akka for Java - Expert
- WireCard, Germany: Lightbend Akka for Java - Professional
- In cooperation with OpenForce: Lightbend Akka for Scala - Expert (public training course held in Vienna)
- In cooperation with Trifork: Lightbend Akka for Scala - Expert (public training at Scala Days 2017 Copenhagen)
2016
- DIMOCO, Austria: Lightbend Akka for Java - Professional
Entrepreneurship
09.2011 - 09.2014: Software Engineer and Co-founder, Delving
Delving provided solutions for cultural heritage organizations (museums, libraries, archives) by making their contact digitally discoverable online.
Tools used: Scala
, Akka
, Play Framework
, Javascript
, XML
, SOLR
, elasticsearch
, MongoDB
02.2011 - 08.2011: Tech Lead and Co-founder, Oxiras
Oxiras provided a SaaS solution for manual testing
Tools used: Scala
, Play Framework
, Javascript
, Chef
, SQL
Employment
11.2009 - 02.2011: Software Engineer, Digital Preservation AIT
As part of the Digital Preservation team at the Austrian Institute of Technology I took part in building software tools aiming at making digital assets accessible in the long term, such as:
- building workflow engines with automated plans for data format migration
- building tools to annotate digital media
- etc.
Tools used: Java
, Scala
, Adobe Flex
, CSS
, Javascript
, SQL
10.2008 - 10.2009: Software Engineer, IT delivery T-Mobile Austria
As part of the eBusiness & CRM team at T-Mobile Austria I worked on the maintenance and development of the Order Management System for mobile phone tariffs as well as on a project to build the next generation order management system (Oracle Siebel, IBM Master Data Management)
Tools used: Java
, SQL
, Oracle Siebel
07.2017 - 12.2007: Software Engineer, Human-Computer Interaction Lab, KTH Stockholm
As part of the team at the HCI lab at KTH I worked on software solutions for collaborative programming (see this paper)
Tools used: Java
, Servlet
, SQL
Research & Development
- Rust Raspberry PI LEDs
- Swift Rapid implementation
- building a 10000 node Akka Cluster with Rapid
- Adaptive accrual failure detector
- the Raspberry PI and Akka LEDs
Open-source project contributions
(see also GitHub)
- Contributions to Akka
- Contributions to Play Framework versions 1 and 2
- Committer for Makumba, a Web 1.0 framework for rapid application development
Publications
- I wrote a book about Reactive Web Applications (an estimated 230 days of work)
- as well as an article about writing the book
- many articles on this site
- various publications in magazines (JAX, etc.)
Talks
See the talks page (believe it or not, preparing talks and their delivery is quite some work in and by itself)
Tools
(this list is incomplete)
Programming Languages (in remembered order of first use starting at age 7)
Sinclair ZX81 basic
, Logo
, QuickBasic
, Turbo Basic
, Turbo Pascal
, Assembly
, HTML
, C
, Bash Scripting
, Java
, SQL
, Matlab
, PHP
, Perl
, Javascript
, Python
, Action Script
, Scala
, Groovy
, Typescript
, Go
, Swift
, Kotlin
, Rust
JVM frameworks and tooling
- profilers and memory analysis tools:
Async Profiler
,YourKit
,VisualVM
,TDA (Thread Dump Analyzer)
, etc. - reactive libraries and frameworks:
Akka
,Akka Cluster
,Akka HTTP
,Akka Streams
,Lagom
,Play Framework
,Kalix
,Vert.X
,RxJava
, etc. - java libraries and frameworks:
Servlet
,JSP
,JSF
,Struts
,Freemarker
,Drools
,Spring
, etc. - build tools:
Ant
,Maven
,Gradle
,SBT
, etc. - database access:
jOOQ
,Hibernate
,R2DBC
, etc.
Infrastructure
- basics:
Linux server administration
,bash scripting
, etc. - infrastructure automation tools:
Puppet
,Chef
,Terraform
- containers:
docker
,kubernetes
,nomad
- monitoring:
Nagios
,Monit
,Prometheus
,Datadog
, etc. - cloud providers:
AWS
,GCP
,Azure
Databases
MySQL
, Oracle
, PostgreSQL
, MongoDB
, DynamoDB
, Cassandra
, Redis
Data / Streaming
- large-scala data:
Hadoop
,Spark
- messaging:
Kafka
,RabbitMQ
- search:
elasticsearch
,SOLR
,Lucene