Marc Berchtold

Coding and other shenanigans

Currently: Writing code for




nRF52840 firmware written in C/C++ for converting any USB Keyboard to a BLE HID Keyboard Device using a MAX3421E USB Host Controller. Features include quick connections and device switching using Bluetooth Low Energy, battery status reporting and shortcuts to improve typing productivity on a 60% keyboard.




Built in Ruby on Rails this application provides a sensible JSON API for getting the current weather and forecast data for locations in Switzerland. The weather data is gathered from multiple sources and aggregated with the aim to provide high accuracy as well as a to increase amount of weather information.
Special care and consideration was put into caching to provide a quick response time even when time intesive operations are being performed (for example rendering of SVG radar images).
If you want to build a project with this API, contact me.

Wingo Internet Box Exporter


Small Node.js application that accesses the undocumented API of the Modem provided by Wingo (Internet Box) and exports DSL Sync metrics for consumption with Prometheus.


Home Assistant Paperless-NG Sensor


Small Home Assistant Integration which uses the Paperless-NG API to export interesting stats as a Home Assistant Sensor.


NewsRetrieval - HackZurich 2021


A React app and Python backend built at HackZurich 2021 with my team mates for the SRF challenge. The webapps aim is to offer a unique way of discovering news articles. For this purpose the backend uses AI techniques to generate interesting "topics" from raw article texts. The user can then select a topic he's interested in and browse all the articles that belong to that topic.




Written in Node.js, this application acts as a HTTP reverse proxy and stops Docker containers which haven't been accessed recently and starts them again when a new request comes in. The aim is to save RAM by automatically stopping containers which are only used rarely.
To improve the user experience a loading page is presented, which automatically reloads when the containers webserver is ready.


Real-Stereo Extended


This is the bachelor thesis of Cyril Wanner and myself and was created based on the preliminary work of the PA Real-Stereo project. This system uses multiple Raspberry-Pis with fisheye camera modules to detect and locate a person in a room. This location data is then used to balance multiple Sonos speakers in a way, where the perceived volume for the listener is the same at all positions in the room. The system can be controlled and calibrated with a React webapp which can be run on the smartphone or pc of the user. The backend has been rewritten in Python for better OpenCV performance on the Raspberry Pi.

More information can be found in the linked paper (mostly german).



This is the personal website created for my brother. It's built specifically for his needs using Next.js for a blazing fast frontend and Strapi for the custom CMS and API.



This project was created together with Cyril Wanner for the ZHAW PA (project work) module and is the preliminary work for my bachelor thesis. This C# program for Windows detects and locates a person in a room using two webcams. This position data is then used to balance multiple speakers in a way, where the perceived volume for the listener is the same at all positions in the room. The calibration for a room is achieved by combining the positioning data with the perceived volume of a testtone, which is measured using a microphone. More information can be found in the linked paper (mostly german).


Foo(d)bar - HackZurich 2020


A React Native app and REST API built at HackZurich 2020 with my teammates, which reached the finalist stage (and somehow won the Siemens Smart Infrastructure workshop on Devpost for a few weeks ¯\_(ツ)_/¯).
The app uses Migros APIs to allow scanning barcodes of products. Product details as well as the CO2 amount in grams, using the Eaternity API is displayed. This way the consumer can make an educated decision on which products to buy to reduce his own environmental impact. There is also a map where the average CO2 amount is displayed per municipal is displayed, thus incentivising some competition in reducing the environmental impact using the "Kantönligeist" of the swiss population.

DevpostDevpost Wayback MachineYouTube Pitch VideoGitHub FrontendGitHub Map ComponentGitHub Backend



Browser based, multiplayer card game with animals as the heroes. Also contains a computer opponent of varying difficulty. Realized with React,, Mongoose, TypeScript & Node.js. Created in a team for the PSIT3 course and continued and improved in the PSIT4 course at Zurich University of Applied Sciences (ZHAW).

Play OnlineArchitecture Documentation PSIT3Project Vision PSIT4Technical Report PSIT4 v3


This website in it's current iterration. This time using the Bolt CMS. Design and graphics all by me.


Cordova Stylus Plugin


Cordova plugin that allows passing native stylus touch events to the webapp. Currently only supports the Android platform.




This was a commisioned project. An Electron app written in JavaScript. Scrapes, analyzes and presents important data to simplify various financial workflows. Makes use of SQLite database to store hirarchical data.

Node Turing Machine


Created in the context of an exercise for the Theoretical Informatics course at Zurich University of Applied Sciences (ZHAW). A simple turing machine realised in JavaScript using Node. Uses a text file based system with a simple syntax for creating programs. Supports tape macros to simplify programs.


AR Signage v2


Created for AdventureRooms Basel. A complete signage system based on MQTT to display adventure room clues, the countdown timer and play sound effects & music.
- Completly configuration free client software that searches for the backend on it's own. To be run on embedded systems connected to the signage screens.
- A dashboard software, to easily control all screens and check what each screen is currently playing or displaying, and present video / text clues and sound effects
- Simple backend server software that enables easily adding and organizing clue media by the way of directory structure.

GitHub ClientGitHub DashboardGitHub BackendAdventureRooms Basel

AR Roulette


A project for AdventureRooms Oftringen. Combination of a small C# program that interacts with an external hardware fingerprint scanner and a webapp that displays a thematically matching interface and provides the next steps to solve the puzzle.

GitHubAdventureRooms Oftringen

Node-RED SNMP Trap Listener


Node-RED node that enables workflows which should be triggered based on incoming SNMP Traps.


Node-RED Meteoblue Scraper


A Node-RED node that scrapes swiss weather data from Meteoblue.




Created with a group of other students at my senior high school (NKSA) to recognize handwritten digits using a dl4j neural network.


Arduino Quadrocopter


This was built for my matura paper. The aim was to code and build a quadrocopter from scratch that is entirely controlled by an Arduino which talks to the Afro ESCs. In addition the MPU-9150 was used for 9-axis motion tracking. 




Crudely programmed PHP website for creating and displaying map strategies for the video game CS:GO. Users could sign up, draw their strategies and write descriptions.



PHP application using a MySQL database. Was created while in secondary school to manage grades for all school subjects and automatically calculate the average according to the school regulations.

Show all projects

About me

My love for technology has led me to create and work on a lot of different projects. After finishing senior high school I worked for a year as an IT intern for the canton of Aargau writing software to monitor the status of multiple systems and refactoring several old applications.

I finished my Bachelor of Science ZFH in Computer Science in July 2021 at the Zurich University of Applied Sciences (ZHAW).

After I finished my Zivildienst in 2022, I started my first Job at Sitrox and worked for nearly two years as a Software Engineer with Ruby on Rails and React.

Currently I'm working as a frontend engineer at Competec, developing the Webshop.