Android

3/x: ๐‚๐ซ๐จ๐‹๐ข๐ง๐ ๐จ: pipelines

Written by  on August 9, 2026

In a feature-driven world, support-software rarely gets the stage it deserves. Ask a stakeholder what a pipeline is and get ๐Ÿ™ƒ .. which is sad. Because how else do you want to verify it you built it correctly?

Anyway: automated testing and linting is always part of my process. From day one – not in the final stages. Of course, you should have at least a tiny build-able fragment of your project, but the earlier you add #automation, the better. I usually run with local and continuous integration pipelines.
This project is hosted on GitHub, so I went with GitHub actions for the CI. We have 20 named pipeline stages which form a single commit gate. “Cheap” ones like linting and format checks run before the more “expensive” ones, which need a build. 129 automated tests are done, which cover 98% of the code. Together with the 30 unit and widget tests and a real-target integration suite we have fitting coverage. The local version runs as pre-commit hook, the GitHub one is also capable of doing the releases. And so far I made six public releases.
Also, Dependabot is integrated, so if I would miss the release of any dependency, then this neat little bot would create an automatic PR (pull-request) for me. ๐Ÿฆโ€โฌ›

The pipeline turns engineering expectations into executable policy. ๐ˆ๐ญ ๐ฐ๐จ๐ง’๐ญ ๐›๐ฎ๐ข๐ฅ๐ ๐จ๐ซ ๐ฉ๐š๐ฌ๐ฌ, ๐ฒ๐จ๐ฎ ๐œ๐š๐ง’๐ญ ๐ซ๐ž๐ฅ๐ž๐š๐ฌ๐ž. ๐’๐ข๐ฆ๐ฉ๐ฅ๐ž ๐š๐ฌ ๐ญ๐ก๐š๐ญ.

If you want to give this Croatian-German-language learning app a try, download the package from https://github.com/marcelpetrick/CroLingo/releases/tag/v0.0.63 and run it on your Android phone.
Have fun and enjoy learning!

I’ll keep you updated on what comes next. ๐Ÿ‡ญ๐Ÿ‡ท โค๏ธ ๐Ÿ‡ฉ๐Ÿ‡ช

 

#continuousIntegration #continuousDeployment #pipelines #automation

2/x: ๐‚๐ซ๐จ๐‹๐ข๐ง๐ ๐จ

Written by  on August 8, 2026

As written, I had started to gather all ideas and document what we want. Of course, there exist magic tools which transform unstructured input into well-defined #requirements and which help you to make them conflict-free, unambiguous, atomic, feasible and verifiable. Yada yada, you know the drill.

Then the development started, and we have a first #MVP (minimum viable product) now, as an Android release package and Linux Desktop build. The first content has been added, so the first user feedback could be gathered today. I have to admit, offering an app with well-known competitors yields a lot of “oh, but here it should behave like this” … anyway, input from the target audience is really dear to me. So we now have plenty more things to implement and some to adjust. But we did not experience a single crash or logic deadlock.

โœจ ๐€๐ง๐ ๐ฌ๐จ๐ฆ๐ž ๐ฎ๐ฌ๐ž๐ซ๐ฌ ๐œ๐จ๐ฎ๐ฅ๐ ๐š๐ฅ๐ซ๐ž๐š๐๐ฒ ๐ฅ๐ž๐š๐ซ๐ง ๐ฌ๐จ๐ฆ๐ž ๐ง๐ž๐ฐ ๐ฐ๐จ๐ซ๐๐ฌ. โœจ

I’ve added on-device screenshots from one of the recent builds. If you want the hands-on experience, go to https://github.com/marcelpetrick/CroLingo/releases/tag/v0.0.40

I’ll keep you updated on what comes next. ๐Ÿ‡ญ๐Ÿ‡ท โค๏ธ ๐Ÿ‡ฉ๐Ÿ‡ช

New project: ๐‚๐ซ๐จ๐‹๐ข๐ง๐ ๐จ ๐Ÿ‡ญ๐Ÿ‡ท๐Ÿ‡ฉ๐Ÿ‡ช

Written by  on August 7, 2026

Just wanted to share that I started the design and implementation of an app for learning Croatian.
The market for language-learning apps does not offer the combination I need, so it is time to roll our own custom software.
Also a playground for #Flutter and #Dart, since I have so far only used Kotlin for Android apps. And it will run on x86_64 Linux desktops as well. Maybe I’ll do an iOS version too.
Most of the preliminary work was spent on the design and concept. #Ideation is quite important in the age of agentic AI.
Of course, I will avoid writing code and keep you updated ๐Ÿ˜‰

RamBLE and the (german) Covid19 tracker

Written by  on February 4, 2021

Quicker posts, less retardation! One of the goals for 2021 was to 0. write more often, 1. faster after ‘doing’ and 2. therefore also covering more things which were ‘touched’
There’s still a pile of topics left from 2020 xD

In Novembre a colleague and me talked about one of his acquantainces which wrote an iOS-app, which can show how many “Corona Warn App”-users are nearby. I was puzzling over this and also wondered if really some special app or some bluetooth-receiver-tinkering is needed. I still own that one BT receiver for the Raspberry.

First: So, quick check for BT sniffers in the playstore showed RamBLE.
Second: 5 min of googling found the UUID used for the exposure notification: “fd6f”.

So, let’s combine and see what is shown for an location I traverse often:

Quintessence: check the market before developing something ๐Ÿ˜‰

The moment you login the first time remotely via app to your Redmine <3

Written by  on August 7, 2017

aka: Accessing Redmine outside your local network via Android-app.

I set up port-forwarding via the router. Dynamic name is set via the Synology NAS.
So the url to use is: http://metrik.myds.me:5002/redmine

And after testing 5 (in words: FIVE!) apps with really mixed results, I choose:
Redmine Mobile app made Easy

360ยฐ panorama: quick and easy

Written by  on December 14, 2015

The ‘magic’ behind 360ยฐ panoramas is nothing new. I remember stitching together manually the pictures from the Canon Ixus 800, later switching to AutoStitch and other solutions. But after I used Google Kamera as replacement for the pre-installed camera-app on the smartphone and also acquired a cheap 10โ‚ฌ-cardboard I had a jaw-dropping moment of enlightment: wow! This is amazing. And to whomever I showed this (techies, friends, parents, ..) they were also impressed. A freely explorable panorama with head-mounted gear is soo much much descriptive of the scene than the regular 2D-photos. Yes, I still stick to analogue photography, but If you want to show somehow how the sights looked and how the surrrounding environment looked like, then stick to a panorama. Creating them is quite is, but this is a different story.

Too cut it short: I was always looking for a way to present those views also to people far away. Which don’t have a smartphone. Jeremy Heleine created with his Photo Sphere Viewer a truly amazing in browser-javascript-library. I just added some of my own examples (in a pretty bad boilerplate-way *cough*). But this is still great! I love it.

Want to visit Brรผssel, Leipzig, Kiel, Wismar or Gรถteborg?

 

Bye bye Stagefright 2.0 (and other issues)

Written by  on October 22, 2015

Since the discovery of the big vulnerability called Stagefright (summer 2015) some additional were disclosed. Time for an update of the already cyanogenmodded Galaxy S4.
Found a good description of what the names for the different gapps-packages mean: page (includes downloads). I choose pico!

  1. 5 min real work: get the ROMs, put them to the SD-card, boot into TWRP; select the nightly, then add also gapps-pico, wipe DALVIK, reboot
  2. 20 min waiting: after flashing for first boot-up (self-configuration) .. works like a charm

No one said this will be easy: GT-i9506 with CM12 & no bloatware

Written by  on July 22, 2015

I just wanted to replace the OEM-Samsung Lollipop with the latest CyanogenMod-version on my Samsung Galaxy S4 LTE (GT-i9506).
So the simple plan was to: root the device; replace the ROM with CM12; add the Gapps-package; reboot and be happy ..
.. in the end I tried so many different ways involving Linux Mint, OSX 10.9 and Windows 7 as host-system; flashing via adb, heimdall and Odin; different nightlies and kernels; several gapps-packages and seven hours lifetime .. but I learned a lot ๐Ÿ˜€

tl;dr:

    • Win7: install Samsung driver; reboot, reboot, reboot
    • root with CF-AutoRoot: guide // download – use “root checker” or some other app to verify the superuser-access before rebooting into download mode
    • flash TWRP via Odin
    • flash CM12-nightly: download
    • flash gapps: download flash minimal GApps: download (is without the useless crap)
    • wipe cache/dalvik
    • reboot and setup everything from scratch (or with some backups … you created some, didn’t you? ๐Ÿ˜€ I used “Easy Backup & Restore” – worked perfectly. K-9 Mail can restore itself ..)

edit: 20150724 replaced Gapps with “GAPPS minimal”; restored all settings, SMS, contacts, …