Electronics engineer (embedded systems) · AI systems developer · IT consultant since 2005 Gothenburg, Sweden · edwardfalk.com · LinkedIn · edward@falkdata.se
I build systems where hardware, software and AI meet: a voice AI living inside a 1991 Macintosh, a wind-plant simulator for the Swedish power grid, and the self-hosted agent tooling I use to run many AI-assisted projects in parallel. I've run my own IT company, Falk Data, for 20 years, and in 2026 I finished a two-year degree as an electronics engineer in embedded systems at Yrgo.
What I bring: hands-on electronics (oscilloscope, soldering iron, datasheets from the 1980s), embedded Linux and microcontrollers, and a lot of practical experience making AI models do reliable work with tools, memory and review, not just chat.
Embedded Linux · voice AI · retro hardware · my degree project · project page →
A Raspberry Pi 5 inside a 1991 Macintosh Classic II drives the original 9" monochrome CRT (512×342, 1-bit) directly from its GPIO pins. You talk to the AI assistant Happy Mac through a 1950s Swedish Ericofon handset. He controls the apps and games on screen, answers in Swedish or English, and can read live traffic from a passive network tap. He can watch but never interfere.
- Drives the CRT's analog board from the Pi's GPIO (DPI) with a custom device-tree overlay for the Mac's video timing, every signal checked on an oscilloscope before touching the tube (timings, public)
- Interfaces a carbon-microphone handset through a modified USB sound card, including tracking down a hidden +23.8 dB sidetone inside the sound-card chip that no software could see
- Voice agent with tool use: it opens apps, remembers people between conversations, looks things up, and can be interrupted mid-sentence (the echo threshold was measured on the real handset)
- Local wake word on the Pi, Gemini Live for conversation, a 1-bit React desktop, FastAPI backend and Ansible provisioning, plus a 1-bit Doom port and an AI-narrated Zork
- Built during my internship at EQ2 in Gothenburg with classmate Felix Da Silva Gunnarsson
Arduino · C++ · PID control · I²C · Scrum · team project, finished third
Team Edison (classmates Felix Da Silva Gunnarsson, Santiago Bautista Barrera and me) built two self-driving cars for Yrgo's yearly autonomous-car race, working in two-week Scrum sprints. Our car SDA reached the final and finished third. As technical lead I worked mainly on the steering code and its tuning.
- The kit's ultrasonic sensor on a servo was too slow and the glossy walls fooled it, so we switched to three fixed VL53L0X laser distance sensors in CAD-designed, 3D-printed mounts
- The sensors share one I²C bus, whose two lines gave the cars their names, SDA and SCL. Each sensor is woken in turn through its shutdown pin and given its own address at boot
- PID steering on the left–right wall distance, speed scaled by the distance ahead, automatic sensor resets after dropouts, and IR start/stop as the race rules require
- Crashes debugged from the serial log at the exact crash point, with a logic analyser and oscilloscope on the sensor bus
- In the final I retuned the PID steering minutes before the start, got it backwards, and watched the car swing wide into the outer wall. Still, I regret nothing. It was a calculated risk for a shot at first place. We had already secured our grades, so we could afford to gamble, and the best car in the race was clearly performing better than ours
Python · energy systems · simulation · private for now
A deterministic simulation of a small Swedish wind plant. It answers two questions: what would the plant have produced and earned at a real site, and would it pass Svenska kraftnät's mFRR/aFRR prequalification, the test a plant must pass before selling balancing power to the grid. Every number carries an evidence level, from assumed to fitted to real logs, so the result always shows how far it can be trusted.
Claude Code · MCP · Docker · Tailscale · private: personal data
The system behind how I work with AI day to day:
- A persistent memory for AI agents. A git-backed Markdown vault shared by every coding session. A nightly "librarian" agent files, links and indexes new notes. An MCP connector on my own VPS makes it reachable from anywhere, and a Telegram bot handles quick capture.
- Review gates. Plans go to a second model for critique before implementation. Code goes through blind parallel reviewers before every push.
- Self-hosted services. VPS and home servers on a private Tailscale network. Earlier: RAG pipelines with Qdrant and Redis in Docker, knowledge graphs, and custom MCP servers.
Android · Kotlin · computer vision · accessibility · in testing
An app that says the colour of a garment out loud, built for a visually impaired client. It turns on the flashlight, captures three frames, classifies each one and reconciles them before speaking. One frame under household light isn't reliable enough to tell someone who can't check. TalkBack support is treated as a correctness requirement.
TypeScript · physics simulation · procedural terrain · play it →
A browser gliding game with real aerodynamics and procedurally generated terrain. You find thermals to stay up, and the landing is scored. The flight model is parameterised for gravity, wind and air density so it can fly on other worlds. It's also my testbed for fully AI-generated code: every line is written by AI agents working from a standing brief.
JavaScript · p5.js · play it →
A rhythm-driven space shooter, made as an experiment in how far AI coding can go without writing a line of code myself. The code, graphics and animation are all AI-generated.
VHDL · Cyclone V · VGA · block RAM · GHDL · Digital Electronics course · watch the glider gun → · repo →
Conway's Game of Life in VHDL on a DE0-CV board, drawn on a VGA monitor: 80×60 cells at 60 Hz, double-buffered in block RAM. Switches pick one of eight classic patterns, the speed and the edge mode; buttons pause and step.
The core modules have GHDL testbenches. A read-timing off-by-one passed the blinker test, whose symmetry hides it, but made gliders drift sideways. The first grid design needed 169 % of the chip's logic; rewritten for block RAM, the whole design uses 4 %.
C · ATmega328P · timers · PWM · ADC · Embedded Systems 1, passed with distinction (VG) · watch it play →
A classmate decided a drum machine was impossible with the hardware our course allowed. I took that as a challenge and started building a mechanical one the day before the presentation: two servos left over from the race car, on a frame of old Meccano, beating a cardboard-box bass drum and a paper-cup snare with a tinfoil head. Underneath it's register-level C on the Arduino's ATmega328P: hardware PWM drives the servos, a 1 ms timer interrupt keeps the beat, and a potentiometer sets the tempo.
| Languages | C, C++, Python, TypeScript/JavaScript, Rust, VHDL, Kotlin |
| Embedded | Raspberry Pi, Arduino, ESP32, AVR, embedded Linux (device tree, KMS/DRM, PipeWire), MQTT |
| Electronics | Analog and digital design, signal processing, PCB design (KiCad), soldering, measurement: oscilloscope, logic analyser, spectrum analyser |
| AI | LLM agents and tool use, MCP servers, RAG and vector databases, voice AI, prompt/instruction design, Claude Code, Codex |
| Infrastructure | Linux, Docker, Ansible, Tailscale, VPS hosting, networking, Microsoft 365, Google Workspace |
| Tools | Git/GitHub, Quartus, ModelSim, LTspice, Microchip Studio, Jira |
Falk Data AB: founder, IT consultant · 2005–present (sole trader until 2023) Twenty years of IT support, troubleshooting, networks, security and training for companies and private clients, and more recently AI automation. The job is problem-solving: understanding what the customer actually needs, then making it work.
EQ2, Gothenburg: internship (LIA) · 2025–2026 Built Project ScrLk and its degree-presentation demo.
Yrgo, Gothenburg: Electronics Engineer, Embedded Systems (higher vocational, 2 years) · 2024–2026 Analog and digital electronics, VHDL/FPGA, embedded C/C++, signal processing, test automation, embedded Linux. Other degree projects: an Arduino that offloads 7-segment display driving to an FPGA over SPI; a multimeter on a PCB I designed in KiCad, then soldered, programmed and debugged; a digital guitar filter on FPGA; and, with Felix, a Raspberry Pi weather station on MQTT.
Earlier university studies in informatics, databases, psychology, theoretical philosophy and business.
Outside work: I play guitar and synth in the Gothenburg band the Blindness, and I'm building my own synthesizer.



