Hey, Armin here, I create software, tools, and applications.
I am interested in making software development exciting and reliable. To do that, I am constantly evaluating new programming language concepts and software development techniques.
Besides of that, I contribute to open source projects and work at commercial projects to make a living. Sometimes I take on freelance jobs if there is a challenge involved and the project aligns with my goals. If you are interested, you are welcome to contact me.
Currently, I am focusing on the following topics:
- Everything related to creating user interfaces, like user state modeling, gesture recognizers, animations.
- The Rust Programming Language.
- Multi-Channel Routing Technologies.
And here are the things I've created:
Rewrote most of BrainSharper in Rust (unreleased).
Got my first patent granted 🎉 (in German/y).
Transitioned my development environment from Windows to macOS.
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.
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.
Created Emergent, a Visual Testrunner for Rust.
Wrapped most of the Skia Graphics Library API for Rust. Open Source and actively maintained on GitHub.
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 rountrips and Google based machine translations.
Built a prototype for a WebRTC / SIP Click2Call solution in F# and Fable.
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 ortheses 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#.
Started a new iteration of my personal Live Programming research: LivePipes provides functions that connect to the IDE and deliver feedback while typing.
Created BuildOnSave, a Visual Studio extension that builds the current solution when a file is saved. Also available in the Visual Studio Gallary.
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.
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.
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.
Created Dialog, an experimental live programming system for building user interfaces in F#.
Ported Facebook's CSS/flexbox layout engine to C#/.NET, which was later included in the official Facebook repository.
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!.
Released Version 2.3 & 2.4 of LookHere to the Apple app store.
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.
Released Version 2.1 of LookHere to the Apple app store.
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.
Created an Internet Explorer BHO extension in C++.
Gave an interview to the Amiga enthusiast site Obligement about Oktalyzer (hosted by Guillaume Guittenit).
Released the second version of LookHere! to the Apple app store.
Began developing sensor visualization components for the web.
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.
Created a Firefox extension in TypeScript.
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.
Created ScanRat, a PEG parser combinator library for F#.
Created a Chrome extension in TypeScript.
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.
Created Promise, a strongly typed promise library for Typescript.
Created a 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.
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.
Created Faser, a format agnostic serialization library for .NET.
Open sourced Mime.Encoding, a .NET mime encoding library I developed for SharedSafe.
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.
Created Konstruktor2, a dependency injector for .NET.
Created Facts, an update-in implementation for .NET.
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.
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.
Created Rulez, a minimalistic rule evaluation engine.
Began developing LookHere, an iPad application for construction engineers.
Created NChannels, a .NET implementation of Go's channels.
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.
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 greenfees with ruby
- customized an xtCommerce Paypal module in PHP
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.
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".
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 layouter 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 22.214.171.124. Developed the user interface, the DVD stream processing engine, managed the build process, and coordinated developers and public releases.
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.
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.
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 platform independented 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.
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.
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.
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.
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
Created Oktalyzer, a music tracker for the Amiga, that was able to play back 8 channels on the 4 Amiga hardware channels.