In the past ten years of programming, I have dealt with an enormous 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 preference.
Unless the project requires otherwise, I program according to Bytecode’s Coding Standards. The Coding Standards can be found here.
Since about a year, I fill the role of Technical Lead at Bytecode. This means that I only spend a small part of my time writing code myself, because I am more involved with software architecture, the design of the code at a higher level, performing code reviews and guiding the developers at Bytecode. Of course, there are still plenty of times when I do write code myself.
Technologies I use 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
- Use of free (open-source) software where possible
The techniques I’m currently working with the most are in bold.
- Golang (Gin, Echo)
- Typescript (NodeJS, Express, Deno)
- Kotlin/Java (Spring Boot)
With mostly PostgreSQL as the underlying database.
Front-end and mobile development
- React+Typescript (with Redux, Styled-Components, NextJS)
- React Native (Expo)
- Progressive Web Apps
Site Reliability Engineering and DevOps
- Linux (Arch, Ubuntu, CentOS)
- Infrastructure and provisioning (Ansible, Terraform, Shell)
- Systems integration
- Docker and Kubernetes
- Cloud (DigitalOcean, AWS)
- Compilers, parsers, DSLs: Golang, Rust, Haskell
- Systems programming: Rust, Golang, C
Currently, I spend around 20 hours per week on self-education. Most of it focussed on computer science, some of it on other subjects (like linguistics or philosophy). You can read more on my learning page.
The old learning page is archived here.