Gerben Put

ONLINE

NL

GerbenPut

Software developer

I build software that flies, travels and runs.

By day on systems at the Dutch Tax Administration. By night on my own projects: from the first design to the server they run on.

See the work

Work

Four projects I built and still run.

All four are live. Open the site itself, or read how it was made.

  1. 01DroneAIA pre-flight briefing for your drone
  2. 02AtlasMy travel journal, as postcards
  3. 03AI AcademieLearn how AI works, by doing it
  4. 04RealWorld IcelandAll of Iceland at 1:1 scale in Minecraft

01 / 04

DroneAI

A pre-flight briefing for your drone

Pick a place and your drone, and see at a glance whether you can fly: a single score from 0 to 100, the best flight windows for the next 48 hours and an outlook for the week.

Built with Next.js 16, TypeScript, React, Open-Meteo, satellite.js, Leaflet, Docker

02 / 04

Atlas

My travel journal, as postcards

A personal travel journal: every trip a postcard with photos, a story and a pin on a spinning globe. With its own editor for adding and editing trips.

Built with Node.js, Express, TypeScript, PostgreSQL, MinIO, sharp, D3, Leaflet, Docker

03 / 04

AI Academie

Learn how AI works, by doing it

Three interactive learning paths for my AI workshops: one for developers, one for managers and one for scrum masters. Every topic has five levels from bronze to diamond, with real homework to do in your own job.

Built with Next.js 16, TypeScript, React, PostgreSQL, MCP, nginx, Resend, Docker

04 / 04

RealWorld Iceland

All of Iceland at 1:1 scale in Minecraft

A Minecraft server with all of Iceland rebuilt metre by metre from satellite data: elevation, ground colours, rivers, waterfalls and buildings. With a custom plugin that generates the world as you play.

Built with Python, NumPy, pyproj, OpenStreetMap, Java 25, Paper, Node.js, Docker

Side quests

Apps for my own phone

Five Android apps for my own phone, designed and built by me. And a Discord bot for our friend group.

  1. Energietracker

    01 · Android

    Energietracker

    Hourly energy prices: when to switch on.

    Today & tomorrow, per hour · Cheapest time blocks

    Kotlin · Jetpack Compose

  2. Uitgaventracker

    02 · Android

    Uitgaventracker

    Log spending in two taps, per category.

    Categories in two taps · Day, week, month

    Kotlin · Jetpack Compose

  3. Boodschappen

    03 · Android

    Boodschappen

    A grocery list, grouped by category.

    Grouped by category · Frequent items in one tap

    Kotlin · Jetpack Compose

  4. Spaarpotjes

    04 · Android

    Spaarpotjes

    Savings split into virtual pots, no bank link.

    Pots, goals & history · Optional Google Drive sync

    React · Capacitor

  5. DroneVault

    05 · Android

    DroneVault

    Drone certificates, offline on your phone.

    Fully offline, no permissions · PDF & PNG viewer

    Android

  6. 06 · Discord

    Poro

    A Discord bot for our friend group.

    daily question · birthdays · quotes
    date polls · outings · LoL teams
    casino with fake coins only

    Node.js · discord.js · PostgreSQL

Method

AI as a tool. I set the rules.

I write the spec first: what it must do, and when it is done. An agent drafts a first version, I refine it, and the tests decide. Nothing ships without human review. And when it has to be, I simply write it by hand.

spec.mdYOU WRITE

  1. # Feature: Password reset
  2. ## Requirements
  3. - User requests a reset link
  4. - Link expires after 15 minutes
  5. - Max 3 requests per hour
  6. ## Acceptance
  7. - Expired link → 410 Gone
  8. - 4th request → 429 Too Many

PasswordResetService.javaAGENT DRAFTS · I REFINE

  1. @Service
  2. public class PasswordResetService {
  3. ResetLink request(User u) {
  4. if (limiter.count(u, HOUR) >= 3)
  5. throw new TooManyRequests(u);
  6. return links.issue(u, ofMinutes(15));
  7. }
  8. User redeem(Token t) {
  9. if (t.isExpired()) throw new Gone(t);
  10. return t.user();
  11. }
  12. }
Tests 8/8 passing ✓ all acceptance criteria met

HUMAN REVIEW: APPROVED

Hosting

From my laptop to your screen in two minutes.

No hosting package, but my own server that I set up and secured myself. Every push to GitHub is built and rolled out automatically, in containers behind HTTPS. Databases run separately, with a backup to off-site storage every night.

  1. git pushcode to GitHub
  2. Coolifybuilds the image
  3. Dockeron my server
  4. HTTPSlive on the web
Deploys
automatic on every push
Backups
nightly, off-site
Rollback
in ~20 seconds

Pinged just now

  • …

Record

Where I work

After my BSc in Computer Science at Rotterdam University of Applied Sciences I worked at ICT Group on business-critical systems for clients such as ProRail, Maasvlakte 2 and several Dutch water authorities. Since 2025 I’ve been working at the Dutch Tax Administration on the applications for motor vehicle tax.

Outside work I build things for myself, around my hobbies of drones and travel. I like doing the whole journey: design, code and the server it runs on.

  1. 2025–nowDutch Tax AdministrationSoftware developer · motor vehicle taxApplications for motor vehicle tax in an Agile team, on systems that serve millions of taxpayers.
  2. 2023–2025ICT GroupSoftware developerBusiness-critical systems for Maasvlakte 2, ProRail and water authorities in Rotterdam, Graafstroom and Limburg.
  3. 2023Rotterdam University of Applied SciencesBSc Computer ScienceSoftware engineering, databases, networking and project-based work.
Backend
Java · C# · Node.js · TypeScript · Python · PHP
Frontend
Angular · Next.js · React · HTML & CSS
Data & infra
PostgreSQL · Docker · Kubernetes · Linux · Coolify · GitHub
Design
Figma · Photoshop · Illustrator
Mobile
Kotlin · Jetpack Compose · React · Capacitor

GerbenPut

Software developer at the Dutch Tax Administration, and in the evenings on my own projects.

gerbenput.com