I enjoy taking ownership of components that may have been forgotten, under-tested or lacking clear architecture. My approach always starts with establishing reliable tests, enabling safe refactoring and long-term maintainability. With solid tests in place, clean abstractions naturally emerge — and from those, a fit-for-purpose architecture takes shape. I don’t believe in perfect architectures; I believe in making conscious trade-offs and evolving the design over time to keep systems understandable, maintainable and trustworthy.
Erics utvalda uppdrag
Senior Algorithm Engineer
2026 -
Toptracer (part of Topgolf), is a global market leader in camera-based ball tracking systems for golf, combining computer vision, image processing, and physics modelling to deliver real-time analytics at scale." The system is deployed in more than 1,000 golf ranges worldwide, operating under diverse real-world conditions, with production software running locally on Linux-based infrastructure interacting with camera hardware and network environments.
The Tracking Core team developed and maintained the core tracking pipeline, where the challenge was to continuously improve accuracy, robustness, and performance of a distributed, production-critical system while handling real-world variability and system-level dependencies across software, hardware, and networks.
Developed and maintained tracking system components using C++, Python, and Rust, focusing on performance optimization and reliability in a Linux server environment Analysed production data in Observe from global installations to identify algorithmic weaknesses, edge cases, and low-frequency/high-impact failures using data-driven debugging techniques Implemented, tested, and validated improvements in computer vision and object tracking algorithms, ensuring consistency across varying environmental conditions Worked hands-on with system-level interactions between camera hardware, embedded/edge devices, and network configurations to troubleshoot and enhance end-to-end performance Collaborated closely within a team of 7 engineers through code reviews, refactoring initaives, technical discussions, and shared ownership, applying pragmatic decision-making Evaluated and troubleshooted a next-generation camera system as part of a hardware replacement initiative, performing system-level testing and root-cause analysis across camera hardware, Linux infrastructure, networking, and tracking software to assess production readiness
Resultat: Enhanced the reliability and robustness of a next-generation camera system by identifying and resolving hardware-software integration issues, helping achieve tracking accuracy comparable to the existing production platform while increasing confidence in future large-scale deployment.
Teknik och metoder: C++, Python, Rust, Linux, Observe, computer vision, image processing, object tracking, physics modelling, production data analysis, edge computing, embedded Linux, network configuration, system integration, debugging, code reviews
Evidente
Consultant Embedded Software Developer
2024 - 2026
Evidente is a Swedish engineering consultancy specializing in embedded systems, software architecture, and safety-critical solutions across automotive, industrial and IoT domains.
Held two consulting engagements. First: design and implementation of a low-power electronic lock using Zephyr RTOS, owning overall system and software architecture. Second: development and maintenance of a Linux-based package management and installation system for an automotive platform, enabling reliable field deployment and updates.
Ownership of the software for a battery-powered smart lock built on Zephyr RTOS, with communication over BLE and NFC. Responsible for architecture, implementation, driver development, automated testing and CI/CD. Worked closely with a hardware engineer to measure and optimize power consumption and low-power strategy. (C, MCU boot, Nordic nRF52, CMake, Docker, gitlab, device tree, drivers, multithreading, encryption, Bluetooth low energy, DFU, ztest, ninja, OTA) Development and maintenance of a Linux-based package management component, delivered as part of a Yocto-based embedded Linux distribution. Redesigned the component architecture using a Ports and Adapters (Hexagonal) approach to separate core domain logic from out-of-process concerns, and implemented a rollback strategy safe against interruptions, ensuring system consistency even in the event of power loss during installation or rollback. (C++, Python, CMake, GTest, PyTest, Yocto, Embedded-Linux, Linux, Valgrind, qemu, Docker, Jenkins, Artifactory, JFrog, json, GCC, clangtidy, clangformat) Improving CI/CD build time for a Yocto-based project in Jenkins, analyzing Yocto caching mechanisms and parallelization opportunities across build and test stages to significantly reduce end-to-end build times. (jenkins, Groovy script, artifactory, JFrog, Yocto, artifact caching, bash, Python)
Results Extended battery lifetime from approximately 1 year to 3–5 years. Delivered a robust, power-loss-safe update mechanism enabling reliable field deployments without manual recovery. Significantly reduced CI build and test times for the Yocto-based platform, improving developer feedback cycles and overall development velocity.
MSAB is a global leader in mobile forensics, known for extracting, decoding and analyzing data from smartphones and other devices used by law enforcement and government agencies.
Rehired to explore and introduce machine learning capabilities and to become responsible for the company’s data enrichment pipeline. Work expanded to include CI improvements and solving C++ package management issues impacting build stability and developer productivity.
Implementation of image recognition capabilities, from research and prototyping to production integration. Built pipelines to scan large image sets for people, weapons, drugs, money and other categories using open-source models, with runtime selection between GPU and CPU execution to ensure predictable performance across customer environments. (OpenCV, CUDA, neural network models) Design and integration of speech-to-text transcription for audio evidence using whisper.cpp, enabling full-text search across customer data sets. Implemented GPU-accelerated inference with automatic CPU fallback depending on available hardware at runtime. Implementation of face detection and face recognition workflows using multiple AI models for detection, feature extraction and face comparison, optimized for on-device execution with optional GPU acceleration to handle large-scale data efficiently. (OpenCV, image segmentation, image processing, TensorFlow, PyTorch, CUDA, KNN) Redesign of the data enrichment execution model to parallelize processing across multiple decoders and introduce more effective caching strategies, reducing execution time by approximately 50% on representative workloads. (C++ multithreading, caching, refactoring) Complete redesign of C++ third-party dependency management for whole company, migrating from manual builds to a central vcpkg registry used across all components. Enabled centralized versioning, automated upgrades, and automatic SBOM generation for third-party dependencies, significantly improving build reproducibility, compliance, and long-term maintainability.(vcpkg, binary caching, deterministic builds, license compliance) Overall ownership of the data enrichment platform, including implementation and ongoing maintenance, automated testing integrated into the CI/CD pipeline, and reliable deployment of all components together with their dependencies (artifact caching, artifact management, branching strategy, design, architecture)
Results Delivered AI-assisted data enrichment enabling investigators to find relevant evidence; accelerated large-scale data processing by approximately 50% through parallel execution and effective caching helping investigator to get processed data faster; automated third-party dependency updates, allowing developers to focus on product development rather than manual dependency management.