DJIM.IODjim MolenkampIndustrial software · DjimDesign

Work

Two kinds of work, given equal space: industrial and enterprise engineering I’ve done for clients, and products DjimDesign builds with agents. Every case below is real. Where I can’t share something, I’ve left it out rather than guess.

A · INDUSTRIALIndustrial & engineering

Tata Steel: one platform for Secondary Steelmaking

Freelance · Senior Full-Stack Software Engineer / Operational Technology Engineer, lead developer · IJmuiden · Feb 2023 – present

Problem
Secondary Steelmaking at Tata Steel runs through five machine paths, and each one was run by its own legacy software package. The plant network is air-gapped, so every release had to be put in place by hand.
What I built
As lead developer I’m building one application for the whole Secondary Steelmaking process, bringing all five machine paths together. It connects to the plant’s automation over OPC UA and models schedules and activities as a hierarchy. Alongside it I designed how to containerise and deploy in an air-gapped Windows Server 2025 environment: a phased adoption plan, Harbor as an on-prem container registry, and Windows authentication for containerised .NET. I also built the Azure DevOps pipelines that deliver it.
How
C# .NET, Angular 22 (signals, standalone, zoneless), OPC UA, Oracle and PostgreSQL with Dapper. Azure DevOps, Harbor, Docker and Podman, deploying over WinRM and SMB.
Outcome
Manual releases have been replaced by repeatable offline deployments. Five legacy packages are being brought together into one application.

KLM: BlueLabs

Full-Stack Developer / DevOps / Technology Innovator · KLM’s Industry 4.0 innovation lab · Amsterdam · Nov 2021 – Jan 2023

Problem
The Engine Shop’s industrial machines couldn’t be watched or managed from one place, and the shop floor still ran on paper documents.
What I built
  • Connected Machines: an IoT Edge device that links the Engine Shop’s machines to Azure IoT Hub over OPC UA. It reads and writes machine parameters and regularly backs up machine files and settings.
  • Electronic shelf labels: e-ink displays to replace paper on the shop floor, with indoor positioning over BLE, Narrowband and WiFi fingerprinting, integrated into KLM’s existing software.
  • Also: a smart-office sensor platform with live dashboards, control apps for robot assistants (Android/Kotlin), and an extension of the Schiphol digital twin, integrating Azure Digital Twins and porting it to Unreal.
How
TypeScript and Angular, Go, OPC UA, MQTT, Azure IoT Hub and Event Hubs, edge computing, Node/Express, Prisma, RabbitMQ, SignalR and GraphQL.
Outcome
The Engine Shop’s machines can now be monitored centrally and in real time.

KLM: Digital Studio

Full-Stack Developer / Technology Innovator · aviation, machine learning and digital twins · Amsterdam · Dec 2018 – Apr 2020

Problem
KLM wanted to see what was happening on the apron and in the terminals as it happened: how many containers and carts were on a loading dock, where baggage was, and where crowds would build up.
What I built
  • Smart cameras: a neural network running on NVIDIA Jetson edge hardware that counts containers and carts on a loading dock from one ordinary camera. It was later extended with licence plate recognition to follow baggage across the airport.
  • Digital twin of Schiphol: a real-time 3D model of the airport that combines data from several APIs (aircraft positions, maintenance logs, ground vehicles, terminal and baggage crowding) with a passenger transfer simulation to predict crowding.
  • Also: the Connected Machines platform for the Engine Shop with RFID part tracking, and firmware work (OTA updates, MQTT, a Grafana plugin) for an in-house IoT device.
How
Python, OpenCV and object detection on NVIDIA Jetson; C# and Unity with WebGL; Azure Event Hubs and Cosmos DB; C++ on ESP-IDF.

Remia: modernising a food plant’s IT

Full-Stack Software Developer / DevOps Engineer · food industry, Industry 4.0 · Apr 2020 – Apr 2021

Problem
Remia’s business software ran on an old 2E/Plex/AS400 landscape, and the production lines had no easy way to share their PLC and sensor data.
What I built
  • A new Angular and NestJS framework in an Nx monorepo, opening up the DB2 data through a secured GraphQL API (attribute-based access with Casbin, Keycloak, Active Directory sign-in).
  • The CI/CD pipeline, from scratch: on-prem Git, Docker and NPM repositories, plus test, acceptance and production environments on demand.
  • An easy-to-configure OPC UA client (via Kepware) that reads PLC and sensor data from the production lines.
  • A mobile barcode app that checks the right labels and sleeves are on the product in production.
How
TypeScript, Angular, NestJS, GraphQL, DB2/AS400, Docker, Jenkins and Bamboo, Keycloak, OPC UA, Raspberry Pi, Cordova on Android.
Outcome
The OPC client led to better product quality, fewer errors and a view of the whole production process.

BinckBank: testing and sign-in for an online broker

Developer · online broker, financial sector · Dec 2016 – Mar 2018

Problem
Testing the stock exchange gateway was repetitive manual work every release, and Binck’s applications each had their own sign-in.
What I built
An automatic test tool for the exchange gateway, and single sign-on across Binck’s applications using ForgeRock OpenAM, with custom modules to fit the existing systems. I also built and extended Binck’s public REST API for third parties, moved Oracle stored procedures to a C#/NHibernate architecture, and implemented securities lending in the trading platform.
How
C#, Selenium, MSTest, Java, OpenAM, Maven, Docker, SQL, NHibernate, Delphi.
Outcome
The test tool saves around 40 hours of manual testing per release cycle.

Earlier engineering work

  • GLS · Full-Stack .NET Developer · parcel logistics · Mar – Dec 2018. Rebuilt the slow shipper Track & Trace site (Angular, ASP.NET Web API, ElasticSearch), so searching for parcels is fast again, with more search and sort options and analytics on how people search. Also designed a self-service framework where customers create their own user accounts and set permissions.
  • Kadaster · Full-Stack Software Developer / DevOps Engineer · government, GIS · Apr – Nov 2021. Rebuilt an application for looking up land registry information (a new Angular map interface on C# .NET 5 and Oracle), and brought Kubernetes to the team: set up the cluster, containerised existing projects and automated deployments from Jenkins.

Aerospace roots

  • TU Delft: BSc and MSc in Aerospace Engineering. MSc in Control & Simulation, with a thesis on reinforcement-learning-based controller selection.
  • Publication: “Intelligent Controller Selection for Aggressive Quadrotor Manoeuvring”, AIAA 2017-1068, 2017.
  • Avy · Aeronaut · 2014–2016. Early engineer at an Amsterdam/Berlin drone startup accepted into the European Space Agency incubator programme, working on a new kind of autonomous flight technology.
  • MediaCopters.nl · Founder · 2013–2016. Aerial film and photography with small remote-controlled aircraft, plus custom-built drones and advice on drone applications.
  • Universidad de Concepción · graduate internship · 2013–2014. Built open-source, cross-platform ground control station hardware and software for multicopters.
B · DJIMDESIGNBuilt with agents

bench: the workbench for AI agents

DjimDesign internal tool · private, login required

Problem
Agents are good at writing code, but an agent loose on your machine with push access is a liability. I wanted agents working on real repositories in a way that was isolated and always ended with a human reviewing the result.
What was built
A workbench that points Claude Code agents at real repositories. Each task gets one agent, one throwaway container with a fresh clone, and one draft pull request. Goals handle open-ended work: a planner proposes a definition of done, a person approves it, and agents iterate on one branch until the criteria are met. Automations run work on a schedule. When an agent reaches a real decision point it can ask a human, and the question arrives on Djim’s phone with two to four options.
How
A Next.js app for the UI and API, a single long-lived worker that owns every container (Podman), Postgres, and CI that runs the full test suite against a real database. Deploys refuse commits whose checks aren’t green. The rule built into the design: nothing reaches main on its own. Pull requests wait for review, goal plans wait for approval, and deploys wait for someone to press the button.
Outcome
Bench is used to build bench, and it’s how the team ships to client projects, one8slice included.

The office: watch the team work

DjimDesign · live at office.djim.io

Problem
A team of agents works out of sight. You can read logs, but you can’t glance across the room and see who’s busy.
What was built
A pixel-art office where every agent has its own desk and look. Agents sit down and work when they have a session running, and go idle when they’re done. The office reads the agents’ real sessions straight from the server, so it shows what the team is doing right now, not a loop.
How
A small Node.js server that reads the agents’ session state, and a pixel-art front end drawn in the browser.
Outcome
It’s public and live. Open it and you’ll see the team as it is at that moment.
Open the office →

one8slice: ordering, till and kitchen in one system

Client · one8slice, Amsterdam · live since 14 July 2026 · one8slice.com

Problem
A pizza shop needs online ordering, a till, a kitchen screen and payments that all agree with each other, especially on busy days when pickup slots fill up.
What was built
  • Customer side: a menu with customisation, pickup timeslots that cap orders per slot and release them when payments expire, launch-day “drops” with a countdown, iDEAL and card payments, order tracking, gift cards, a waiting list, and a public allergen page covering all 14 EU allergens.
  • Shop side: a tablet till for walk-in and phone orders with split payments and push-to-PIN-terminal, a kitchen display, a public wait board, and a Vestaboard display that shows the customer’s name when the order is ready.
  • In progress: a phone-first screen for waiters taking table orders, built by an agent on bench.
How
Bun, Next.js 15 and React 19, PostgreSQL with Drizzle, Pay.nl and SumUp, Resend for email, Sentry, and unit and integration tests in CI on every push.
Outcome
Live for one8slice’s customers since 14 July 2026.

Familiar Forest: a festival platform

Client · Familiar Forest festival, 11–14 September 2026 · familiarforest.nl

Problem
A festival runs on many moving parts: registration, a ticket raffle, payments, resale, crew rosters, the door, and a noise permit with limits that have to be measured and recorded.
What was built
The whole site, by Djim and the agent team:
  • Registration and accounts, Mollie payments and QR tickets.
  • A ticket raffle with winner emails and payment deadlines.
  • A resale marketplace (“Ticketruil”) with a queue, and money paths hardened so a refund can never delete the wrong ticket.
  • A crew system: shift assignment, rosters, a printable volunteer book, and bulk shift emails paced to the mail provider’s limits.
  • Ticketscan, a door scanner that runs on a phone.
  • Live sound monitoring: a calibrated measurement microphone feeds Room EQ Wizard on a laptop at the measuring point, and a bridge posts readings every second. The admin page shows the level live and as history, in the units the permit actually names (LAeq, LCeq, LAFmax). A public /sound page shows the current level, and a Telegram alert fires if measurement stops.
How
Next.js, PostgreSQL with Prisma, NextAuth, Mollie and Resend. Correctness first: all decibel maths lives in one tested module, because averaging decibels the naive way gives a plausible number that understates peaks, and that’s the wrong direction for a permit record.
Outcome
One platform for the festival, from the ticket raffle to the door and the sound record, built for the 11–14 September 2026 edition.

Also built

  • The Pack: route voting for a motor club. Members propose rides and vote on them. → motor.djim.io
  • Property Rater: an internal tool for tracking property listings (Nook’s territory).
  • Where it started: Mission Control. The team’s first task board, built by Neo: a Linear-style kanban with a live feed of what every agent was doing. Bench’s board has since taken over most of its job.

Need something like this?

For industrial or full-stack engineering, hire me. For a product build, talk to DjimDesign. Same inbox. Open to freelance work from Q1 2027.

Get in touch →

Have a system that needs to work, or something you want built?

I take on freelance industrial and full-stack work, and DjimDesign takes on product builds. Open to freelance work from Q1 2027. Tell me what you’re working on.