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