Hey! Armin here, I create software, tools, and applications.
My primary focus is to build software that is exciting, inspiring, and reliable. For that, I am constantly evaluating new programming languages, software development techniques, and work on a lot of experiments.
Recently I've started a new project, the Massive project. Based on a 3D text renderer, I'd like to explore what real-time text based data can look in 3D within a limitless user interface space. Head over to the Massive page for a demo of the Massive Text renderer.
Besides of shouting out loud into the void, I contribute to open source projects and work at commercial projects to make a living. I take on freelance gigs if they align with my goals. If you are interested, you are welcome to contact me.
I am interested in the following:
- Everything related to creating user interfaces, like user state modeling, gesture recognizers, rendering, animations, caching, and change propagation.
- The Rust Programming Language.
And here are the things I've created:
2024 Q1
-
Massive Text: A real-time 3D text renderer in Rust, using WebGPU / WebGL or native. This is the first building block of the Massive Project.
-
Ported LookHere from Xamarin to Maui and .NET 8 and released a new version.
2023
-
Granularity An experimental fine-grade incremental computation system for Rust (private, open-source).
-
Mailboxer: An IMAP clients that sorts emails (private, unreleased).
-
Stack-Zero: A website framework in Rust, based on axum and tower (private, commercial).
-
Number5: With the team at questnet, we built a ChatGPT-4 powered voice bot. (commercial).
2022
-
Rewrote most of BrainSharper in Rust (unreleased).
-
Got my first patent granted 🎉 (in German/y).
2021
-
Created two high performance services that collect and distribute live session data using WebSockets (Rust, Linux, Docker).
-
Created a ingestion service that receives data files and stores them in the file system (Rust, Windows).
-
Created a GitOps based distribution and deployment system for Docker containers (Shell scripts, docker-compose, GitLab Pipelines).
-
Created a Watchdog service for FreeSWITCH channels.
- Created a first version of a FreeSWITCH event socket client for Rust.
2020
-
Created a registration and control service that communicates with a number of clients by WebSocket in ASP.NET and C#.
-
Created a system to charge telephone customers through credit card payments.
-
Created a cloud based system for broadcast stations to organize and process telephone raffles. Technologies used were Azure, F#, React & Material UI.
-
Learned the Kotlin Programming Language and Jetpack Compose.
2019
-
Created Emergent, a Visual Testrunner for Rust.
-
Wrapped most of the Skia Graphics Library API for Rust. Open Source and actively maintained on GitHub.
2018
-
Learned the Rust Programming Language.
-
Designed an API for routing telephone calls over a WebSocket interface.
-
Created a translation tool in F# that extracts text from .NET applications and supports XLIFF & Excel roundtrips and Google based machine translations.
-
Built a prototype for a WebRTC / SIP Click2Call solution in F# and Fable.
2017
-
With help of the team at QuestNet GmbH, I ported most of their interactive voice applications to VoIP and delivered them to production on an infrastructure that processes several millions telephone calls per year.
-
I managed and helped to build an iOS application for scanning 3D body parts that are used to manufacture orthoses for Ortholutions.
-
Personal Research (F#):
- Created a rope data structure that can be used in Text Editors.
- Created an experimental 3D Text renderer based on Multi-Channel Signed Distance Fields.
- Built a simple 3D OpenGL Shader Library.
- I tried to see how it is possible to map relational programming to F#.
2016
April
Started a new iteration of my personal Live Programming research: LivePipes provides functions that connect to the IDE and deliver feedback while typing.
2015
November
Created BuildOnSave, a Visual Studio extension that builds the current solution when a file is saved. Also available in the Visual Studio Gallery.
August
Created AutoFluent, a generator for fluent C# APIs in F# and released an AutoFluent package for Xamarin.Forms.
Created Windows 10 Dominator, an open source tool that manages the privacy settings of Windows 10.
June
Created and presented a F# DSL for specifying Interactive Voice Response (IVR) applications, in which parallel and sequential processes can be combined and coordinated based on their lifetimes and results. The demo uses Asterisk.ARI to accept and process incoming calls.
May
Evaluated the current state of Microsoft's CoreCLR and related technologies like DNX, HTTP request handling, XML & Json processing, OR/Ms, Configuration, and Serialization, to find out how to build and distribute server applications on Linux with .NET programming languages.
March
Created Dialog, an experimental live programming system for building user interfaces in F#.
February
Ported Facebook's CSS/flexbox layout engine to C#/.NET, which was later included in the official Facebook repository.
2014
November
Implemented a generic version of a Pratt Parser in F# that is specifically optimized for parsing expressions of pure functional programs (unreleased).
The German Amiga enthusiast magazine "Amiga Future" published the freeware versions of Oktalyzer and RAP!TOP!COP!.
October
Released Version 2.3 & 2.4 of LookHere to the Apple app store.
September
Created a pure functional text editor component in F# / OpenGL for a live programming IDE (not released). The editor supports most well known keyboard shortcuts and animates all content based on a differential animation algorithm. Test cases are realized with an internal F# DSL and resemble the typing actions of a user.
July
Released Version 2.1 of LookHere to the Apple app store.
June
For the upcoming Freeware release of RAP!TOP!COP!, a software for the Amiga, I created in the 90's, I wrote a small F# tool that converts an type setting format, which was used at Markt & Technik, to Markdown.
May
Created an Internet Explorer BHO extension in C++.
April
Gave an interview to the Amiga enthusiast site Obligement about Oktalyzer (hosted by Guillaume Guittenit).
March
Released the second version of LookHere! to the Apple app store.
Began developing sensor visualization components for the web.
February
Created Bricks, an alternative computation model, that implements a lazy evaluated, incremental, and stream-processing capable evaluation core.
Began to implement BricksUI, a user interface and live programming IDE, based on Bricks.
January
Created a Firefox extension in TypeScript.
2013
September
Created a prototype of a simple, lazy, pure functional programming language, and an interpreter that is suitable to be used in live programming environment. The grammar is defined and parsed with ScanRat.
Created Projections, an experimental F# library to experiment with streams processing in a lazy, dependency tracked environment.
August
Created ScanRat, a PEG parser combinator library for F#.
July
Created a Chrome extension in TypeScript.
May
Experimented with a WebRTC and TypeScript based file sharing tool for large files:
- Created Promise, a native Promise implementation for TypeScript.
- Created iwhen, a TypeScript port of a subset of when.js, and changed it so that promises are executed immediately, which is a requirement for IndexedDB.
- Contributed TypeScript type definitions for jQuery DataTables to the DefinitelyTyped project.
March
Created Promise, a strongly typed promise library for Typescript.
February
Created an MRCP/SIP client that simplifies access to the Nuance speech server recognition and text to speech features for Questnet GmbH. Most parsing was implemented by using Sprache.
January
Created a .NET communication client and WPF based console for O2 that implements a proprietary mixed text / binary protocol and communicates with their server over sockets and TCP/IP. The protocols were implemented with Faser.
2012
December
Created Faser, a format agnostic serialization library for .NET.
Open sourced Mime.Encoding, a .NET mime encoding library I developed for SharedSafe.
November
Released the first version of LookHere!.
Created SiteSharper, a static web site generator in .NET that uses a combination of Markdown and Razor templates.
Created and released Share To Desktop and Share To Folder, two small Windows 8 applications to the Windows App Store.
Open sourced JSNet, a experimental PEG parser generator and a JavaScript parser for .NET.
Created Konstruktor2, a dependency injector for .NET.
August
Created Facts, an update-in implementation for .NET.
July
Created CrossUI, a .NET drawing API, that is focused on instant test feedback. It has implementations for WPF and WinRT and a test-runner that automatically tracks changed .NET assemblies and renders their contained drawings.
June
Created, but did not finish Matter, a prototype of a small, lisp inspired, programming language.
Created, but did not finish InConcert, a command line tool to synchronize file system folders.
April
Created Rulez, a minimalistic rule evaluation engine.
February
Began developing LookHere, an iPad application for construction engineers.
2011
August
Created NChannels, a .NET implementation of Go's channels.
2010
Created and released several versions of BrainSharper, a concept mapping editor, for which I created
- an Event Sourcing and CQRS framework.
- an Object-relational mapper for SQLite.
- an SQLite client for .NET.
- a concept to implement unlimited Undo / Redo based on Event Sourcing.
2009
Created and released several version of SharedSafe, a file sharing tool, with full encryption, automatic synchronization, and conflict resolution.
To make SharedSafe possible, I built:
- a fairly complete IMAP client
- a log structured file system
- cryptographic licensing and management tools
- an update server
- an IPC framework
- a Windows Explorer extension
- a test suite based on Reactive Extensions.
- a Windows setup based on WiX
- a configuration user interface with automatic dependency tracking
- a user interface DSL that composes Windows Forms elements into responsive disclosure based user interface dialogs
Founded the company rootloft GmbH.
Customized xtCommerce and built egreenfee.de for a friend:
- built a PDF generator for golf green-fees with ruby
- customized an xtCommerce Paypal module in PHP
2008
Created a workflow engine for telephony applications in C# for Questnet GmbH.
Created a prototype of a photo organization and tagging application in C#/WPF.
2006
Implemented the workflow engine, business logic, and supervisor component for a bank statement printer "KIT" for Tomaxx GmbH.
Created a generic framework for cash machines, named "libfinance".
2005
Implemented large parts of the HDi implementation for Nero's HD DVD player software and public interfaces, which included:
- An SMIL implementation.
- An incremental, dependency tracking layouting algorithm for HDi's subset of HTML.
- A dependency tracking XPath evaluator.
Implemented the workflow engine, business logic, and supervisor component for the cash depositing machine "DPD Einzahler" and "Cashin 2" for Tomaxx GmbH.
Founded Sander & Messmer GbR.
2002 - 2005
Created CloneDVD together with the team at Elaborate Bytes until version 2.8.5.1. Developed the user interface, the DVD stream processing engine, managed the build process, and coordinated developers and public releases.
2001
Created and updated several versions of a C++ based telephony server and TCP/IP protocol implementation that allowed business logic clients to access several Aculab hardware features in parallel. The server is in use at Questnet and powers all telephone calls and services. About 50 million telephone calls in 2013.
2000
Created an experimental, small OpenGL based 3D engine in Haskell to see if lazy evaluation can be used to increase performance.
1999 - 2000
Contributed to the development of a Internet Casino Client for Modern Technologies Inc. Built the network communication layer, the automatic update system and the slot-machine game.
Created an XML to Java classes mapping system for Skynamics AG, which was used in the Intershop/Enfinity E-commerce servers.
1998
Created a state-machine based user interface and coordination system for Leicher GmbH in Java.
Created a user interface for a cash depositing machine in Delphi for Leicher GmbH.
Created a WYSIWIG text editor component with incremental layout including rotated and round texts for Envel GmbH in C++. The component was used in the label printing program DesignPro 2000 by Zweckform.
Created an automated extraction and reference documentation system for C++ source in Haskell.
1996
Contributed to the development of a PC remote control for Ruwido Electronics. Lead the project and built the configuration user interface and parts of the the serial port driver.
1995
Co-founded Digital SimpleX GmbH and created the following technologies from 1995 to 1997:
- a user interface kernel for a multimedia authoring system.
- a specific compression method for 256 color pictures, that was optimized for decompression speed and floyd-steinberg dithering.
- a color reduction algorithm, that found a set of best colors based on a number of source picture by using a Voronoi triangulation.
- a high-quality floyd-steinberg implementation that was used to render pictures that were reduced to 256 colors.
- a hyper-text system, including a custom markup, parser and viewer for multimedia applications.
Created a 3D engine including texture mapping and world management by using Octrees. It was used in a DTM realtime game and simulation for Weltbild Verlag.
Created ACMstreams, a free audio-compression and format conversion library in Delphi, which was used at Ejay AG, amongst others.
1993
Created an animation system that was used in a virtual chemistry lab for Kosmos Verlag.
Contributed to a number of multimedia CD productions that were released by boeder AG between 1993 and 1995.
1992
Created RAP!TOP!COP! for Markt & Technik, a real-time hard drive compression driver, a hard drive optimizer, and a disk compression tool, including the appropriate user interfaces for the Amiga, which included the creation of
- two compression algorithms
- an algorithmic method that supports fast random access reads and writes to compressed files
- a compressing Amiga hard-disk driver
- an object-oriented, font-size sensitive user interface engine with automatic layout
1989
Created Oktalyzer, a music tracker for the Amiga, that was able to play back 8 channels on the 4 Amiga hardware channels.