machine learning · hardware · systems

Andreas Lindeman

Machine learning engineer with hardware roots. 14+ years experience across production systems and hobby projects. Built on clean code and robust programs.

I build

now
ML engineer @ Infinigrid · grid forecasting
study
M.Sc. Electronic Systems · NTNU · 2024–2026
bench
FPGAs · op-amps · CAD · CNNs · RAG
locn
63°25′ N · 10°23′ E · Trondheim, NO
selected work
01

Highlights

Three to look at first.

currently shipping 2026 · ongoing

Infinigrid

Production ML for the Norwegian power grid. Forecasting models that watch the electrical system and predict its risks before they bite. Time-series at grid scale, deployed.

  • time series
  • production ML
  • energy
  • PyTorch
last big project 2025 · shipped

Hydro Aluminium

Industrial optimisation for one of the world's largest aluminium producers. A mix of machine learning, classical optimisation, and the applied math that holds the two together.

  • optimisation
  • ML
  • industry
NDA · details on request
currently training 2026 · in the oven

ViT + LoRA

Adapting a pre-trained vision transformer to a new task with low-rank adapters in the attention layers. Half make-it-work, half an excuse to actually understand why it works.

  • ViT
  • LoRA
  • PyTorch
toolkit

The tools I work in, grouped by depth.

Expert in

  • Python Python
  • PyTorch PyTorch
  • TensorFlow TensorFlow
  • C++ C++
  • Fusion 360 Fusion 360
  • C#
  • pandas pandas
  • NumPy NumPy
  • CUDA CUDA
  • OpenCV OpenCV
  • SQL
  • Git Git
  • Hugging Face Hugging Face
  • Docker Docker
Also experienced in Show all 27 Hide
  • JavaScript JavaScript
  • TypeScript TypeScript
  • Go Go
  • scikit-learn scikit-learn
  • Databricks Databricks
  • Spark Spark
  • Node.js Node.js
  • Nuxt Nuxt
  • Vue Vue
  • Astro Astro
  • Flask Flask
  • FastAPI FastAPI
  • Unity Unity
  • Blender Blender
  • ESP32 ESP32
  • Arduino Arduino
  • Raspberry Pi Raspberry Pi
  • FPGA
  • KiCad KiCad
  • SolidWorks
  • Google Cloud Google Cloud
  • DigitalOcean DigitalOcean
  • Cloudflare Cloudflare
  • Arch Linux Arch Linux
  • Ubuntu Ubuntu
  • Debian Debian
  • Kali Linux Kali Linux
explore

Try it yourself

A few you can try right now, then the rest grouped by theme.

AI

More AI projects 9 projects

Game

More games 3 projects

Hardware

More hardware 19 projects
02

Timeline

Projects I have built and milestones along the way, from 2002 to now.

Size = significance. Tap a project for the deep-dive.

All projects

  1. Minecraft server Ran a public Minecraft server with my dad, port-forwarded from the house. First taste of command syntax, server uptime, and most of the English I knew before school taught me the rest.
  2. Coding class First school coding course at age nine. Visual programming in Scratch, which was a disappointment to my batch-script-trained nine-year-old self, but a useful lesson in how forgiving syntax lets the ideas come through.
  3. First .exe First real Python program compiled to .exe. A rotating ASCII skull animation, age eleven.
  4. Code teacher Six months as a kid-instructor for Lær Kidsa Koding's AKS programme, teaching Scratch to fourth-graders in Oslo public schools. The right age to learn that the word 'obvious' is doing a lot of work.
  5. first 3D printer First kit 3D printer, age thirteen. Entry point into hardware: paper-thin bed levelling, host-side slicing, and the discovery that mechanical bugs throw filament at the wall.
  6. First NN First deep self-learning neural net. Played the browser game Slope from extracted screen lines.
  7. 3D printer v2 Second kit printer, built with a friend. Bigger frame, beefier extruder, auto-bed-levelling, and dozens of benchies on the windowsill while I tuned each new filament in.
  8. Hexaglow Co-founded a youth enterprise selling configurable glowing wall panels. I wrote the Unity/C# companion app.
  9. LEGO plotter Python on a LEGO Mindstorms brick drove a two-axis drawing arm with a pen-lift. Mouse-controlled and surprisingly precise.
  10. PLED Second youth enterprise. Custom LED lighting with a spectrum tuned to support circadian rhythm: warmer at night, cooler in the day, on a schedule the user could override.
  11. Security research A year inside Windows internals, remote desktop, and auth systems. Formative.
  12. Network deep-dive A year teaching myself how networks really work. Captive portals, DNS, traffic shaping, auth.
  13. Color Polygraph A color polygraph trained on 20,000 survey clicks. Guessed age, gender, and mood from nothing but which swatches people picked.
  14. Panasound intern First industry job. A summer internship at Panasound, a Norwegian audio startup. Go on the backend, Nuxt on the frontend, and the first time my code had to survive another engineer reading it.
  15. Sound Flappy Flappy Bird controlled by your voice. Microphone loudness mapped to vertical velocity. A short game-jam piece from Torshus, unplayable on the bus.
  16. Tactic blobs Game-jam mobile game inspired by the Russian variant of tic-tac-toe. Six blobs per player, bigger sizes overtake smaller ones. The board looks one way and is secretly another.
  17. ASCII shader C++ game with a CUDA ASCII shader that picked the right glyph for each pixel patch.
  18. Blink shooter Python shooter where webcam-detected blinks flip you between two color dimensions.
  19. Minecraft 3D printer Converted any 3D model (including color and scans) into a generated set of Minecraft commands that build the model in-world.
  20. Shape-shift miner Python mining-and-upgrading game where the OS window itself is part of the game. Buy the right upgrades and the window sprouts new rectangles at odd angles, turning the play space into a shape no game has any business being.
  21. Cybersecurity lecture A community-week give-back: a lecture at a nearby high school on staying safe online, covering what data you leak, how it's collected, and how not to get caught out.
  22. Drawing plotter A broken 3D printer became a pen plotter for one-continuous-line drawings. PC-controlled, slow, hypnotic.
  23. AI content channels Automated pipeline scraping top Reddit content and publishing to YouTube, Instagram, TikTok.
  24. Oda — Norwegian voice assistant From-scratch Norwegian voice assistant on a Pi Zero W. Custom RNN wake-word trained on 30k clips, Whisper STT, offline LLM, ESP32 sensor mesh.
  25. Under-couch charging dock Four USB-C ports built into the living-room couch of a shared student flat. A 24V DC supply sized for full output on all four, in a Fusion 360-designed, 3D-printed housing with one on/off switch.
  26. A song hidden in a frog A homemade compression algorithm that squeezed the full ASCII version of a certain song into the low bits of a single frog photo. A tiny decompressor reads the hidden bits straight out of the image and plays the result back as a live terminal animation.
  27. Sine generator ESP32-controlled signal-level generator: analog gain stage, software-controlled DAC, potentiometer-set knob. ~26 dB gain, ~21 dB attenuation, single-line hot loop.
  28. elektra.io Designed and built the Elektra student association site from scratch.
  29. EV detector Detects if a car is electric. YOLOv8 for plate detection, custom CNN for plate reading, Statens vegvesen lookup.
  30. Freq doubler Analog frequency doubler. Diode for the non-linearity, two cascaded LC band-passes with an op-amp buffer between them. SDR ≈ 21 dB at 2525 → 5050 Hz.
  31. Teknisk Komité Founded and still lead the technical committee in Elektra, NTNU's electronics-student association. We maintain elektra.io and ship the internal tooling the rest of the association runs on.
  32. Append Consulting Eighteen months at Append, a small AI consultancy in Oslo. Shipped four production ML projects for Norwegian public-sector and industrial clients. Most days, the model was the smallest part of the job.
  33. Tesla-seat presence sensor → smart lights Wired the seat-occupancy sensor from a Tesla seat (repurposed as an office chair) to an ESP32. Sitting down turns the room red.
  34. Tone remover An analog-electronics assignment asked for a band-stop circuit to remove a single tone from a recording. I solved it in software with spectrograms instead. The right kind of cheating, depending on who you ask.
  35. Traffic light A road-grade traffic light retrofitted with a Raspberry Pi, a Flask web UI, and a sound-reactive mode. Bass goes red, treble goes green. The party mode ended up being the headline feature.
  36. 4G RC car RC car streaming two camera feeds over 4G with a custom UDP hole-punching protocol for low-latency P2P video without static IPs.
  37. Anti-alias filter 6th-order Butterworth anti-alias filter for a 3 kHz ADC. Three cascaded Sallen-Key sections, with weird capacitance values built from parallel combinations of standard parts.
  38. Analog buffer BC547 emitter-follower buffer between a 5.6 kΩ source and a 680 Ω load. Designed, biased, tuned with a potentiometer to hit the predicted 90% gain at 1 kHz.
  39. FPGA dice Seven-LED dice on a Lattice ICE40 FPGA. Button-gated clock, 3-bit counter wrapping 1→6, LED logic derived from a truth table. First hands-on FPGA project, built in IceStudio.
  40. Freq doubler v2 Second pass at the analog frequency doubler. Same topology, much more careful. Measured inductors, hand-built capacitor values, Analog Discovery for the SDR estimate. SDR ≈ 26.7 dB at 3725 → 7450 Hz.
  41. ML competition Designed and led an internal Kaggle-style ML competition between NTNU students and Hydro engineers. Wrote the brief, prepared the dataset, set the scoring metric, and learned that the metric is the whole project.
  42. FPGA noise filter FPGA-generated white noise (LFSR) shaped by a Delyiannis-Friend active band-pass filter into a tonal output around 920 Hz. Digital pseudo-random source, analog band-limiter, audible result.
  43. Omega clock A clock modded with LEDs and an ESP32, made as a host-gift for a student-association party. Day-long build.
  44. Op-amp Operational amplifier built from discrete BC547/BC557 transistors: differential pair, current mirror, emitter-follower output. Characterised open-loop (A ≈ 400) and with ×10 negative feedback (A ≈ 9.7, THD < 0.3%).
  45. Ligmax Custom boat platform with full sensor suite, dual cameras, buoy detection, custom hull, and integrated electronics.
  46. Infinigrid Building AI that watches the electrical power grid and predicts its risks.
  47. ViT + LoRA Adapting a pretrained vision transformer to a new task using LoRA, with low-rank adapters in the attention layers. Half make-it-work, half an excuse to actually understand why it works.

The timeline only shows some of the projects I've finished. Like most engineers, starting something new is often more exciting than finishing the old, and a lot of what I know lives in the projects that never quite got there.

The FPGA design that synthesised but I never tested on hardware. The audio plugin I abandoned the moment I'd learned the trick. The model I trained until the loss curve told me what I needed, then walked away from. They're not failures. They're the experiments that taught the techniques that ended up in the projects that did ship.

  • ·shelved hardware prototypes
  • ·half-trained models
  • ·abandoned DSP experiments
  • ·weekend hacks that taught me a library
  • ·code that worked but wasn't worth shipping
03

Notes

Who, what, and why the two halves fit together.

Andreas Lindeman
Trondheim · 63°N

I started writing code at nine. My father is a software developer, and he handed it over early. The first thing I remember being mad about was a coding class that turned out to be drag-and-drop blocks instead of a real keyboard.

Today the work has three loops. Machine learning for the Norwegian public sector, industry, and now Infinigrid, a startup building forecasting models for the electrical grid. Full-stack sharpened in Go and Nuxt: backends, dashboards, pipelines. Hardware: soldered audio front-ends, FPGA filters, a kit-built 3D printer that eventually drew its own portrait.

The two halves feed each other. The CNN that classifies an analog signal is only as good as the op-amp in front of the ADC; the FPGA that filters a transducer only matters if there's a pipeline downstream. I like working where that boundary lives.

04

Bench

Tools by where they sit in the chain.

  1. 01

    Sense

    From physical signal to clean data.

    • Op-amps · LM358, OPAx tier
    • FPGAs · digital filters, dice
    • PCBs · soldering · audio front-ends
    • Pandas · PySpark
    • Databricks pipelines
  2. 02

    Model

    Where the learning happens.

    • PyTorch · day-to-day
    • TensorFlow · legacy + Keras
    • Custom CNNs · YOLOv8
    • Embeddings · RAG
    • Time-series forecasting
  3. 03

    Build

    Backends, infra, the unglamorous spine.

    • Python · C++ · Go
    • Flask · PostgreSQL
    • Docker · AWS
    • Git · CI
    • SQL · schema design
  4. 04

    Ship

    The surface a user actually touches.

    • Nuxt · Vue
    • TypeScript · HTML/CSS
    • Unity (C#) · Swift
    • Fusion 360 · Blender
    • 3D printing · CAD

currently going deeper on grid-scale forecastingcausal inferencecontrol systems

05

Contact

Open inbox.

Happy to talk research, hardware, or grid-scale ML, especially where the signal-chain crosses the model boundary.