Last update: 17.10.2022

The following is an attempt at giving an overview of my working experience:

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)

Testimonial

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)

Testimonial

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)

Testimonial

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)

Testimonial

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)

Testimonial

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)

Testimonial

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)

Testimonial

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)

Testimonial

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)

Testimonial

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

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

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