Skills and Expertise
In the past ten years of programming, I have dealt with a tremendous amount of programming languages and frameworks, from C to Ruby on Rails and from Java 6 to Python Django. As a result, I have figured out which languages and frameworks suit me best, and how I can achieve the best results to best meet the needs of the end user.
In recent years I have specialised in a few stacks, as can be read below. Although of course I have my preferences, I will always choose the best tool for the job, regardless of my perfonal preference.
I have worked both as a hands-on software engineer and as a technical lead, with responsibilities that go beyond just software development (software architecture, training developers with new technologies, determining the feature road map).
Working method
Methods I employ to deliver elegant, efficient, readable, understandable and maintainable code that adds value to a company and/or product.
- “Always choose the best tool for the job”
- Cloud and application structure using The Twelve-Factor App
- Software architecture through the principles of The Clean Architecture, DDD and Layered Architecture.
- Prevention of technical debt, short term and long term
- Everything (even infrastructure as code) in version control (Git) via GitFlow.
- Project management via SCRUM/Agile principle, without unnecessary meetings
- Bringing together Development, Security and Operations through DevSecOps and secure by design.
- Prioritise via the MoSCoW method and the 80 / 20 rule.
- Development on the basis of Test-Driven Development (TDD)
- Functional programming where possible
- SOLID, KISS and DRY code
- Versioning according to Semantic Versioning
- Use of Design Patterns to improve readability, performance and maintainability
- Adhere to the ACM Code of Ethics
- Use of free (open-source) software where possible
Technologies used
The technologies I’m currently working with the most and am most familiar with are in bold.
Game development
- Game: Unreal Engine 5 (C++, Blueprints)
- Backend: C++ (Unreal Engine, custom), C# (.NET 6), Go
Backend/server development
- Golang (Stdlib, Gin, Echo)
- Typescript (NodeJS, Deno)
- C# (.NET 6)
- Rust
Most often with PostgreSQL as the underlying database.
Front-end and mobile development
- React with Typescript (with Redux, Styled-Components, NextJS)
- React Native (Expo or bare)
- Progressive Web Apps
- Elm
Site Reliability Engineering and DevOps
- Linux (Arch, Ubuntu, CentOS)
- Docker and Kubernetes (Compose, Helm)
- Infrastructure and provisioning (Ansible, Terraform, Shell)
- CI/CD (GitLab, GitHub Actions, Azure DevOps, Jenkins)
- Systems integration
- Cloud (DigitalOcean, AWS, Azure)
- Nginx
Domain specific
- Compilers, parsers, DSLs: Golang, Rust, Haskell
- Systems programming: C, C++, Golang, Rust, Golang,
- Data science: SQL, Python, Javascript/Typescript
Learning
Currently, I spend around 20 hours per week on self-education. Some of it focused on computer science, most of it on other subjects (like philosophy, history and linguistics). You can read more on my learning page.
The old learning page is archived here.