Software

I have been writing software tools for many applications such as scientific data analysis, programming tools, web (backend and frontend), games. A full toolbox of up-to-date theoretical knowledge including security, systems programming and machine learning (MSc Computer Science ETH Zürich 2019), and practical skills allows picking the best suitable tool for the task at hand. I like learning new technologies.

My programs follow good software design and architecture practices. I follow a robust coding and documentation style that is easy to follow. Systems must work reliably and should be as easy to use for humans as possible. They should not track users beyond what is absolutely necessary and clearly described in plain language in the program description.

Some experiences:

  • C: systems programming (OS, kernel, network, virtual filesystem)
  • C++: legacy and modern usage of the language including Boost and CGAL, high-performance computing
  • C#: current .NET Core.
  • Java: various larger client, server, and Android applications; compiler; static analyzer with abstract interpretation
  • Python: data analysis, small tools, machine learning (scikit-learn, TensorFlow)
  • Go: various tools and server programs
  • Javascript: web applications and games
  • Rust: some tools while learning the language
  • Haskell: taught me many more things than just functional programming
  • Datalog: a static program analyzer (tainted variables)
  • VHDL, Chisel, Verilog: FPGA applications and CPU/FPGA hybrid applications
  • TeSSLa: Runtime verification specifications
  • various other languages

A selection of some projects:

Runtime Verification with TeSSLa on a CPU/FPGA hybrid system

This is the description of a fully working runtime verification system for ARM CoreSight traces running on a CPU/FPGA hybrid system.

SimFS

SimFS is a file system interface developed at the Scalable Parallel Computing Laboratory (SPCL), ETH Zürich that allows balancing of storage and computing resources for large scientific simulations generating petabytes of data. I contributed to this project during my BSc thesis in Computer Science.

Studying Queueing Theory with a database middleware in a closed system

Queueing Theory was used in this student project to benchmark a self-built database middleware system in the Microsoft Azure cloud. Proper system analysis and bottleneck detection is crucial to improve distributed systems where the most benefit can be achieved. Queueing Theory has many practical applications in computer systems and real life. As often, learning a theoretical topic in combination with a practical project gives a much deeper understanding than just learning the theory.

Machine Learning and Natural Language Understanding

Summary description of various projects in these very interesting scientific fields. Are AI systems fit to replace physicians? Building of reliable AI systems.

Static analysis of tainted variables and sanitation in Datalog

Static analysis and sanitation of tainted variables; implementation in Datalog. A group project in Program Analysis for System Security and Reliability (PASS).

pictureViewer

A tool to create an interactive web page to present pictures.

Barrelfish OlympOS

Barrelfish OS variant implementation for Pandaboard ES. A group project in Advanced Operating Systems (Prof. Roscoe, Systems Group, ETH Zürich).

DisTris

A multiplayer Tetris like game on Android. A group project in Distributed Systems.

benchmarkC

A toolbox for (micro)benchmarking of C programs on x86_64. Additionally tested for Barrelfish on ARM.

Toolboxes

A collection of various helper classes / tools for C++, Java, and Python.

Various student projects

Short description of various projects that do not have a separate page yet: middleware, wired and wireless networking, SQL and non-SQL databases, compiler, static analyzer, etc. I learned many things while applying theory in practice.

FPGA goes Arcade

A Tron like light cycle race implemented on a Xilinx Spartan 3 FPGA board (MIPS assembly, I/O devices, VGA output). Additional game versions in Excel and Javascript.

MatlabPlotter

C++ include-only library to use Matlab/Octave as plotter.

psSquirrel WEB

An online archive database for links, texts, PDF files, pictures and other file formats.

RangeChecker

This software can be used to analyze data points and time ratios in/above/below a defined range using a standard linear interpolation model. Example: INR coagulation values.

Tree of Codes

Software to analyze nucleotide sequences with respect to specific characteristics.

CESAM / Running Ant / Merging Bee / Walking Turtle

Several software programs have been developed for scientific projects, in particular data management, data analysis and image analysis.