fn main() -> Result<(), Box<dyn Error>> {

Feiko
Wielsma

Programming Instructor

I teach C, C++, Python and Rust in Utrecht, usually to small groups and often to people who were convinced they weren't "technical enough". Before that I spent six years writing embedded software, so my examples tend to involve hardware that can actually break.

Feiko Wielsma

Dropped out of game dev. Now I teach the scary parts.

I started out studying Game Technology at Utrecht University and left after a year and a half. At nineteen, the maths, the logic and the functional programming scared me off. These days they're my favourite things to teach, which I'm choosing to call character development.

I switched to Technische Informatica at Hogeschool Utrecht and landed in embedded software: first at OPNT, an Amsterdam startup doing precision time synchronisation, then at E2M Technologies, whose motion simulators throw grown adults around for a living.

Wherever I was, I ended up being the one explaining things: to classmates, to strangers in PC-building Discord servers, to colleagues at the whiteboard. At some point it made more sense to do it on purpose.

Over the past year most of my own code has been written with an agent in the loop: Claude Code, Codex, Cursor, Antigravity, whichever one is winning that month. It changed how I work more than what I teach. Somebody still has to read the diff and spot when the model is confidently wrong, and I'd like that somebody to be you.

#[derive(Debug, Clone)]
struct FeikoConfig
location
Utrecht, Netherlands 🇳🇱
employer
SpiralTrain
group_size
Small enough to learn every name
pair_programmer
Usually an LLM
agents_in_rotation
Claude Code, Codex, Cursor, Antigravity
side_quest
Always one running. Ask.
last_updated
let history: Vec<Role> = vec![
  1. 2025
    Programming Instructor
  2. 2021
    Embedded Software Engineer
    E2M Technologies · motion simulators
  3. 2019
    Embedded Software Engineer
    OPNT · precision time synchronisation

What I teach, and what I build with

use lang::*;

  • Python
  • C
  • C++
  • C#
  • Java
  • Rust
  • Perl
  • HTML/CSS
  • JavaScript
  • SQL

use devops::*;

  • Git
  • GitLab
  • Docker
  • Linux/Bash
  • OpenShift

use ai::agents::*;

  • Claude Code
  • Codex
  • Cursor
  • Antigravity

use ai::stack::*;

  • LangChain
  • TensorFlow
  • n8n
  • ChatGPT
  • Gemini
  • Claude

use embedded::*;

  • Raspberry Pi
  • Arduino
  • Wireless/IoT
  • Real-time OS

How I teach

Small groups, on purpose

I teach through SpiralTrain, in groups of eight or fewer. That's enough people for a good argument about semicolons, and few enough that nobody quietly drowns in the back row.

≤ 8 students

Built around your actual problem

Python scripts, C pointers, C# apps, the Rust borrow checker. If the group needs something else by Wednesday, the plan changes by Wednesday.

multi-lang

Fundamentals, now with agents

Claude Code will happily write your for-loop. It won't notice it leaks memory. I show where these tools save you hours, where they quietly cost you days, and which fundamentals you need to tell the difference.

Why I do this

I've been explaining things since university, mostly unprompted. The moment something clicks for someone is still the best part of my week.

origin story

Off the clock

Kesong

4 kg Peekapoo: Pekingese, poodle, and a street dog nobody will own up to. The name is Chinese for croissant.

WoW raider

Raiding since before it was retro. Healer main, and there's a raid hidden somewhere on this page.

Virtual pilot

Microsoft Flight Simulator, departing Schiphol by preference. Landings are negotiable.

Tiki cocktails

Rum, citrus, orgeat. The holy trinity.

Watch collector

Fake ones. The vibe, not the vault.

Agent wrangler

Usually one coding agent writing, another reviewing, and me deciding which one is wrong.

Hobby of the week

Right now it's probably soldering something. Ask again next week.

PC builder

Went from answering build questions on Discord to preaching cable management in person.

Utrecht, NL

Bike lanes > highways. Stroopwafels > everything.

Arch, btw

Yes, I had to mention it. I like knowing what every package on my machine is doing there.

Polyglot-ish

Dutch and English, some German and French, beginner Chinese. Mostly dog-related vocabulary so far.

Straight from the course evaluations

Open an issue

Questions about a course, an idea for a collaboration, or strong opinions about the borrow checker or fake Rolexes. All welcome, and I read everything.