Johannes Leppäkorpi

Embedded software and on-device machine learning

MSc Computer & Embedded Systems Engineering, TU Delft

Portrait of Johannes Leppäkorpi

MSc student in Computer & Embedded Systems Engineering at TU Delft (expected July 2028), with a BSc in Data Science and Artificial Intelligence from Leiden University (GPA 8.01/10, Honours). I build real-time, multithreaded and networked software in C++ and Python, and I work on embedded systems and on-device machine learning.

Keywords: Embedded systems, C++, Python, Rust, Real-time systems, Machine learning

1. Education

MSc Computer & Embedded Systems Engineering, TU Delft

09/2026 to 07/2028 (expected), Delft, Netherlands

Focus on software engineering, hardware engineering and systems engineering.

  • Key courses: Real-Time Systems, Processor Design Project, Computer Arithmetic, High-Performance and AI Architectures, Reconfigurable Computing Design, Hardware Dependability.

BSc Data Science and Artificial Intelligence, Leiden University

09/2023 to 07/2026, Leiden, Netherlands

GPA 8.01/10 (top 10%), Honours student. Focus on algorithm design, machine learning, reinforcement learning and scalable computation.

  • Key courses: Algorithms & Data Structures, Software Engineering (agile team project for an external client), Software Development (airline ticketing system with a full test suite and CI/CD lifecycle), Essentials of Computer Systems.

Minor in Applied Mathematics (Finance), TU Delft

09/2025 to 01/2026, Delft, Netherlands

Quantitative finance and mathematical modelling: mathematical finance (stochastics, Itô calculus, Brownian motion), time series, option valuation methods (Monte Carlo with variance reduction, finite difference methods) and risk management.

2. Experience

Software Developer and Data Platform Engineer, OpenML [1]

From 02/2026, Leiden, Netherlands

  • Designed and implemented a high-throughput dataset upload interface in Python, built for 100+ concurrent users uploading datasets of 100 GB or more through chunked transfer, with a multithreaded design for throughput and stability under load.
  • Built backend data ingestion pipelines and validation logic, with automated quality checks and Croissant metadata for each dataset.
  • Benchmarked pipeline correctness and system performance across large datasets.
  • Maintained GitHub Actions CI/CD pipelines with automated test suites and code quality checks, and wrote the system documentation.
  • Gathered requirements from stakeholders and communicated technical decisions in an agile (Scrum) team.
Architecture of the OpenML dataset upload platform The React web app asks the FastAPI backend, behind a Caddy proxy, for a short-lived upload contract, then uploads the bytes straight to the quarantine prefix of S3-compatible storage, in parts for large files. After the browser confirms, the backend checks the object metadata and ZIP manifest, has ClamAV scan a temporary copy and promotes clean files to the ready prefix. State is kept in PostgreSQL, and a GitHub issue is opened so experts can review the dataset before it is published. Web app React 19 · Vite · TanStack Query 1 3 Caddy reverse proxy FastAPI backend Python · SQLAlchemy · Alembic GitHub OAuth, JWT sessions refresh token families upload contracts, validation dataset lifecycle states Croissant metadata S3 object storage MinIO locally, S3 in production quarantine/ ready/<id>/ 5 2 ClamAV clamd malware scan 4 PostgreSQL 16 users, tokens, datasets, status GitHub external · sign-in, roles, review issues 6 1 The browser asks the API for a short-lived upload contract. 2 Bytes go straight to quarantine/, in parts for large files. 3 The browser confirms; the API checks object metadata and the ZIP manifest. 4 ClamAV scans a temporary copy of every file. 5 Clean files move to ready/; anything else stays in quarantine. 6 A GitHub issue opens so experts can review the dataset before it is published.
How a dataset upload moves through the platform. The dashed box is an external service.

Lead Developer and Systems Administrator, U.S. Ambassador's Entrepreneurial Challenge

2019 to 2020, Helsinki, Finland

  • Designed and deployed a MERN stack web application that won first place nationally.
  • Architected a REST API connecting the frontend to a live ML inference backend.
  • Deployed on AWS inside a VPC with private subnets and security group containment, and managed all cloud infrastructure end to end.

3. Projects

Multi-Objective Stochastic Electric Vehicle Routing with Time Windows (bachelor thesis) [2]

2026, Python, grade 9.0/10 (top 3%)

A simheuristic for routing electric delivery vehicles when traffic congestion, breakdowns and battery depletion can disrupt a plan, written with Yingjie Fan. Routes are evolved with NSGA-II and each candidate is scored by Monte Carlo simulation over sampled disruptions, using a physics-based energy model. On the rc101_21 benchmark instance, the knee point of the Pareto front used 26 to 73% less energy and 18 to 53% less recourse cost than a deterministic VRPy baseline as the instance grew from 10 to 100 customers. Time-window violations rose instead, by an amount that depends on customer geometry and disruption risk. Published in the ICCL 2026 proceedings (Springer, Lecture Notes in Computer Science).

3D scatter plot of energy, time-window penalty and resilience cost. The stochastic Pareto front lies below the deterministic baseline, marked with a cross.
Pareto front for 100 customers (rc101_21) against the deterministic baseline, marked with a cross. p_breakdown = 0.05 is the chance that a vehicle breaks down on any one leg of its route; sigma = 0.15 is the spread of the log-normal traffic slowdown applied to each leg's travel time; customers is the number of delivery stops; MC = 500 is the number of Monte Carlo disruption scenarios averaged to score each candidate plan.

High-performance N-body physics simulator [3]

2024, C++, OpenGL, OpenCL

A real-time simulator processing 100k+ objects at 60+ FPS, using CPU-to-GPU offloading via OpenCL, a thread pool and a spatial grid for collision checks. Rendered with OpenGL and GLFW, with an ImGui control panel.

Hundreds of coloured bodies with motion trails orbiting and colliding with a large central mass
Bodies falling into orbit around a massive object.

XIAO ESP32S3 Sense dashcam and live streamer [4]

2026, C++, FreeRTOS, Python

Firmware that turns the XIAO ESP32S3 Sense into an always-on dashcam, extending Seeed's camera web server example. The board serves a 1600 x 1200 live stream while a FreeRTOS task pinned to core 0, away from the web server, writes every frame to the SD card in NTP-timestamped hourly folders. Frame buffer count and JPEG quality are tuned so full-resolution capture fits in PSRAM without allocation failures. A Python companion recognises the card when it is plugged in, remembers which frames it has already processed and stitches each hour into an MP4 with FFmpeg.

auto-belt, Factorio belt auto-routing [5]

2026, Lua

A Factorio 2.0 mod that routes a conveyor belt between two points with hierarchical A* (HPA*). It prefers fewer turns, crosses obstacles with underground belts and spreads the search and construction over game ticks under a fixed work budget, so long routes never stall the game.

Two Factorio screenshots of a lake. Left: a thin preview line runs around the top and right of the lake. Right: the same route placed as belt ghosts, crossing the inlet at the top underground.
Left: route preview around a lake. Right: the placed belt, crossing the inlet at the top underground.

Flight search engine backend [6]

2023, TypeScript, PostgreSQL

The backend of a flight booking site. An Express and TypeScript REST API searches live offers through the Amadeus API, re-prices the chosen offer and stores bookings and passengers in PostgreSQL through Prisma. Users sign in with JWT access and refresh tokens over bcrypt-hashed passwords, and every request is validated with Joi and rate limited. The API and database run as Docker containers, with Jest unit and integration tests and CI/CD.

Architecture of the flight search engine A Next.js web app calls an Express API over REST with a bearer token. Every request passes helmet, CORS, rate limiting, compression and logging, then Joi validation and, on protected routes, JWT authentication. The auth routes store users and refresh tokens in PostgreSQL through Prisma. The flight routes search and re-price offers through the external Amadeus API and save bookings and passengers in PostgreSQL. Web app Next.js 14, React · search, login, booking REST + JSON, Bearer access token Express API TypeScript · Docker container every request helmet CORS rate limit 1000 / 15 min compression Winston logs per route Joi validation JWT auth (protected routes) /authregister · login · refresh · logout /flightssearch · book · cancel · pay users, bcrypt hashes, refresh tokens bookings search, re-price offer PostgreSQL 17 Docker container, Prisma ORM User · RefreshToken Booking · Passenger Amadeus API external · OAuth 2.0 flight offers search offer price confirmation
How a request moves through the system. The dashed box is an external service.

4. Skills

LanguagesPython (professional), C++, Rust, C, TypeScript, SQL, Verilog.
Data and MLPandas, NumPy, scikit-learn, PyTorch, TensorFlow.
ToolsDocker, Linux, Git, AWS, GitHub Actions, OpenCL, PostgreSQL.
PracticesCI/CD, Scrum, test-driven development, multithreaded and network (TCP/IP) programming, system documentation.
QuantitativeStochastic modelling, Monte Carlo simulation, finite difference methods, time series analysis.

5. Awards and languages

  • Honours student, Leiden University Honours Academy.
  • First place, U.S. Ambassador's Entrepreneurial Challenge, Helsinki (2019).
  • Speaker, Oxford University Debate Tournament (2023). Adjudicator, Sciences Po Reims Debate Tournament (2024).
  • Languages: Finnish (native), English (native).

Links

  1. [1]Johannes Leppäkorpi. Software Developer and Data Platform Engineer, OpenML. Source code: github.com/Johk3/OpenML-CDI.
  2. [2]Johannes Leppäkorpi. Multi-Objective Stochastic Electric Vehicle Routing with Time Windows (bachelor thesis). Source data: github.com/Johk3/MOS-EVRPTW-Data. Paper (Springer): link.springer.com/book/9783032407313.
  3. [3]Johannes Leppäkorpi. High-performance N-body physics simulator. Source code: github.com/Johk3/physik.
  4. [4]Johannes Leppäkorpi. XIAO ESP32S3 Sense dashcam and live streamer. Source code: github.com/Johk3/XIAO-ESP32S3-Sense-Livestream-Platform.
  5. [5]Johannes Leppäkorpi. auto-belt, Factorio belt auto-routing. Source code: github.com/Johk3/auto-belt.
  6. [6]Johannes Leppäkorpi. Flight search engine backend. Source code: github.com/Johk3/MadoffAirlines.