ETag caching with OkHttpRecently, a discussion arose that our app startup time felt slow. Our first guess was that this was due to the “big” /bootstrap endpoint…Nov 18, 2024Nov 18, 2024
Stay Curious and Play — My attempt to make use of generative AI at workI’m by far not the hype-driven type (anymore). In general, I don’t use new tools or “things” just because they are hyped. However, I have…Oct 18, 2024Oct 18, 2024
Unveiling the Reality: My Experiment with Non-Transitive R Classes and Compilation AvoidanceIn December 2022 we switched from the traditional transitive R classes to the back then relatively new non-transitive R classes behavior…Feb 16, 2024Feb 16, 2024
Published inStackademicThe most condensed guide to publish to Maven Central with GradleNov 29, 20231Nov 29, 20231
A bird’s eye view of the ioki Android app architectureJust recently, I was assigned the task of documenting the Android app architecture for the ioki app. Since this was on my list of blogs I…Sep 12, 20231Sep 12, 20231
The concept of a “developer-facing language” on AndroidThe Android localization matching system is quite handy. You can define your “default strings” in a directory named values, and all…May 24, 2023May 24, 2023
sourceCompatibility, targetCompatibility, and JVM toolchains in Gradle explainedAlthough I have to admit it is complex, it is quite easy to understand once you know what they do.Apr 21, 20239Apr 21, 20239
Streamline your development process with a convenient Gradle pluginAs your Gradle project grows and you decide to split it up into multiple modules, you will quickly find yourself copying and pasting your…Apr 6, 2023Apr 6, 2023
My attempt on explaining Kotlin CoroutinesI recently found a super nice example that shows how Kotlin Coroutines work. It provides the bare minimum of code but still shows “all” the…Feb 27, 2023Feb 27, 2023
What is R8 and how we enabled itWe just recently enabled R8 in our Android app. What does this mean? Why do I sometimes use the term proguard and even added proguard.pro…Jan 30, 20232Jan 30, 20232
Jetpack Compose: remember, mutableStateOf, derivedStateOf and rememberSaveable explainedIf you have a composable function you might stumble over the following block of code. You might have even written it by yourself:Nov 25, 20229Nov 25, 20229
Announcing the global ioki Hackday 2022And you can be part of it to get some swag!Sep 15, 2022Sep 15, 2022
Projects of our Hackday 2021Same as last year, I organized an Hackday at my current company. Luckily, we could spend this year together in the office, and not…Oct 11, 2021Oct 11, 2021
Something about Google API keys, how to secure them, and what Firebase got to do with this.Let us start with a simple use case: Imagine we have to build a web app where you can enter an address and you get the latitude and…May 10, 20211May 10, 20211
Our way of migrating from RxJava to Kotlin CoroutinesAll of the following decisions and thoughts about moving from RxJava to Kotlin coroutines originated from a meeting where one of us said…Apr 14, 20212Apr 14, 20212
Published inGoliciousComparing ioutil.ReadFile and bufio.ScannerI just finished my first review meeting in a Golang learning group at work. Today I want to share a very interesting discussion with you…Feb 24, 20212Feb 24, 20212
The ioki Design DaysAs a mobile app developer or app designer, you may know the issue. Over the years, while both teams iterate over the app, you start…Dec 9, 2020Dec 9, 2020
Published inGoliciousA first look at GoroutinesBefore I show you code, let me explain my current project, which issues I faced there, and how Goroutines fixed these.Nov 12, 2020Nov 12, 2020
My Hacktoberfest storyDigitalOcean, the company behind Hacktoberfest, “asked me” several times about sharing my story. If you are like me and participated in…Nov 4, 2020Nov 4, 2020
How I organized a remote HackdayOn the 29. September at 9:00 AM we started our first remote Hackday. Christian, my stream lead, and I build a prototype for something we…Oct 21, 2020Oct 21, 2020