There is a short list of apps every developer is contractually obliged to build at least once: a to-do list, a Markdown editor, a podcast player, and — the final boss of clichés — a weather app. I held the line for twenty years. This is the confession of how I finally caved. For most of those t…
I have been polishing Wellenreiter — my streaming-radio app for iOS, iPadOS, macOS, and CarPlay — for the better part of a year. The newest addition is a standalone macOS menu-bar app: the whole experience in a popover that opens on a global hotkey. The feature list is short and unremarkable: it pl…
Scanning a barcode is the happy path. Point the camera, hear the beep, done. But in an automotive diagnostics app the camera is not always an option: the VIN sticker is peeled off, the car is on a lift in bad light, the value arrives over a diagnostic link and a human has to confirm it by hand — or …
Something has changed for me at the bench in the last few weeks, and I want to write it down before it stops feeling new. I have spent the last decade building or using diagnostic tools that put a human between the agent of investigation and the bus. CANcorder, Swift-CANyonero, my Linux toolbox — mc…
In October 2020 I wrote that I had decided to go all-in on Swift. Not just on iOS and macOS, where Swift obviously belongs, but pretty much everywhere: servers, command-line tools, reusable frameworks, UNIX-like systems, perhaps one day even the kind of embedded-ish tooling that had followed me arou…
I have been writing a macOS userspace driver for a CAN bus adapter. The device uses a custom USB protocol — bulk endpoints, vendor control transfers, a command language with opcodes and terminators. The Linux kernel has an open-source driver for the same hardware, so porting it should have been stra…
For a while, Bluetooth Low Energy in the iOS Simulator was one of those things that half-worked often enough to be useful. It was never a perfect substitute for a real device — Bluetooth never is — but it helped. You could at least keep the edit/build/run cycle on the Mac while working on UI, parsin…
CANcorder, my CAN bus logger and analyzer, is built with Tauri 2 and React 19. It is a desktop app for macOS, Windows, and Linux — written in TypeScript on the frontend, Rust on the backend, and held together by Tauri’s IPC bridge. For the first year of development, this stack felt like a gift. Com…
I have spent the last couple of days optimizing the iPhone companion app for CANcorder (forthcoming), my CAN bus logger and analyzer. The original iOS frontend was written in SwiftUI, which made it wonderfully quick to build and iterate on. For modest amounts of data, it was fine. But “modest” is n…
This website has been running on Lektor, a Python-based static site generator created by Armin Ronacher (of Flask fame), since I moved away from WordPress years ago. Lektor served me well: its file-based content model, Jinja2 templates, and simple admin UI were a good fit for a personal site that do…
For the last couple of months I have been spending more time on the Linux side of my automotive setup again. CANcorder is still the place where I want to look at traffic, decode transport protocols, and make sense of what an ECU is doing. But the boring bench work around it still happens on Linux: b…
Back in 2016 I fell deep into the rabbit hole of automotive diagnostics. What started as “let me decode one CAN frame” quickly became a multi‑year tour of every adapter I could get my hands on: ELM327 clones, genuine STN units, Bluetooth dongles, USB‑serial cables, Wi‑Fi gateways, even a few early B…
Some projects aren’t just about building software—they’re about preserving memories, honoring the past, and sharing what shaped you. RetroPlayer is one of those projects for me. Growing up in the 1980s, I spent countless hours in front of a Commodore 64, and later an Amiga, absolutely mesmerized by…
Long before the endless scroll of release notes and automatic updates, software came packaged in physical media: floppies, CDs, DVDs. Version numbers were lovingly crafted—Version 3.5.2 meant something. It signaled a meaningful hierarchy: major features, minor improvements, bug fixes. You’d carefull…
I learned C++ in the late 1990s, back then with Microsoft’s Visual Studio C++ and the Microsoft Foundation Classes. When I left Windows behind and embraced Linux and macOS, I concentrated on Objective-C, Vala, and (since 2020, being late to the game) Swift. Just recently I started getting into MCU p…
When activating an Apple Watch eSIM, the process is usually pretty straightforward. Most providers are using a QR code that you can scan during setup – this transfers the eSIM data and off you go. Not with O2 though – at least here in Germany; they open a builtin web browser and require you to log…
Converting an existing Objective-C/Swift framework to Swift Package Manager I’m a big fan of the database library YapDatabase, which is a collection/key/value store for macOS, iOS, tvOS & watchOS. It comes with many high level features and is built atop sqlite. In the last 5 years, I have used t…
While I never got much into natural languages (beyond my native tounge, a halfway solid english, and some bits and pieces of french), I have always been fascinated by (some) programming languages – I even wrote books about some of them. I (literally) grew up with BASIC and 6502/6510 ASSEMBLER – on t…
For some years now, I have been feeling like Don Quixote fighting against windmills. This is a multidimensional feeling that has its roots in both personal and professional circumstances. With regards to personal issues, I won’t go into details as I want to keep this blog free from politics, society…
Here’s the new decade. 2019 went by as an important year where I regained some of my health, discipline, and motivation. Next to the inevitable iOS development, the most important milestones were the release of the 2nd edition of my Vala book and my first music album after more than two decades of i…
I’m enjoying creating music since 1981. First on analogue synthesizers (SIEL OPERA 6) and drum machines (ROLAND TR-505), later on with digital synths and workstations (KORG M1, KORG 01/Wfd). From 1986 to 1989 I created my music mainly on the COMMODORE AMIGA. The PC platform almost killed my motivati…
When I started this blog in 1999, it contained mostly personal stuff. Blogs were a new thing, Facebook and Twitter were five respectively seven years away, and it felt appropriate to me. Later on, I switched to english and added more about my professional projects – hence the focus moved to rather t…
As promised in the previous installment of this column, I have now imported all my old blog posts from Wordpress. In case you have a similar requirement, here’s how I did it: 1. Export your posts from Wordpress. Login to your Wordpress administration interface and then click on Tools → Export Data. …
Every five to six years I’m revamping my website. This is now the 4th major incarnation. I created my first website somewhere in the 1990s – back then handcoded with HTML. I vaguely remember that it looked better than many others due my use of Bitstream’s TrueDoc Technology. In 1999, I started my bl…
And another year has passed – pretty quickly, if you ask me. Last year was the chance to close a bunch of construction sites and start new ones. Next to releasing two iOS apps that I have been working on for a while, I finally got the time to publish another book. I’m currently working on a round of…
Once and then I try to sneak work on my pet projects into my daily routine. Today I want to tell you about two projects that I have released this month: SongBook Pro for iOS, and Introduction to Vala Programming. SongBook Pro for iOS SongBook Pro is a complete rewrite of my iOS songbook app for guit…
Salut! I usually write a FOSDEM retrospective every year, although, as you might have (not) seen, last year was different. While I’m sure 2017’s FOSDEM was a nice weekend I almost can’t remember anymore. I had a severe cold (already when coming there, usually I only have a cold when coming home…) an…
For the 10th anniversary since the legendary OpenMoko announcement at the „Open Source in Mobile“ (7th of November 2006 in Amsterdam), I’ve been meaning to write an anthology or – as Paul Fertser suggested on #openmoko-cdevel – an obituary. I’ve been thinking about objectively describing the motivat…
In the good tradition about writing a blog post on my way back from a FOSDEM (see earlier installments e.g. for 2012, 2010, 2008, and 2007), here is this year’s take. No issues with transportation this time (I’m still in the train, but it looks good so far), other than road construction works at the…
’Tis the season to let the year pass by and make plans for the next one. 2015 was what I’d call a “transitioning” year. Although LaTe App-Developers had been shut down in 2014, we still had to spend most of 2015 to work on some things our clients already paid for. This is now finally done and I can …
I’m absolutely relying on working with issue trackers for managing features, bugs, and releases. Although it’s always a bit cumbersome to teach (new) clients how to properly use it (it takes quite some hand holding and improving their tickets), sooner or later they all realize that it’s way better t…
Hi fellow readers, this time we’re talking music. For quite some time, I’ve been wondering about the sound of a certain area which seems to be abandoned by pretty much all bands. It was the area when sampling technology became affordable and where a bunch of musicians adopted this (back then very li…
After the outage of the VM where freesmartphone.org has been hosted on, we are now almost fully back. I have integrated the DBus API documentation (that has been hosted on the doc subdomain) into the top level documentation which now lives at https://www.freesmartphone.org. The source code has alrea…
This is a post about the state of Sid-, Mod, or PokeyPlayer on iOS. Coming from the background of the C64 and AMIGA demo scenes, I always thought that every platform needs a way to play back the musical artwork created by those great musicians in the 80s and 90s on machines like the Commodore C64, t…
Thanks to the fabulous wayback machine, I have imported my blog from between 1999 and 2006. It’s not properly formatted and most of the images are missing, but it’s somewhat interesting to read the things my younger self wrote about 15 years ago.
I have pondered a long time whether to learn web programming for my customers’ services app, so that they can access their user & device statistics, crash logs, manage service messages, push messages, etc. I now have decided not to pursue this path. Web technology is a mess, even more than mobil…
After 6 years being co-director and CTO of LaTe App-Developers, I feel it is time to make some changes. It’s not that mobile development is no longer interesting to me, however after doing (too) many small (5-20 person days) iOS projects, I need some new challenges. Project work has been limiting my…
Every 6 years or so I’m revamping my website. This is the 3rd incarnation now (yes, I started early) featuring a new wordpress theme, a clean layout, and – most important – serious content improvements.
So 2013 is finally over and it’s been an energy-sapping year, business-, baby-, and building wise. Business. The stagnation that was present for pretty much the first half of the year and which forced us to downsize a bit, had been replaced by too many projects all at once in the 2nd half of the yea…
Salut! I didn’t blog for quite a while, since – as I’ve mentioned before – these days, Facebook seems to me the more appropriate forum for shorter status messages. That aside, let me recap how things are these days. Since the birth of Lara Marie, quite a lot in my life has changed. I haven’t been co…
Hi folks! Obviously I don’t manage to update this blog more than a few times a year. I must confess that – for smaller status messages – I find Facebook and Twitter working quite well. So if you want to stay in touch a bit more, hop over to my page @ Michael Lauer or follow my Tweets @ DrMickeyLauer…
After having skipped FOSDEM in 2011, I wanted to go this year, especially because of the Golden Delicious stand where we had the OpenPhoenux GTA04 on show. A lot of people came around and were excited that someone picked up where Openmoko had left in 2009. The GTA04 is the true successor of the Free…
Information Technology has seen a really crazy year. Among all the smaller incidents, the big bangs involved Nokia partnering with Microsoft, abandoning Maemo, HP driving with WebOS against the wall, patent lawsuits everywhere. What that means for FOSS-lovers is clear… you can’t trust any company to…
Tempus fugit. I can tell you. Even more so, if you have a baby. I must confess I somewhat underestimated the impact the baby would have on my spare time. In some weird mindset I really thought I could continue working as usual on my open source projects… as we know now I couldn’t. I completely lost …
After letting us wait for a bit longer than scheduled (13 days), the hospital initiated the contractions. For the first couple of hours, everything went just perfect, but then the little one got stuck on the way and we had to resort to a cesarean section. Lara Marie Lauer was born 8th of June at 04:…
And now for something completely different… while we are all waiting for my baby to arrive (who was scheduled for 25th of May), she just received her first greeting card – together with a personalized bib and a towel (with integrated hood – pretty fancy!) from my good friends at #openmoko-cdevel. Gu…
Howdy, dear reader! It’s been a while on this blog, mainly due to the fact that many short status updates are better twittered than blogged. Then again, as promised / threatened in last year’s installment of this column, I had to spend most of the time this year with iOS development, rather than wit…
Since the last post about my growing feeling of uneasiness, I did a couple of things to improve my mood. First, I stopped spending every free second of my spare time at the computer, writing FOSS. Second, I reactivated some other recreational interests I also have, but which have been pushed back fo…
Every now and then you come to the comfortable situation that a client requests you to develop a technology for a product of theirs, which you can then use in your own productions as well. This happened to us in the last couple of months, when we had to create an audio streaming engine for iOS for a…