Andreas Wachowski • Waterloostr. 9 • 22769 Hamburg
mail@andreas-wachowski.de • 0151/1162 7140

CV

Projects

MySQL Update

The client's database had to be updated from MySQL (actually Percona XtraDB Cluster) v5.6 to v8. I initiated the project, served as central contact person for all stakeholders throughout, and made sure that the actual DB update (planned and executed by a system administrator) was well embedded into the overall update strategy, which included ensuring that Prometheus metrics, Grafana dashboards, deployment processes, any DB configurations (Slow Query Logs etc.) and of course the application itself still runs. I also adjusted our Gitlab CI pipelines to work against the new DB clusters.

Technologies

  • MySQL 5, MySQL 8
  • Ruby on Rails

Tooling

  • AWS
  • Prometheus
  • Grafana
  • Gitlab
  • Confluence
  • JIRA

Better observability with Prometheus/Grafana

An effort to setup Prometheus/Grafana was made before my time, but bore little fruit. I increased the value of Prometheus and Grafana to the team by 1) noticing, analysing and fixing fundamental setup bugs leading to wrong metrics (prometheus-mmap, passenger_max_preloader_idle_time = 0), 2) defining various dashboards and alerts (e.g. email bounces, Sidekiq jobs, memory consumption, MySQL threads), 3) disseminating knowledge (e.g., how do Prometheus counters work, how to setup alerts), 4) highlighting non-intuitive adverse effects (cache stampedes) due to improper metrics setup

Technologies

  • Prometheus
  • Yabeda
  • Ruby on Rails
  • Passenger

MySQL Slow Query Logs

A year-end process was massively too slow, queueing up thousands of sidekiq jobs over the holidays. I identified the problem as a missing index on a DB table, a quick fix which resolved the issue immediately. Subsequently, proposed to enable the slow query log and, based on the output of pt-query-digest, drove a multi-month effort of fixing various slow queries.

Technologies

  • MySQL

Sentry Update

The Sentry server for the client was updated from v9 to v21.9. I configured a new project in Sentry (instead of three projects for three different environments), adjusted the connectivity in backend and frontend, and implemented proper source map uploads in the frontend. I also configured a Slack and JIRA integration, interfacing with the system administrators where necessary.

Technologies

  • Sentry

Insurance Software

present

I am part of a team that customizes the "sum.cumo insurance platform" (SCIP) for a particular client. In particular, this installation manages vehicle insurance contracts for many thousands of customers. The Ruby on Rails based software has an extensive contract life cycle model, a full-fledged dunning component, and other abstractions for highly complex domain processes.

Technologies

  • Ruby on Rails
  • Apollo GraphQL/Vue

Tooling

  • AWS
  • Prometheus
  • Grafana
  • Gitlab
  • Confluence
  • JIRA

E-Commerce Shop

Still with the same team as in the previous two projects, we are taking over responsibility for developing and operating an e-commerce shop recently developed by an external agency. The system was hosted and developed completely outside the customer's own infrastructure, so we are currently migrating the system to the internal infrastructure. I am in a backend role and together with one other developer, I planned the migration of the frontend system. This entailed migrating the Gitlab pipeline to Concourse, establishing a new permissioning context (using Terraform pull requests against the company's central AWS infrastructure), setting up Grafana. In particular, I pioneered a way for deploying from Concourse with Helm3 to EKS (by researching and tweaking a Concourse resource). Since we collaborate closely with the team at the agency, I am also involved in a lot of onboarding and coordination (in both directions). As part of re-implementing the middleware in Kotlin (from PHP), I implemented the Shopify integration using the Shopify GraphQL API.

Technologies

  • Kubernetes/Helm/EKS/AWS
  • Kotlin
  • PHP
  • Apollo GraphQL
  • Next.js
  • Concourse
  • Grafana
  • Makaira
  • Shopify

Tooling

  • Gitlab
  • Rundeck
  • Zabbix
  • Graylog

Sales application (mobile) (React/TypeScript, Python)

Initiated by the same team as the previous project, we created an application for a major optical retailer inspiring customers who are looking for sunglasses. The app targets mobile devices. My initial focus was on conceptualising a recommender system and on performing data analysis tasks, as well as onboarding a data scientist. I then spent several months working on both frontend and backend, according to project priorities. Later the focus shifted to machine-learning backend work (e.g., feature engineering, neural network modeling).

Technologies

  • React 16
  • create-react-app 3
  • Pandas
  • scikit-learn
  • matplotlib
  • FastAPI
  • SQLAlchemy
  • Alembic
  • Jupyter Notebook
  • Tensorflow
  • Keras

Tooling

  • eslint
  • prettier
  • react-testing-library
  • pytest
  • Black
  • mypy
  • Jupytext
  • Kafka
  • Grafana
  • Docker
  • Helm
  • Kubernetes
  • Github

Sales application (React/Redux, redux-saga)

Work on an inhouse sales application (a product catalogue) for a major optical retailer. Rolled-out to hundreds of offices throughout 2019. Team of 5 developers, 1 UX designer, 1 product owner, 1 business analyst. Backend implemented with Kotlin/Kafka/Postgres.

Technologies

  • React 16
  • redux
  • redux-saga
  • normalizr
  • react-virtualized
  • react-transition-group
  • axios
  • create-react-app 2
  • i18next

Tooling

  • eslint
  • prettier
  • jest
  • enzyme
  • unleash
  • Docker
  • Github
  • ElasticSearch
  • Grafana
  • TestCafe

Social Media Marketing application (React/redux, ApolloGraphQL)

Creation of a professional, collaborative social media marketing platform. Team of 4 developers, 1 UX designer, 1 product owner. Ruby on Rails / GraphQL backend.

Technologies

  • React 16
  • Apollo GraphQL
  • WebSocket
  • Semantic UI
  • airbnb/react-dates
  • slatejs (rich text editor framework)
  • redux
  • Ruby on Rails 5.2
  • graphql-ruby

Tooling

  • eslint
  • prettier
  • jest
  • enzyme
  • Docker
  • CircleCI
  • Github

Payment workflow (React/Redux, Stripe)

3 months

Creation of a single-page application for a subscription checkout workflow. Integration into a Ruby on Rails API project via webpacker. Extension of backend API to handle Stripe API calls.

Technologies

  • React 16.2
  • redux
  • redux-thunk
  • Stripe Elements
  • Stripe API
  • React Router 4
  • reactstrap
  • normalizr
  • axios

Tooling

  • eslint
  • prettier
  • jest
  • enzyme
  • CircleCI
  • Github

Full stack development on a large Rails deployment

Work as full-stack developer on a large-scale Ruby on Rails deployment, consisting of >10 applications, Docker-based environment, microservices. Initially, focus on some backend tasks. In March, together with another developer, pioneered the integration of React to realize a complicated media upload component.

Technologies

  • Ruby on Rails
  • React
  • React-DND
  • rspec
  • capybara/poltergeist
  • jest
  • enzyme

Tooling

  • yarn
  • webpack
  • Gitlab
  • Docker
  • JIRA

Blog/RSS Parser Framework as part of a Marketing application

4 weeks

Given a URL of a blog (of unknown underlying CMS), parse and extract the blog information.

Technologies

  • Ruby on Rails 5 (API-only)
  • json:api
  • Grape
  • Grape-Swagger
  • RSpec
  • FactoryGirl

Tooling

  • Github
  • Capistrano
  • Rubocop
  • JIRA

Internal Tasks

2 months

Support on various projects, worked through React classes from reacttraining.com (see "Online Classes")

CMS Adapter (Ruby on Rails 5 API / Rails Active Jobs)

4 months

Test-driven development of a CMS adapter from scratch. The CMS allows to upload a file tree via rsync. The system built consists of 1) a REST API front-end (JSON-API conformant) which queues change requests to the CMS asynchronously, and 2) a rake-task/worker which executes those change requests regularly, creating a local database and serializing it to a file structure which is then rsynced to the CMS.

Technologies

  • Ruby on Rails 5 (API-only)
  • json:api
  • Grape
  • Grape-Swagger
  • RoR Active Job
  • RSpec
  • FactoryGirl

Tooling

  • Gitlab
  • Capistrano
  • Rubocop
  • Jenkins
  • JIRA

Responsive web front-end rebuild

3 months

Complete revamp of a front-end for responsiveness. Introduction of scss-lint. Team of two developers.

Technologies

  • SCSS
  • Bootstrap 3
  • HAML
  • CoffeeScript

Tooling

  • scss-lint
  • Gitlab
  • Capistrano
  • Jenkins
  • JIRA

Trip planner (JavaScript/Redux SPA)

2 weeks

Improvements to a marketing site featuring a trip planning application for an automotive company, implemented as a single page application in JavaScript/Redux. Fully responsive across iOS- and Android-devices and all major desktop browsers. Team of two developers.

Technologies

  • JavaScript 6
  • Redux
  • TripAdvisor API
  • SASS/BEM
  • CSS Animations
  • HTML
  • npm

Tooling

  • Github
  • npm
  • Basecamp

Shop system (Ruby on Rails/Spree)

2 months

Participated in the development of an e-commerce system for a startup. Full-stack development (HTML/CSS, CoffeeScript, Ruby on Rails). Also took over some project management responsibilities when the project manager fell ill. Team of five developers, one project manager.

Technologies

  • CoffeeScript
  • Ruby on Rails 4.2
  • RSpec
  • Spree 3.0

Tooling

  • Gitlab
  • Capistrano
  • JIRA
  • docker
  • cloud66

Dealer search (Google Maps JavaScript API)

4 weeks

Implementation of a dealer search component for an audio equipment provider.

Technologies

  • Javascript
  • CoffeeScript
  • Google JavaScript APIs (Maps/Places/Autocomplete)
  • SASS
  • HAML
  • Ruby on Rails 4.2
  • Alchemy CMS 3.0

Tooling

  • Gitlab
  • npm
  • JIRA

Employment

sum.cumo Sapiens GmbH Software Developer (Tech Lead since 08/2021)

present
Full Stack Web Development with a focus on Ruby on Rails.
As a tech lead, I try to focus on solving challenges that have a multiplier effect on the team, as well as keeping an eye on the important but not urgent problems. I further try to instill pragmatism, agile values and high code quality within the team.
Hamburg

AKRA GmbH Senior Software Developer

Full Stack Web Development with a focus on JavaScript/React (and recently Python), working as a consultant for various clients.
Hamburg

Studies: Front-end web development, data mining

  • Front-end Web Developer Nanodegree (Udacity)
  • Data Mining Specialization (Coursera)
  • (partially) iOS Development (Stanford CS193p)
Hamburg

Sabbatical

  • music theory, ear training, jazz piano (Neue JazzSchool München)
  • 3D-modeling with Blender (architectural views for a bathroom redecoration)
Munich

XING Events GmbH VP Technology

Led the technology department (software development, IT, QA, project management) of XING Events GmbH.
Munich

XING AG Director QA

Created XING's software quality assurance team and scaled it to 25 employees.
Hamburg

XING AG Manager Engineering

Ruby on Rails Development. One of the first developers at XING, participated in the build and launch of the XING marketplace (now known as the jobs functionality).
Hamburg

Reuters AG / Odyssey Asset Management Systems Lead Software Engineer

Development on a portfolio management system. Primarily C++. Also Java, DocBook, Solaris.
Hamburg

Morgan Stanley Associate, Technology Division

Coded on a securities lending platform. Primarily C++ on Solaris. Also Perl, VBA.
London, UK

Morgan Stanley Associate, Technology Division

Corporate trainee program. Industrial-strength C++, Java, Perl, UNIX.
New York, NY

Education

HECTOR School of Engineering and Management M. Sc.

Information Engineering
Thesis: "A Recommender System for Threads in Discussion Forums on Social Networks"
Karlsruhe

ENSIMAG Diplôme d'Ingénieur, M. Sc.

Computer Science
Joint degree with Universität Karlsruhe (TH)
Grenoble, France

Universität Karlsruhe (TH) Dipl.-Inform.

Computer Science
Joint degree with ENSIMAG. Universität Karlsruhe (TH) has since renamed itself to Karlsruhe Institute of Technology (KIT)
Karlsruhe

University of Northern Colorado

Computer Science
Exchange year. Computer science and speech communication.
Greeley, CO

Carl-von-Ossietzky Universität Oldenburg

Computer Science
“Vordiplom” in computer science, minor mathematics.
Oldenburg

Online Classes

Stanford University — Machine Learning (Coursera)

certificate

Available since 2011, this is one of the courses that was part of the initial offerings on Coursera. Held by Andrew Ng, this course teaches fundamental machine learning algorithms. Instead of showing how to use pre-programmed algorithms from libraries (as in the Udacity specialization), this course focuses on the mathematical motivations and intuitions and lets the learner implement the algorithms in Octave/MatLab themselves.

Introduction to Machine Learning with Tensorflow Nanodegree (Udacity)

certificate

This program is an introductory course to supervised, unsupervised, and deep learning ML techniques and gives the opportunity to apply the gained knowledge with Python's scikit-learn, Tensorflow and other essential packages (e.g. numpy, pandas, matplotlib, seaborn, Keras).

A detailed syllabus can be found here. Below are links to the Jupyter Notebooks that were the result of the projects associated with each topic.

Duke University — Statistics with R Specialization (Coursera)

The topic of the specialization is data wrangling and visualization for exploratory data analyses with R (dplyr, ggplot2, shiny), gaining a conceptual understanding of (frequentist and Bayesian) statistical inference, as well as correctly and effectively taking and communicating data-based decisions.

University of Minnesota — Recommender Systems Specialization (Coursera)

With this specialization, I follow up on my 2010 master thesis ("A Recommender System for Threads in Discussion Forums on Social Networks").

The specialization covers all the fundamental techniques in recommender systems, from non-personalized and project-association recommenders through content-based and collaborative techniques. Exercises are first spreadsheet-based, second (as part of the honors track) programmed in Java 8 using the LensKit open source toolkit.

Front-End Web Developer Nanodegree (Udacity)

The Nanodegree teaches front-end web development via a series of projects (see Nanodegree Structure). Projects are professionally reviewed and commented upon. Apart from the basics, it addresses responsiveness, CSS frameworks (Bootstrap), JavaScript MVC frameworks, build pipelines with grunt/gulp, and performance optimization (critical rendering path, achieving 60fps).

The source code for all my projects can be found on Github.

University of Illinois at Urbana-Champaign — Data Mining Specialization (Coursera)

This specialization teaches the basic concepts and principles in data mining and visualization. It introduces algorithms for mining structured and unstructured data (e.g. association rules, clustering, etc.). Practical work includes exposure to the MeTA ModErn Text Analysis C++ framework and a data visualization tool (e.g., Tableau).

Due to an exclusive focus on Udacity’s Nanodegree in 09/2015, I did not participate in the last class of this specialization, the Data Mining Capstone