Projects
Below is a brief (yet incomplete) list of open source and free software projects where I am involved or to which I have contributed a significant amount of code. You might also want to check my GitHub and ohloh pages.
jekyll-workbox-plugin
The jekyll-workbox-plugin provides integration of Google Workbox for the Jekyll static site generator, to generate a service worker for you. It focuses on generating just the service worker, compatible with the way that workbox-cli works.
Node.js
Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
Chrome V8
V8 is Google's open source high-performance JavaScript engine, written in C++ and used in Google Chrome, the open source browser from Google. It implements ECMAScript as specified in ECMA-262, 6th edition, and runs on Windows Vista or later, Mac OS X 10.6+, and Linux systems that use Intel, ARM, MIPS or PowerPC processors. V8 can run standalone, or can be embedded into any C++ application.
ocaml-arm
The ocaml-arm project provides a new ARM backend for the OCaml native code compiler, which fixes various bugs and shortcomings of the previous backend and includes support for both armel and armhf targets (currently limited to Linux).
ocamlnat
The ocamlnat project provides a new native code toplevel for the OCaml language, which is mostly compatible to the byte code toplevel, but up to 100 times faster. It is based on the optimizing native code compiler, the native runtime and and earlier prototype by Alain Frisch. It is build upon Just-In-Time techniques and currently supports Unix-like systems running x86 or x86-64 processors.
ocaml-experimental
The ocaml-experimental project serves as a playground for experimenting with new features and changes to the OCaml language and runtime, including a new native code toplevel ocamlnat
, which has since been moved to the ocamlnat project, and an implementation of the linear scan register allocator for the optimizing native code compiler ocamlopt
.
PhotoAccess
With PhotoAccess you can easily transfer photos directly from your iPhone, iPad or iPod touch to any computer using a web browser over WiFi. Select an existing photo or take a new picture, and PhotoAccess will display a download URL below the photo. Enter that URL in a web browser on any computer on the same network and you can download the full resolution photo, rotated to the correct orientation. The perfect solution to transfer just that one photo which you need right now.
BMKit
BMKit is a collection of various useful Objective-C classes and categories for iOS (and Mac) development. It is always work-in-progress as I constantly add new features as needed. BMKit is designed to be embedded into other Xcode projects, see the project website for details.
WebsiteCompressor
WebsiteCompressor is a small, fast and very easy to use Java utility that minifies a whole website, with all CSS, HTML, JavaScript and XML files by removing extra whitespaces, comments and other unneeded characters without breaking the content structure. As a result the pages become smaller in size and load faster.
iFlashLight+
With iFlashLight+ you can turn your smart phone into a flash light using the LED light on the iPhone 4. The camera LED flash on the iPhone 4 is mega bright and when turned on in a constant stream, it is unrivaled in terms of lighting power.
I wrote iFlashLight+ when I received my brand new iPhone 4 and discovered that all available iPhone 4 LED flash light apps sucked for some reason (ads, malware, crashes, etc.). iFlashLight+ is free and open source, and - unlike other flash light apps - comes without ads and malware.
git-hooks
git-hooks provides a simple mechanism to manage hooks for several Git repositories in a unified and simple way. It allows you to install hook scripts in a central location and use them for your Git repositories.
git-utils
git-utils is a collection of simple utilities that made my Git life easier in some way or another. I tried to clean them up as much as necessary prior to putting here, so it should be easy to use for others as well.
Thunar File Manager
Thunar is a project I started in mid 2004 (initially named Filer, but renamed to Thunar, because of a name clash with Jens' Perl Filer), which aims at developing an easy to use, lightweight file manager for the Unix/Linux desktop (specifically the Xfce Desktop Environment).
Thunar Volume Manager (thunar-volman)
The Thunar Volume Manager provides automatic management of removable drives and media for the the Thunar file manager, without adding another daemon to the users desktop.
Thunar Archive Plugin (thunar-archive-plugin)
The Thunar Archive Plugin is a very simple plugin for the Thunar file manager, which allows users to create and extract archive files (i.e. .tar.gz
and .zip
files) from within Thunar, using the context menu.
Xfce desktop environment
Over the last years I wrote various bits and pieces of the Xfce desktop environment. I developed and maintained various core parts of the Xfce desktop environment, including the new file manager Thunar, which I wrote from scratch to replace the unpopular Xffm file manager, the Session Manager, the Xfce Libraries, the Terminal, innumerable plugins and goodies, and several other core components.
Xfce developer tools (xfce4-dev-tools)
The Xfce developer tools provide a collection of scripts and M4 macros that are required to build the Xfce core desktop components and various other software packages straight from SVN/CVS. You do not need the developer tools if you are building from the release tarballs.
UPiDiff
The UPiDiff tool was developed as part of a hands-on training at the University of Siegen back in 2003. It was renamed since then and is now known as SiDiff. Its constantly extended with new features every year, but unfortunately it's one of those University projects that doesn't attract external developers because there's no real way to get involved.
TPML
The TPML tool was developed as part of an university project at the University of Siegen from 2005 to 2009. Its purpose is to help students understand the semantics of programming languages and the related type theory.