Projects

Flutter / Dart

Dart-apitool

Dart-apitool is a tool to help check if a package adheres to semver.
This tool has been born out of a need that we encountered at BMW to make sure to release internal packages in a way to not break the referencing project.
It does analyze the public API of a package and is able to diff that public API with a reference version. It then can check if the new version you plan to use is matching the breaking and / or non-breaking changes you introduced in your public API.
In the meantime I have transferred this tool to the bmw-tech organization to make it more official and to make it easier to maintain.

dart-apitool on Github dart-apitool on pub.dev

xterm.dart

xterm.dart

To play around with Flutter I decided to use Flutter to create another version of my terminal emulator. For handling the core terminal logic and visualization there is already a Flutter plugin: xterm.dart.
This package worked quite well but was missing some features that my terminal emulator written in .Net already had. One of those features was a reflow logic that corrects the automatic line wrapping of already printed terminal lines.
Because of this and some other features I missed I decided to contribute those to the package.

xterm.dart on Github

Android Apps

Minimalistic Text

Minimalistic Text Logo Minimalistic Text Banner

Minimalistic Text has started out as a simple proof of concept and - with the help of XDA developers - has grown quite big.
It has over 5 million downloads from the Google Play Store and even has been featured in the Play Store.
Today it has become a bit old and outdated, but there is still a core fan base that uses it.

I stopped actively working on it. The reasoning for that step is explained here. The app itself will remain in the Google Play Store as long as possible and of course I will fix any critical issues that might occur.

Get Minimalistic Text on Google Play
As the app is not actively developed anymore and the Play Store will no longer provide the app to everyone, I decided to provide the APK file here. For more information you can read the blog post about the decision here: blog post.

PaperLaunch

Paperlaunch Logo

PaperLaunch has been created to fill a gap I had in available apps.
I wanted to have a side launcher that activates when sliding in from the side but allows for immediate launch of an application (so not sliding in, lift finger, tap on app)
There has not been any app like that, so I decided to create one.
At roughly the same time Google announced the Udacity Android development program. I was taking part and as this program required creating an app in the end I used PaperLaunch to finish that course.

PaperLaunch on Github Get PaperLaunch on Google Play

Muzei Plugin: Bing Image of the day

Muzei: Bing Image of the day Logo

Muzei: Bing Image of the day is a plugin for Muzei, an Android Live wallpaper that allows having different wallpaper sources and change the wallpaper automatically.
This plugin fetches the current image of the day from Bing (supporting different markets) and provides it to Muzei.

Muzei: Bing image of the day on Github Get Muzei: Bing image of the day on Google Play

Open Source Contributions

Qml.Net

Qml.Net

While trying out different technology stacks that might be interesting for the UI development of home appliances I wanted to run .Net Core on our Linux based arm hardware.
This worked quite well, but there is currently no real rendering framework for .Net Core.
As we already use Qt (with C++) I searched for a .Net binding to Qt that is able to integrate with QML.
The only project I found was Qml.Net (qml-net-core at that time) that was in an alpha stage and did not really work in our context.
So I jumped on board and brought Qml.Net, together with its author Paul Knopf, a big step forward. In the end it ran on our hardware and was feature complete for the features we would need.
Today it is already used by Paul in medical devices.
Sadly the amount of ROM that is needed is not low enough yet for the restrictions on our low-end range of hardware.

Qml.Net on Github

Other

Remote Lego cars

Remote Lego cars

Together with a friend of mine (Florian Wachs) we tweaked Lego technic cars to be remote controllable via Bluetooth.
Basically to try the “physical web” how Google called it. Having the Bluetooth enabled device sending a beacon that the Android device then receives. This beacon transports a URL and that URL provides an SPA that uses WebBluetooth to control the car.

It turned quite a bit into an electronics project and involved Web development, Android Development and Embedded Development.

If you are interested you can download a presentation I made for this project here: Presentation

Remote Lego cars on Hackster.io Remote Lego cars on Github

Parrot Zik 2 Supercharge

Parrot Zik 2 Supercharge

In 2015, I had some headphones named Parrot Zik 2. At that time they had one of the best noise-cancelling available to normal human beings.
They fell apart pretty quickly, and I had to return them but while I had them I was a bit annoyed because there was no easy way to control the level of noise-cancellation without opening the Parrot Zik app.
So I wanted to have a widget on my home screen to do that.

The project contains a set of tools to decompile the Parrot Zik app, patch an API into it and recompile it as well as a widget making use of that new API to provide the desired functionality.

Remote Lego cars on Github

From the old days

Sniffthat

Sniffthat Logo

Sniffthat was the first “app” I ever created. Those programs weren’t called “apps” at that time.
It has been an active Wi-Fi sniffer for Windows CE devices written int C# (using the .NET compact framework) and was my first Open Source project.
Originally it was hosted on Codeplex, but because Codeplex was shutting down, I rescued the code and put it on GitHub for memory purposes 😁.
Archived version on GitHub