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.
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.
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.
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.
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.
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.
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.
An introduction to React.js and the React ecosystem. Consists of video courses,
reading assignments and, in particular, a series of assignments to create a
React application. The results are on Github, see for example https://github.com/andreaswachowski/reactjs-fundamentals.
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.
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