Hire Me!

Biography » My IT history story

40+ years of IT experience have been quite a ride.

2024 ... to be continued ...

2023 Finally respecting Alan Kay's visionary quote "People who are really serious about software should make their own hardware." and started the adventure of designing my first custom OBD2 adapter. Diving into the Espressif family of micro controllers and moving a bit outside of my comfort zone by working on the schematics and the PCB. Designed and implemented a custom ESP32(S3) firmware and a driver for the CAN-FD controller MCP2518fd. Started to use C++ again ­– first time since 2007.

2022 Expanding my Swift knowledge by using the new Swift 5.5+ concurrency features to create a more solid technology platform for OBD2, UDS and KWP car diagnostics, including more Swift-cross-platform infrastructure that also runs on non-Apple platforms. Learned about the proprietary DoIP-predecessor from BMW: HSFZ (High-Speed-Fahrzeug-Zugang) protocol, which is a simple container protocol for UDS over Ethernet. Wrote a HSFZ dissector for Wireshark. Implemented more automotive transport protocols in my now proprietary Swift-UDS framework: HSFZ, CCP, and XCP). Enhanced my go-to-utility Shark for converting various stringified APIs to enums to work with SwiftUI and AppKit. And while I was there, I took over maintainership of this utility :-).

2021 Revisited the car diagnostics area, this time moving a layer beyond OBD2 and learned about the Unified Diagnostics Service. Started with a complete new set of Swift libraries for automotive, in particular for UDS-based reprogramming of Engine Control Units. Released a motor tuning app in cooperation with TPE-Europe: TPE-Tuning. Wrote a macOS command line tool for bridging a serial terminal to BLE: Core-Bluetooth-Tool. Questioned some old habits and learned a bunch of new tools, e.g. Fish, Gitea, and SwiftUI – Apple's new declarative approach for coding UIs. And then I got side-tracked by a hardware project, in which I began developing an own OBD2/CANBUS-adapter, based on a Raspberry Pi Zero, Linux, and Vala. Learned some cool things about GPIOs, I2C, and the like, on the way.

2020 Finally started learning Swift and guess what: As of Swift 5, I discovered things to like. Very expressive, very rich, very complex. Reminds me of C++ in some ways. Developed my first two client apps using Swift. Started rewriting my proprietary Apple support libraries with 10 years worth of battlefield-tested Objective-C code in Swift. Will continue to develop the functionality into a new set of frameworks as a free software project – the code is on github.

2019 Worked on a revised edition of my Vala book and published it via Apress – available here. Developed a new version of my Wellenreiter Internet Streaming Radio app, now with CarPlay and iOS 13 support. As Wellenreiter is my technology evaluation app (which gets rewritten every couple of years to explore new practices), it is and will remain free forever. Learned a bit about Near Field Communication and how to use it from iOS. Held a presentation about CarPlay in theory and practice on the annual Macoun conference – the slides are available.

2018 Released a new professional app assisting the development of Bluetooth Low Energy hard- and software: BLE Laboratory. Also released a new app for guitar and ukulele players, the SongBook Pro app with a strong focus on typography and cleanliness. Finally (it’s been only 10 years), I published a book about learning the programming language Vala – available as eBook or printed edition. Held a presentation about typography in apps at the annual Macoun conference – slides are available. Did some maintenance upgrades on my existing apps featuring support for iOS 12 and the new iPhones (X, XS, XS MAX, XR).

2017 Worked on a new app for professional IPcam monitoring and event research, the Surveillance Pro app, including dedicated support for MOBOTIX and ZONEMINDER. Wrote a companion server using Python, aiohttp, and motor (asyncio driver for mongodb) to facilitate 24/7 remote IPcam push notifications. Dived into Zeroconf (Bonjour) and assorted techniques to provide the best possible autodetection for IP cameras. Held a presentation about Zeroconf on the annual Macoun conference – slides are available.

2016 Worked on the Cargo Objects Street Assistant project for LAWA Solutions, including the App-UI concept and implementation as well as the specifications and implementation of the Client/Server REST API. Wrote the new PORTA II breakdown service app for ADAC e.V., Europe’s largest automobile club. Released my new internet streaming radio client called „Wellenreiter“ for iOS and tvOS. Dived into the OBD2 on-board-diagnostic protocol for vehicles and wrote an ELM327 communications client for iOS. Released an iOS/macOS OBD2 support library as open source. Released an OBD2 diagnostics app for iOS. Held a presentation about OBD2 via BTLE on the annual Macoun conference – slides are available.

2015 Developed a web app as the frontend for the app services I’m offering to my clients (Push notifications, Info messages, Crash logging and analytics, Session and navigation tracking, etc.). Familiarized myself with Flask, Bootstrap, and mongodb (and a tiny bit of necessary JS). Moved the FSO special interest middleware source code to github and put out new releases. Learned how to serve many REST clients efficiently with the new asyncio framework that debuted in Python 3.4. Cofounded a new company named Mediabridge Technology GmbH. Developed a novel system of computer-based image analysis combined with goods recommendations. Submitted this to the german patent office as DE102015007434.2 (patent pending).

2014 As per the end of this year, I have resigned as being co-director and CTO of LaTe App-Developers – after 6 years of iOS and Android project work I wanted to revitalize different skills again. Also, after more than three years being absent from the open source scene (mostly due to my daughter Lara Marie), I started catching up with some of the projects that are of interest to me, in particular FSO, Python, and Vala.

2013 Spending most of the time getting more and more specialized with regards to iOS, including work on the long-overdue 3.0 update of the Börse Frankfurt iOS app, which happened to be a complete rewrite. Presented this work as part of the annual Macoun conference – a video is available.

2012 Supervised the Android-port of the official Frankfurt stock exchange app, which is available on the Google Play Store. Although the Android port shares no code with the iOS app, I made sure it shared some of the backend and frontend design principles. Presented my work on the Lauer & Teuber internal support library on the annual Macoun conference – a video is available. Held the invited presentation „Torn Apart! The Challenge of choosing between open and closed ecosystems“ on the SmartDevCon conference in Katowice, Poland – the title reflecting my recent experience of working with open and closed source systems.

2011 Wrote the first prototype of iChordPro, an iOS-app for managing your guitar songs. Did the wrap-up presentation „OpenMoko — what’s left behind“ at the FrOSCon conference – a video is available. Stopped most of my open source activities due to my daughter Lara Marie being born. Continued developing iOS apps for various clients.

2010 As part of my CTO-job at Lauer & Teuber, I designed and developed various iOS apps, the most notable among those being the official iOS app for the Frankfurt stock exchange market (Börse Frankfurt). To make this happen, I also created the specification of a REST-API for communicating with the Frankfurt stock exchange data center. Technologies and Skills these days: Objective-C, iOS SDK, XML, JSON, HTTPS, fluid UI, asynchronous networking. Organized the OpenMoko devroom at FOSDEM and did some presentations on past, present, and future of the now-volunteer-driven project. Coauthored Just Radio (Original title: Volksradio), a lean-and-mean internet radio streaming app for iOS. Learned a whole lot about ICEcast and friends. Presented an insight into iOS audio APIs on the annual Macoun conference. Due to some ugly GEMA-related circumstances, the video is not available (I’m sorry).

2009 Created Vala-bindings for the Enlightenment Foundation Libraries. Coauthored the article Développement Embarqué sous GTA01/GTA02, with Jérome Blondon and Julien Cassignol, in: GNU/Linux Magazine France HS43, Editions Diamond, July 2009. Presented my work on FSO on the OpenExpo in switzerland — a video is available. Did a similar presentation about FSO for Chemnitzer Linuxtage. Presented my work on OpenEmbedded on the FOSS conference in Aalborg, Denmark. Unfortunately, due to the economic crisis on one hand and the success of both the iPhone and Google Android on the other hand, Openmoko had to close the telephony section, hence freesmartphone.org went on without funding. Cofounded the Lauer, Teuber GbR, offering consulting and development for iOS and Android.

2008 Started the freesmartphone.org FSO special interest middleware platform, created most of the original code base in Python, integrated it for the use with many platforms. Continued my freelance work for Openmoko Inc. as consultant and FSO integrator. Published an article about the OpenMoko project: ‚OpenMoko — Free Software for Mobile Phones‚ (Original title: OpenMoko — freie Software für Mobiltelefone), in: Bernd Lutterbeck / Matthias Bärwolff / Robert A. Gehring (Hrsg.), Open Source Jahrbuch 2008. Zwischen freier Software und Gesellschaftsmodell. ISBN 9783865412713, Lehmanns Media, Germany. Discovered the Vala programming language and fell in love with it, especially the asynchronous methods and the closures. I have been contributing a fair amount of stuff to it since then and are still maintaining some of the library bindings (e.g. linux.vapi). Redesigned and rewrote most of the freesmartphone.org special interest middleware using Vala. Started using Mac OS X in parallel to Linux, learning Objective-C and the iPhone OS SDK. Started working on my first iOS app ‚SidPlayer‚ (has unfortunately been removed from the AppStore since). Took part in the Google Summer of Code 2008 as mentor and coording Openmoko as mentoring organization, supervising the development of SMS and device middleware projects. Presented my work on Openmoko on a bunch of conferences, most notably the Bossa 2008 conference — a trailer video including yours truly is available.

2007 Did Freelance work for Honda Research Institute Europe GmbH, developing a simulation frontend application with Qt4 for the ASIMO robot. Submitted my doctoral thesis Component-based adaptive Middleware for mobile distributed systems‚ (Original title: Komponentenbasierte adaptive Middleware für mobile verteilte Systeme). Licensed to Shaker Verlag, Germany, who published this as ISBN 978383226071. Received my Ph.D. from Frankfurt UniversityPresented my work on Openmoko on the LinuxTag conference and the FrOSCon conference – a video is available. Took part in the Google Summer of Code 2007 as mentor and running Openmoko as mentoring organization, supervising the development of a media player and a web browser.

2006 Bought the Linux-based Motorola A780 mobile phone and joined the OpenEZX project community. I added the necessary glue to OpenEmbedded to build A780-images with it. Ported Opie to the A780 (and further) EZX phones. Contributed a tslib touchscreen driver plugin to the Enlightenment Foundation Libraries. Did freelance work for FIC, Inc., designing and developing the Linux-based OpenMoko mobile phone platform. Got rid of Microsoft Windows on my last machine – upgraded to Linux. Took part in the Google Summer Of Code 2006 as mentor, supervising the development of a GPE audio player.

2005 Did freelance work for PePLink, porting my cross-compiled embedded Python distribution to the PePLink MANGA Board. Added tons of software packages to OpenEmbedded to make it more and more useful. Wrote regular newsletters about the state of OpenEmbedded, OpenZaurus, and Opie. Presented OpenEmbedded on the FOSDEM conference, slides are available.

2004 Did freelance work for Tradesquare.NL, porting Opie to the MasterIA Beagle handheld. Contributed a JTAG utility chip driver for a rare variant of Xilinx XCR3128Xl-VQ100 flash chips with Philips manufacturer ID to the OpenWinCE project. Started EFL++, the C++ bindings for the Enlightenment Foundation Libraries, source code available on the project git.

2003 Cofounded the OpenEmbedded (and BitBake) projects together with Chris Larson and Holger Schurig in order to create a versatile build environment for embedded devices. OpenEmbedded turned out to be award-winning and very popular. It is in widespread use of both commercial and non-commercial vendors. The source code is available on github. For a while, I used to be president of the OpenEmbedded e.V., but resigned when my daughter Lara Marie was born in 2011. Learned a lot about IEEE 802.11b networking and created Wellenreiter II, a wireless scanner utility – in variants for Qt/X11 and Opie – the source code is on github.

2002 Wrote a book about advanced Python programming, in particular using various UI toolkits. Licensed it to MITP who released it as Python und GUI-Toolkits, ISBN 3826608445. Bought the Sharp Zaurus SL-5500g and joined the OpenZaurus community working on a custom Linux distribution for this device. Used OpenZaurus to maintain a custom cross-compiled Python distribution for arm-linux. Submitted a bunch of patches to the Python community in order to ease cross-compiling in the future.

2001 Submitted my diploma thesis Development and Evaluation of a Quality-of-Service Catalogue for a CORBA-based framework‚ (Original title: Entwicklung und Evaluation einer Dienstgüte-Bibliothek für ein CORBA-basiertes Rahmenwerk) and received my diploma. Wrote an extension of MAQS, which was a quality of service extension for the MICO, a CORBA ORB implementation. Started working as a full-time researcher for the institute of telematics at Frankfurt University. Topics including adaptive middleware, software architectures for E-Learning, and mobile distributed systems. Got an iPAQ from a colleague who was interested in doing wifi handover and multi hop adhoc routing experiments. I joined the handhelds.org community and managed to flash it and run an early version of Familiar Linux. Familiar Linux included a version of the ‚Open Palmtop Integrated Environment‚ (Opie), which has been just forked out of the ‚Trolltech Qt Palmtop Environment‘ by a bunch of open source enthusiasts. I submitted a patch to Opie-Sysinfo, wrote a wireless info applet for Opie-Taskbar and later became involved in the core parts of Opie. The code of Opie is now on gitorious and there is also a project page on OpenHUB.

2000 Found myself using more and more UNIX-flavors and less Windows. Learned LaTeX in order to beautifully typeset my diploma thesis, but migrated to LyX pretty soon, because of its higher abstraction level. It let me focus much more on the actual content. Dived into various UI toolkits, such as Qt 1.x, GTK 1.x, WxWidgets, Tk, and Lesstif.

1999 Discovered Python (1.5.2 back then) which was used in a lecture and immediately fell in love with it. Learned a lot about the world of networking (ISO/OSI, HTTP, Multicast, …). Wrote a small multi-threaded web server in C++. Read Refactoring: Improving the Design of Existing Code by Martin Fowler, which I found very influencing.

1998 Wrote an adaptation for the EMAGIC (now Apple) SoundDiver generic MIDI editor, adding support for the Novation Supernova family of synthesizers. Worked with different MIDI SysEx protocols using the WaveIdea Bitstream MIDI Controller.

1997 Decided to learn a bit more about digital audio, in particular handling uncompressed audio formats and editing. Bought the Yamaha 03D Digital Mixing Console, controlled it via MIDI, and used it for mixing multi-channel audio.

1996 Evaluated the Java programming language. Didn’t like it (and I still don’t). Read Design Patterns. Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides and although it was quite some heavy stuff to digest, I loved it and learned a lot from this.

1995 Got Windows 95 and actually enjoyed it pretty much, in particular the first serious attempt towards a consistent set of human interface guidelines (HIG). I love common controls, no matter what you call them these days… ‚widgets‚, ‚views‚, ‚activities‚, etc. Here is the (now ancient) Windows 95 HIG for reference.

1994 Moved to the Win32-API using Windows NT 3.51 (most stable Windows-version ever, that was before they moved the graphics services back into the kernel). Technologies and Skills: C, C++, Microsoft Foundation Classes (MFC), MIDI. Installed my first Linux distribution with kernel 1.1 patchlevel whatever, using a myriad of floppy disks. It wasn’t that impressive, but I could at least use the same command line commands that we were using at university workstations.

1993 Began studying computer science at Johann Wolfgang v. Goethe University‚ in order to support my practical experience with the necessary theoretical foundations, such as data structures, algorithms, grammars, computational complexity, and – last but not least – mathematics. Familiarized myself with the various UNIX platforms we had at university, such as HP-UX, Solaris, and AIX. Learned MODULA-2 as part of an introduction into algorithms.

1992 Released my 2nd commercial software, Mediathek, a media database and user management software for the Videoinsel‚ video rental store (operated by TREPAN MEDIEN GbR). The software was written in Borland Pascal 7.0 (which was one the fastest one-pass-compiler back then).

1990 With the AMIGA platform slowly fading into oblivion, I bought my first PC (486DX2-66, from ESCOM) and dived into the completely different world of IBM, Intel, and Microsoft technologies. Technologies and Skills: MS-DOS, Win16-API, Borland Pascal.

1987 Released my first commercial software, Toolkit‚ for AMIGA, a multi-functional assembler, disassembler, chipset diagnostics, and memory monitor utility. Licensed to Heim Verlag Darmstadt, published as software accompanying the german ‚Kickstart‘ AMIGA magazine. The software was fully written in 680×0 assembler and was a real gem for AMIGA power users and developers. It’s now available as public domain.

1985 Got a Commodore AMIGA and started with sound & graphics programming. Later on, joined various (now legendary) demo scene groups, such as ‚TGM-Crew‘, ‚THRUST‚, ‚Traitors‘, ‚THREAT‚, and ‚Supreme‚. Technologies & Skills: 680×0 Assembler, AMIGA OS, Low-level chipset programming. Read more about these activities on my dedicated AMIGA page.

1982 Got a Commodore C64 and did graphics and game programming. Founded the coding crew ‚MST‘ (Magic Software Team) with my (then) good friend Boris ‚The Frog‘ Müller. Technologies & Skills: PEEK, POKE, Commodore Basic (including various basic extensions), MOS 6510 Assembler, Low-level chipset programming.