Code and Projects

A selection of fun projects and software written by me:

Nettalk Nettalk is a popular free and open-source IRC client for Windows. Back in the time when IRC was a very common chat protocol, Nettalk was due to its availability with a German GUI probably the most used IRC client in German speaking countries beside mIRC. The GUI has been translated to more than 10 languages.

Link to project page: German, English
Link to Wikipedia page: Nettalk (IRC client)

Homebrew Atomic-Force-Microscope

afm An AFM based on easy available parts only. The driving of the x,y and z axis takes place by piezoelectric acoustic transducers at +/- 30 V. The deflection of the probe tip (made of platinum or tungsten from incandescent light bulbs) is measured by a reflected laser and a photodetector IC for optical pickups of CD drives. More details...


simplenfc A NFC tag emulator (ISO 14443-3 compatible Type 2) which requires only 4 resistors, 3 capacitors and 1 diode to connect the RFID antenna to a microcontroller. More details...

Hackaday article:
A bachelor thesis based on SimpleNFC: Passive NFC Environmental Sensor

Hough transformation for embedded systems

files/hough.png Hough transformation implementation in C for computer vision to extract straight lines, circles and circular segments from raster images.

The code contains an efficient implementation of Sobel edge detection and Gaussian filter, non-maximum suppression, Hough transformation and local maxima filter. The code is implemented in C and optimized for embedded systems (only integer arithmetic, low memory footprint).

Source on GitHub:

Barcode for real-time positioning

files/Pattern.pdf files/Pattern2.png Development and implementation of a circular barcode for real-time positioning and orientation detection based on low resolution camera images. Each round code element stores by default 3 bit. In combination with the neighbour elements it identifies the absolute position and orientation.

The code contains an efficient C# implementation of 2D convolution with a Gaussian kernel and 3x3 Sobel operator, non-maximum suppression, hough transformation and local maxima filter. A tool for creating the code pattern as well as the matching lookup table is included as well.

Source on GitHub:


Electromagnetic display

Electromagnetic displays are nice and actually not that hard to create on your own by using 3D printing. Here I show a working prototype of a single digit electromagnetic 7-segment display. Stl-files, circuit and source code is available. Read more...

Hackaday article:

FEM solver

files/polarFem.png A performant FEM solver in C# for one-dimensional rotational symmetric heat transfer. It was developed to simulate the cooling of an heated tungsten filament inside a gas filed tube in dependency on the heat capacity and the thermal conductivity of the gas(-mixture).

Code on GitHub:


files/HeartCam.png An app for measuring the heart rate by using the internal smart phone camera. When placing the fingertip on the camera lens the app can measure the periodic pressure change caused by the heart beat. This pressure change lead to a change of the fingers light permeability in the range of a few percent.

At typical room light the penetrating radiation is so low that the change of light intensity is significant lower than the noise level of the CMOS-sensor pixels. But because there is no need for local resolution, the data of many pixels can be averaged to improve the signal to noise ratio to a reasonable level. By applying a FIR bandpass filter, matched to the typical heart rate range of human beings, a clean signal can be obtained.

Source Code: Heart Cam

files/GraphTouch2.png files/GraphTouch.png


A scientific calculator app with numeric solver and graph plotter. The numeric solver can be used to calculate numeric solutions for equations as well as maxima, minima and zero crossing.

Description at Microsoft Store

Magnetic stripe data decoder

Magswipe_smal.jpg A software for decoding magnetic stripe data (e.g. from credit cards) from a recording in wave-format (PCM). Software is written in C#. Recording of the stripe data can be done by moving a tape head connected to the microphone input along a ruler.

Code on GitHub: A fserve search engine maintained from 2004 to 2008. Web interface was written in ASP/VBScript, back end for result lookup and crawler in Visual Basic. It gained some popularity among anime fans, but has been discontinued because of potential legal issues.

Archived website:


A lightweight, easy to set up, free and open-source IRC server for Windows running as a NT service. A Nick-, Chan- and Memoserv with basic functionality is integrated.

Link to project page (German):

Autopilot for wing based drones

files/Nearspace.png An autopilot for wing based drones implemented in C# for the .NET Micro Framework. Navigation is based on data from gyroscope, accelerometer, magnetometer, air pressure and temperature, air speed (pitot tube) and GPS.

The code provides drivers for: BMP085 barometer, DS18B20 temperature sensor, L3G4200D gyro, LSM303DLM accelerometer/Magnetometer, SkyTraq Venus6 GPS recever, Linksprite UART Camera and RFM22b 868 MHz transceiver (20 dbm). It handles analog data from battery voltage and current as well as the MPX 5010DP pressure sensor. The code deals with the navigation to the destination coordinates, controls airspeed and merges data from the IMU sensors with the other data sources.

Source on GitHub:


Topography data from the SRTM

Some work has been done to use topography data from the Shuttle Radar Topography Mission to provide height above ground level for UAVs. Despite this project was never finished, the existing C# code can be used to render nice false color topography images.

Source on GitHub:
High resolution image of Germany: germany_SRTM_large.jpg (3616 x 4822 pixel)