Skip to content
View edwardfalk's full-sized avatar

Highlights

  • Pro

Block or report edwardfalk

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
edwardfalk/README.md

Edward Falk

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.


Featured projects

📞 Project ScrLk: Happy Mac

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

🏁 Yrgo Grand Prix: autonomous race cars

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

🌬️ WindSim: wind plant and grid-balancing simulator

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.

🧠 Self-hosted AI agent infrastructure

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.

🎨 Say Color

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.

✈️ Glider

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.

🎮 Cosmic Vibe

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.

🧫 Conway's Game of Life on an FPGA

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 %.

🥁 Servo drum machine

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.


Skills

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

Experience

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.

Education

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.

Pinned Loading

  1. edwardfalk edwardfalk Public

    About mr. Falk

  2. vibe vibe Public

    Browser space shooter where every enemy is an instrument — the soundtrack is the fight

    JavaScript 1

  3. macintosh-timings macintosh-timings Public

    2 1

  4. Project-ScrLk Project-ScrLk Public

    A Raspberry Pi 5 mounted inside a Macintosh Classic from 1991 is driving its monochrome CRT. The OS is a Chromium web kiosk running in a bare-bones Linux system. You can talk to an AI in the comput…