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.
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.
Android Apps
Minimalistic Text
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.
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 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.
Muzei Plugin: Bing Image of the day
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.
Open Source Contributions
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.
Other
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
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.
From the old days
Sniffthat
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