mirror of
https://github.com/apricote/apricote.de.git
synced 2026-01-13 12:51:00 +00:00
feat: initial content
This commit is contained in:
parent
aba4b1c795
commit
212a1151d5
17 changed files with 550 additions and 3 deletions
364
data/resume.yaml
Normal file
364
data/resume.yaml
Normal file
|
|
@ -0,0 +1,364 @@
|
|||
# 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:
|
||||
- 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:
|
||||
- AWS
|
||||
- OpenStack
|
||||
- Hetzner Cloud
|
||||
|
||||
- name: Databases
|
||||
level: advanced
|
||||
keywords:
|
||||
- Redis
|
||||
- PostgreSQL
|
||||
- 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
|
||||
- Ansible
|
||||
- Go
|
||||
- Python
|
||||
summary: ""
|
||||
- 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 am a reviewer of the project and actively contribute 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue