Marc Berchtold

Coding and other shenanigans

Currently: Writing code at Sitrox

Projects

KeyBLEoard

11.2023

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.

GitHub

SwissWeatherAPI

04.2022

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

03.2022

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.

GitHub

Home Assistant Paperless-NG Sensor

02.2022

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

GitHub

NewsRetrieval - HackZurich 2021

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

DevpostGitHub

ContainerNursery

09.2021

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.

GitHub

Real-Stereo Extended

07.2021

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

PaperGitHub

TarasBerchtold.ch

02.2021

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.

TarasBerchtold.ch

Real-Stereo

12.2020

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

PaperGitHub

Foo(d)bar - HackZurich 2020

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

BattleBeasts

06.2020

Browser based, multiplayer card game with animals as the heroes. Also contains a computer opponent of varying difficulty. Realized with React, Socket.io, 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

Echolot.io v3

03.2020

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

GitHub

Cordova Stylus Plugin

12.2019

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

GitHub

MechanicalTrading

07.2019

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

12.2018

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.

GitHub

AR Signage v2

09.2018

Created for AdventureRooms Basel. A complete signage system based on MQTT to display adventure room clues, the countdown timer and play sound effects & music.
Features:
- 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

09.2017

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

09.2017

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

GitHub

Node-RED Meteoblue Scraper

08.2017

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

GitHub

Char

05.2017

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

GitHub

Arduino Quadrocopter

10.2016

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. 

GitHub

MLGStrats

07.2016

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.

Grading

11.2015

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 am now working full time as a Software Engineer.

Contact

Mail

GitHubLogoGitHub

LinkedInLogoLinkedIn