apricote.de/data/resume.yaml

393 lines
13 KiB
YAML

# yaml-language-server: $schema=https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json
basics:
name: Julian Tölle
label: Infrastructure & Backend
image: https://www.gravatar.com/avatar/bd55c8a01a6dd038f86c8e9fd60674b5?s=800
email: julian.toelle97@gmail.com
location:
city: Bielefeld
countryCode: Germany
profiles:
- network: GitHub
username: apricote
url: https://github.com/apricote
- network: LinkedIn
username: Julian Tölle
url: https://www.linkedin.com/in/julian-toelle/
- network: Twitch
username: Apricote4
url: https://twitch.tv/apricote4
- network: XING
username: Julian_Toelle3
url: https://www.xing.com/profile/Julian_Toelle3/cv
skills:
- name: Kubernetes
level: expert
keywords:
- Cluster API
- Operators
- GitOps
- name: Node.js
level: expert
keywords:
- Typescript
- Nest.js
- name: CI/CD
level: advanced
keywords:
- GitHub Actions
- GitLab CI
- Jenkins
- name: Infrastructure as Code
level: advanced
keywords:
- Terraform
- Ansible
- name: Backend Development
level: advanced
keywords:
- REST APIs
- name: Cloud
level: advanced
keywords:
- Hetzner Cloud
- AWS
- OpenStack
- name: Databases
level: advanced
keywords:
- PostgreSQL
- Redis
- MySQL
- etcd
- name: Go
level: intermediate
keywords:
- kubebuilder
work:
- name: Hetzner Cloud GmbH
position: Software Developer Open Source Integrations
website: https://hetzner.com/cloud
startDate: "2022-11"
keywords:
- Kubernetes
- Terraform
- Go
- Ansible
- Python
- Developer Experience
- Rest API
- GitHub Actions
summary: |
Hetzner Cloud is a prominent European cloud provider offering virtual
machines and other cloud infrastructure. As a member of the Integrations
team, I am responsible for maintaining and enhancing our suite of Open
Source Integrations, including the Go SDK, Python SDK, CLI, Terraform
Provider, Ansible Collection, Kubernetes Cloud Controller Manager, and
csi-driver.
Collaborating closely with other teams at Hetzner Cloud, I contribute to
the development and integration of new features into our Open Source
Integrations. This entails working closely with my co-workers to provide
early feedback for new APIs, to make sure that they are consistent and
easy to understand for our customers. In addition to supporting new
features, I address customer issues, providing timely resolutions and
implementing fixes and enhancements. I also interact with our community to
get their changes merged and implemented.
Overall, my role at Hetzner Cloud allows me to combine my passion for Open
Source technologies with my expertise in cloud infrastructure. By
continuously enhancing our Open Source Integrations, I help in empowering
customers to leverage the full potential of Hetzner Cloud's cloud
infrastructure solutions.
highlights:
- Driving initiatives to keep our API easy to understand
- name: teuto.net Netzdienste GmbH
position: Cloud Engineer
website: https://teuto.net/
startDate: "2021-04"
endDate: "2022-09"
keywords:
- Kubernetes
- Cluster API
- OpenStack
- GitLab CI
- GitOps
- Prometheus & Alertmanager
- Go
- kubebuilder
- Ansible
summary: |-
teuto.net provides public and private clouds based on OpenStack,
managed Kubernetes on top of these clouds, and additional services like
consulting or training. Within teuto.net, I worked on the Kubernetes team,
where I was responsible for the next iteration of our managed Kubernetes
offering.
At the beginning of 2021, teuto.net decided to replace the existing custom
tooling for managing Kubernetes clusters with Cluster API and Cluster API
Provider OpenStack. I authored a proposal for the new implementation and
implemented it over the following months. This included GitLab CI
pipelines for building VM images, writing templates for clusters, an
Ansible playbook to bootstrap new Cluster API Management Cluster,
extensive internal documentation and runbooks, Prometheus alerting, an E2E
test pipeline, and a custom Kubernetes operator to tie it all together
into one coherent API.
As I always liked to work upstream, and a stable foundation is necessary
for this offering, I started contributing to Cluster API Provider and
became a reviewer for the project, participating in the office hours and
wherever else help was needed.
When not working on new features, I packaged newly released Kubernetes
versions for our platform and rolled out the changes to our managed
clusters while communicating with our customers about upcoming changes and
maintenance windows.
For 3 months in 2021, I lead an initiative to improve alert fatigue for
our on-call engineers, by analyzing the pains they were experiencing and
then applying a consistent labeling strategy on the alerts, as well as
filtering unwanted alerts in Alertmanager and Prometheus.
highlights:
- Tech Lead for managed Kubernetes offering
- Upstream contributions to Cluster API Provider OpenStack
- name: narando GmbH
position: Lead Developer
website: https://about.narando.com/
startDate: "2017-07"
endDate: "2021-02"
keywords:
- AWS
- Node.js
- Gitlab CI
- Terraform
- Nest.js
- Typescript
summary: |
narando provides a crowd-working platform where texts such as magazine
articles and blog posts are recorded by professional narrators and
subsequently published to websites and podcast platforms such as Spotify.
It is a small company, so I wore many hats, often simultaneously, in the 5
years I worked there.
As the Lead Developer, I was responsible for the 3-person dev team. In
that role, I planned the implementation of new features and oversaw our
bi-weekly planning sessions. I introduced modern development practices
such as merge requests and taught the other engineers to get them to excel
at their tasks.
In my role as a Backend Engineer, I planned and implemented a new version
of the production and publishing platforms that power narando, as the
previous proof of concept was hitting its limits. This new platform was
built using multiple Node.js services for different use-cases such as core
production, file handling, post-production, and publishing feeds.
As the Cloud Infrastructure Engineer, I planned and implemented our
infrastructure in AWS. Most of our services were deployed as containers to
ECS and were backed by RDS MySQL. I also built an event queue for our
services on top of SNS+SQS. Everything was configured by Terraform and by
using common templates, new services could be launched in less than a day.
To improve our development velocity and reduce toil, I build automated
pipelines for our services to run tests and linting for each commit
merge request and to automatically release and deploy the services once
they are merged. During the first year we got started with Jenkins but
then switched to GitLab CI because Jenkins needed too much maintenance and
we liked the Gitlab CI syntax better.
highlights:
- Built out the infrastructure on AWS using mostly container technology (ECS)
- Planned and implemented a Node.js microservice architecture
- Introduced code reviews to improve the code quality and learn from each other
- name: TrackCode GmbH
position: Software Engineer Infrastructure & Backend
website: https://trackcode.de/
startDate: "2016-12"
endDate: "2020-04"
keywords:
- Kubernetes
- Backend
- CI/CD
- Node.js
- Jenkins
summary: |
TrackCode is a Transport Management System for the last-mile delivery
logistics companies, importing shipment data directly from the customers'
systems and exporting scan events and signatures back to the logistics
networks.
When I joined TrackCode, I initially focused on the Node.js backend
software, which was talking to the Web and Android Apps through a JSON
API and persisting data in MySQL and MongoDB.
Later on, my role at TrackCode shifted and I started working more on
infrastructure and DevOps topics. I planned and implemented a new
development platform for our growing team on top of Kubernetes with
Rancher. To sustainably learn from past issues and avoid being waken up by
alerts, I established a postmortem culture, which helped us fully
explore incidents and solve the root causes.
To improve our confidence and velocity during development and deployment,
I implemented the full CI/CD lifecycle for all of our services, using
Jenkins, Unit Tests, and finally an automated release to Kubernetes.
To help us debug any incidents and investigate for customer support
tickets, we used Splunk, but this proved to be too expensive in the long
run. I developed our alternative monitoring and observability stack using
Graylog, Grafana, and Prometheus. Using these, I also established SLOs for
one of our core metrics, "time to export events".
highlights:
- Planned and implemented a new development platform on top of Kubernetes
- Established a structured process to analyze incidents (postmortems)
- Implemented a full CI/CD lifecycle for all services (Jenkins, Tests, Release to Kubernetes)
- name: narando GmbH
position: Working student
website: https://about.narando.com/
startDate: "2016-04"
endDate: "2017-06"
keywords:
- Ruby on Rails
- Android
summary: |-
While finishing my Abitur I started working at narando and started
maintaining the initial proof of concept that was built using Rails.
I was also responsible for our Android app and added offline support to it.
languages:
- language: German
fluency: Native speaker
- language: English
fluency: Fluent (C2)
interests:
- name: Video Games
keywords:
- RPG
- Strategy
- name: Pen & Paper RPGs
keywords:
- Fantasy
- DnD 5e
- name: Music
keywords:
- Rock
- Metal
- Techno
- Festivals & Concerts
references: []
education:
- institution: Paderborn University
studyType: Computer Science
startDate: "2016-10"
endDate: "2016-11"
summary: |
As a child and teenager, I always knew that I wanted to study Computer
Science. But once I started my studies, I realized that the actual
real-life work as a software engineer was far more interesting to me. I
dropped out after one month and instead started working at a second
startup.
- institution: Ev. Gymnasium Werther
studyType: Abitur
startDate: "2008"
endDate: "2016-07-01"
gpa: "2.2"
courses:
- LK Mathematik
- LK Physik
projects:
- name: Listory
summary: |
Self-hosted app to track all your Spotify listens and show interesting
insights that I develop to fill my own needs.
startDate: 2020-01
url: https://github.com/apricote/Listory
type: application
keywords:
- Node.js
- Nest.js
- Helm
- React
- name: Streaming on Twitch
summary: |
When I still have creative energy left at the end of the week, I like to
stream software development on Twitch. I mostly stream my work on Listory,
but in December 2021 I streamed my Advent of Code attempts every day.
startDate: 2020-10
url: https://twitch.tv/apricote4
type: presentation
keywords:
- Go
- Node.js
- AV production
- Public Talking
- name: cluster-api-provider-openstack
summary: |
I was a reviewer of the project and actively contributed new features.
startDate: 2022-03
endDate: 2022-09
url: https://sigs.k8s.io/cluster-api-provider-openstack
type: application
keywords:
- Cluster API
- OpenStack
- Go
- Kubernetes
- name: "@narando/nest-xray"
summary: |
A package that integrates AWS X-Ray tracing with the Nest.js framework.
Initially developed by me while I was working at narando.
startDate: 2019-10
endDate: 2020-10
url: https://github.com/narando/nest-xray
keywords:
- Node.js
- Nest.js
- Tracing
- AWS
- name: hcloud-csi-driver
summary: |
Kubernetes CSI Driver to integrate with Hetzner Cloud Volumes.
Based on the DigitalOcean CSI driver. Archived since Hetzner Cloud
released an official driver.
startDate: 2018-10
endDate: 2019-09
url: https://github.com/apricote/hcloud-csi-driver
type: application
keywords:
- Go
- Kubernetes
volunteer: []
awards: []
publications:
- name: Various Presentations
website: https://apricote.github.io/presentations/
summary: |
Multiple presentations at local meetups from 2017 to 2019.
Topics included: Kubebuilder, CI/CD practices at my employer,
JavaScript/Node.js patterns and practices