Skills en Expertise

In de afgelopen tien jaar waarin ik heb geprogrammeerd, heb ik met enorm veel programmeertalen en frameworks te maken gehad, van C tot Ruby en van Java tot Python. Hierdoor heb ik uitgevonden welke talen en frameworks mij het best liggen en waar ik het beste en liefste mee werk.

De afgelopen jaren heb ik me gespecialiseerd in enkele stacks, zoals hieronder te lezen. Hoewel ik natuurlijk mijn voorkeuren heb, zal ik altijd the best tool for the job kiezen, onafhankelijk van mijn voorkeur.

Ik programmeer, tenzij het project anders vereist, volgens de Coding Standards van Bytecode, die ik voor het grootste deel heb opgesteld. De Coding Standards zijn hier te vinden.

De technieken waar ik momenteel het meeste mee werk zijn in bold.

Web-development

  • NodeJS/Javascript (ES6+, Typescript, Jest)
  • ReactJS (icm. Redux) en Angular 2+
  • Python, (Django, Flask)
  • Elixir (Phoenix)
  • Rust (Rocket, Diesel)
  • C# (.Net/.Net Core)
  • PHP (WordPress, Laravel, Magento 2)

Mobile development

  • React Native (Expo)
  • Progressive Web Apps
  • Ionic 2+
  • Flutter
  • Accelerated Mobile Pages

Databases

  • PostgreSQL
  • MySQL
  • NoSQL (MongoDB)
  • GraphQL

Devops

  • Linux (Arch, Ubuntu, CentOS)
  • Docker (Compose)
  • Ansible
  • CI/CD (GitLab, Travis)
  • Terraform
  • Cloud (DigitalOcean, AWS)
  • Kubernetes

Werkwijze

  • “Always choose the best tool for the job”
  • Architectuur aan de hand van The Twelve-Factor App
  • Alles (behalve secrets) in versiebeheer (Git)
  • Projectmanagement via SCRUM/Agile principe
  • Samenbrengen van Development, Security en Operations via DevSecOps
  • Prioritiseren via de MoSCoW methode
  • Ontwikkeling obv. Test-Driven Development (TDD)
  • Functional programming waar mogelijk
  • SOLID en DRY code
  • Versioning volgens Semantic Versioning
  • Voorkomen van technical debt, short term én long term
  • Gebruik van vrije (open-source) software waar mogelijk




Persoonlijke ontwikkeling

Als developer is het belangrijk om altijd te blijven leren en om ervoor te zorgen dat je altijd bij blijft met de nieuwste technieken. Om deze reden besteed ik één dag per week aan zelf-educatie.

Waar ik momenteel mee bezig ben:
  • Low-level web programming met Rust (icm Rocket)
  • Lezen van The Art of Computer Programming, deel 1 tot 4A (Donald Knuth)
  • Lezen van The Lean Startup, Start With Why en soortgelijke boeken
Waar ik de afgelopen tijd mee bezig ben geweest (meest noemenswaardig):
  • Functioneel programmeren met Elixir (+Phoenix framework)
  • Verdiepen in geavanceerde web security en het beveiligen van applicaties
  • Lezen van Clean Code, The Clean Coder en Clean Architecture (Robert C. Martin)
  • Lezen van The C Programming Language (Kernighan, Ritchie)
  • Kubernetes in production
Wat ik nog wil gaan leren (meest noemenswaardig):
  • Functioneel front-end web development met Elm, ReasonML of ClosureScript
  • WebAssembly
  • Artificial Intelligence en Neural Networks met Tensorflow




Ontwikkelomgeving

Ik krijg vaak vragen van anderen hoe mijn lokale ontwikkelomgeving eruit ziet en hoe alles is geconfigureerd. Om deze reden heb ik alles kort samengevat op deze pagina, voor wie benieuwd is.

Operating system

Voor het grootste deel van de tijd maak ik gebruik van Arch Linux, of Mac OS. Het liefst zou ik alles binnen Arch Linux doen, alleen is dat helaas niet haalbaar omdat ik regelmatig iOS apps moet compilen, waarvoor Mac OS nodig is.

Arch config

Binnen Arch Linux maak ik gebruik van dwm als window manager, Ranger als file manager en ZSH met Oh My ZSH binnen ST (Simple Terminal) als terminal.

Code editors

Ik maak gebruik van twee verschillende code editors: NeoVim (een betere en backwards-compatible fork van Vim) en Visual Studio Code (afgekort: VS Code).

Mijn voorkeur gaat uit naar werken met NeoVim, maar voor veel projecten maak ik toch gebruik van VS Code, omdat dit meer IDE functionaliteiten biedt, waardoor ik productiever kan zijn als ik werk in grote codebases.

Binnen zowel mijn code editors als mijn terminal maak ik gebruik van de Monokai kleuren, omdat ik deze als erg duidelijk en prettig ervaar.

Dotfiles (configbestanden)

Mijn “dotfiles” zijn te vinden in mijn dotfiles repository op GitHub.

Omdat Arch Linux opzetten toch wel een redelijk arbeidsintensief klusje kan zijn, en ik graag dingen automatiseer, heb ik op basis van Luke Smith’s scripts dit proces geautomatiseerd. Deze “bootstrapping scripts” zijn te vinden in de LARBS respository op mijn GitHub profiel.

Voel je vrij om mijn dotfiles te gebruiken en aan te passen voor jezelf!

Vragen of hulp nodig?

Ik ben erg gepassioneerd over hoe ik alles heb geconfigureerd, en ik help anderen graag. Mocht je vragen hebben, mail me gerust!