Hi, Armin here, I build software.
My primary interest is to make software development more fun by exploring Live Programming.
Besides of that, I create and contribute to open source projects and work at a number of commercial projects to make a living. Sometimes I take freelance jobs if there is a challenge involved. If you are interested, you may contact me on Twitter, or Xing. If you decide to do so, please be specific about your project.
And here is what I did so far:
Started a new iteration of my personal Live Programming research: LivePipes provides functions that connect to the IDE and deliver feedback while typing.
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#.
Implemented a generic version of a Pratt Parser in F# that is specifically optimized for parsing expressions of pure functional programs (unreleased).
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 (realized 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 .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.
Released the first version of LookHere!.
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 220.127.116.11. 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.