me

My name is David and I am a software engineer living in Stutt­gart, Germany. Amongst other things, I am interested in science, math, programming, technology, cycling, progressive rock music and board games. I work on self-driving cars. I have a theoretical degree in physics degree in theoretical physics. You can find some of my personal projects on this page. My open source work is published on GitHub. My academic work can be found on arXiv.

If you want to reach out to me, please send me an email.

projects

Command-line programs

I have a passion for modern and fast command-line programs and built a couple of tools over the years, mostly for my own personal need. fd is an alternative to the well-known find command. Besides performance, the project also tries to focus on a clean and approachable command-line interface. hyperfine is a command-line benchmarking tool. It can be used to measure execution time of other programs and helps with proper statistical analysis of the results. bat is a supercharged version of the cat command that is useful if you want to read syntax-highlighted code on the command-line. hexyl is a hex-viewer for the terminal that uses colors to distinguish different categories of bytes for a better overview. Finally, pastel is an attempt to build a color-manipulation tool for the command-line. It features several commands for generation, analysis, conversion and manipulation of colors and allows for building more complex workflows using Unix pipes.

Numbat

numbat.dev A high precision scientific calculator with full support for physical units. Contrary to many graphical calculators, Numbat is based on an interactive command line interface and runs both on the terminal and in the browser. It understands all SI units (including metric and binary prefixes) as well as most of the US customary and imperial units. In addition to many predefined mathematical functions and physical constants, it also supports user-defined variables and functions.

cube composer

cube-composer - a puzzle game inspired by functional programming A puzzle game which is inspired by functional programming methods. In a number of different levels, your task is to compose a series of transformations such that the colored cubes arrange in the correct pattern. The game is written in PureScript, a Haskell-like language that compiles to JavaScript. The code can be found on GitHub.

quizzity

quizzity - a geographical quiz A geographical quiz where you have to guess the location of capitals and big cities around the world. The game comes with a custom designed world map that is controlled by the Leaflet.js library. The source code, the map and the geo-data can be found on GitHub.

curiositY

A puzzle game targeted at developers. Telling more would spoil the fun. How far does your curiosity take you?

Parachuting robots

Another puzzle game for programmers where you need to write some actual code.

Factorization diagrams

Factorization diagram A fun way to visualize prime factors of integers using symmetric shapes and colors. Another project written in PureScript that can be compiled to JavaScript to run in the browser.

Yinsh

Yinsh board game This project is an online version of an abstract board game called Yinsh. It is written in Haskell and compiled to JavaScript by the Haste compiler. The rules of the game can be found on Wikipedia. My implementation has built-in artificial intelligence based on a simple heuristic and a minmax-like algorithm.

Zehntausend

Erwartungswert Formel Das Würfelspiel Zehntausend lässt sich mathematisch exakt lösen, indem man die optimale Strategie rekursiv definiert. Die detaillierte Rechnung findet sich im angegebenen Dokument. Zur Lösung wurde ein Haskell Programm verwendet, das die optimale Strategie implementiert und den Lösungsbaum rekursiv durchsucht (siehe GitHub).

Pack-Zack!

Ein praktischer Manager um Packlisten extrem schnell zusammenzustellen. Es gibt vorgefertigte Tags wie “Sommer”, “Ferienwohnung” oder “Sport”, sowie komplette Listen für einen Wanderurlaub, eine Geocaching-Tour oder eine Konferenz.

invited talks

Lambdaconf 2015

Abstract: Wouldn't it be absolutely wonderful if you could use easy, QuickCheck-style declarations to not just test your code, but also make those tests interactive to developers who want to learn more about how to use your functional library? Thanks to the power of applicatives and functional reactive programming, this is now possible! In this talk, the speaker will present a testing library that unifies property testing with interactive testing to make your functional programming libraries both well-tested and also accessible to new users!

RustLab 2019

I gave a workshop on writing modern command-line applications in Rust.

fun

Board game collection

I enjoy abstract, social and strategic board games as well as card games. My full collection of games can be found here.

Favorite music

For over ten years I have been tracking nearly all of the songs I have listened to. You can check out this list to see my currently most played albums.

Mountainbiking

A few “hand-selected” single trails close to Stuttgart Vaihingen and a twelve-minute movie of our 456km mountain bike tour from Füssen, Germany to Riva del Garda, Italy in 2014.