# Costa Fotiadis

Android, most of the time.

https://www.costafotiadis.com/ · every post is also at /<slug>.md · [RSS](https://www.costafotiadis.com/rss.xml)

## 2026

- [At the mountains of madness: Interviews](https://www.costafotiadis.com/at-the-mountains-of-madness-interviews.md): After being part of countless tech interviews, on both sides of the aisle, here's a few things that my much younger, stupider self, would probably refuse to listen to.
- [Remote Compose looks promising](https://www.costafotiadis.com/remote-compose-looks-promising.md): Just Eat Takeaway (JET) is a global food delivery network handling millions of active users across numerous markets. Operating at this scale requires flexibility on the client…
- [It looks like you're trying to: Build an Extension for Command Palette](https://www.costafotiadis.com/it-looks-like-youre-trying-to-build-an-extension-for-command-palette.md): It took more than a decade, but I finally got tired of running the same five ADB commands. Clear app data, force stop, restart the app, you know the ones. You also know the…
- [At the Mountains of Madness: Rewriting a 100-Line PowerShell Script as a KMP Desktop App](https://www.costafotiadis.com/at-the-mountains-of-madness-rewriting-a-100-line-powershell-script-as-a-kmp-desktop-app.md): Not sure when it happened, but at some point I contracted this strange illness that compels someone to tinker with their OS on their spare time.
- [Mogged into building a Chrome extension (Replacing 'Search with Google' with Claude)](https://www.costafotiadis.com/mogged-into-building-a-chrome-extension.md): Scrolling the fever dream called Twitter, I came across this sentence:
- [Using a GitHub file as a database cause why not](https://www.costafotiadis.com/using-a-github-file-as-a-database-cause-why-not.md): I needed some type of like/clap counter for my blog. But then again, likes are lame. What I really needed was a beer 🍺 counter.
- [Things](https://www.costafotiadis.com/things.md): I've always wanted one of these pages. You know the type — "things I find interesting", "reading list" yada yada. Basically a dumping ground for interesting stuff I come across…
- [ViewModel is deprecated*](https://www.costafotiadis.com/viewmodel-is-deprecated.md): *not really

## 2025

- [Live Updates and Progress notifications for Android 16 at JET](https://www.costafotiadis.com/live-updates-and-progress-notifications-for-android-16-at-jet.md): Android 16 introduced a new notification template specifically designed to help users seamlessly track user-initiated start-to-end journeys.
- [At the Mountains of Madness with Jetpack Compose](https://www.costafotiadis.com/at-the-mountains-of-madness-with-jetpack-compose.md): As part of my daily attempt to pay the bills, I had to implement some pull-to-refresh action.

## 2024

- [Extending detekt for Android at JET](https://www.costafotiadis.com/extending-detekt-for-android-at-jet.md): For some time now, the JET Android Consumer App has been heavily relying on detekt for static code analysis.
- [Injecting Composables with Dagger without losing it](https://www.costafotiadis.com/injecting-composables-with-dagger-without-losing-it.md): Featured in Android Weekly Issue #624
- [Going edge-to-edge with Compose without losing it](https://www.costafotiadis.com/going-edge-to-edge-with-compose-without-losing-it.md): A practical guide to edge-to-edge layouts in Compose: handling Window Insets, transparent status/navigation bars, and icon tints — recreating YouTube's Ambient Mode effect.

## 2023

- [Exercises in futility: One-time events in Android](https://www.costafotiadis.com/exercises-in-futility-one-time-events-in-android.md): Sometimes, I get the impression one needs 42 hours of research and a PhD dissertation to figure out how to send a one-time event from the ViewModel layer to the UI safely these…
- [Exercises in futility: Jetpack Compose Recomposition](https://www.costafotiadis.com/exercises-in-futility-jetpack-compose-recomposition.md): Compose is fun. I do get the feeling that there are quite a few “gotchas” when working with it, though.
- [Working with Compose Navigation, Dagger2, ViewModels.. oh my 🩻](https://www.costafotiadis.com/working-with-compose-navigation-dagger2-viewmodels-oh-my.md): Dagger-Hilt is fine and all.
- [Gotchas in Per-App Language Preferences and Android Locale](https://www.costafotiadis.com/gotchas-in-per-app-language-preferences-and-android-locale.md): These are not the droids you are looking for
- [Android Shorts 🩳: Testing Toasts with Espresso](https://www.costafotiadis.com/android-shorts-testing-toasts-with-espresso.md): On a long enough timeline, every test is a flaky test
- [Android Shorts 🩳: Custom lint rules](https://www.costafotiadis.com/android-shorts-custom-lint-rules.md): Wot I think
- [Android Shorts 🩳: WorkManager — Observing a WorkRequest (level paranoid)](https://www.costafotiadis.com/android-shorts-workmanager-observing-a-workrequest-level-paranoid.md): (see how-to-hilt+workmanager in the previous episode)
- [Android Shorts (🩳): WorkManager + Hilt](https://www.costafotiadis.com/android-shorts-workmanager-hilt.md): Make it easy to inject the singleton WorkManager instance anywhere.

## 2020

- [StateFlow, SharedFlow and the secret bus 🚌](https://www.costafotiadis.com/stateflow-sharedflow-and-the-secret-bus.md): Kotlin Coroutines 1.4 is here, as is another chance to stave off boredom.
- [👏 ViewModel Saved State Review 👏](https://www.costafotiadis.com/viewmodel-saved-state-review.md): 🤖::execute order process death::🤖
- [Exercises in futility: Unit-testing LiveData, ViewModels and Coroutines](https://www.costafotiadis.com/exercises-in-futility-unit-testing-livedata-viewmodels-and-coroutines.md): This is part of a series head-scratching my way into coroutines. It can be read as a standalone although you might be missing out on some spicy memes here and here.
- [On testing — Kotlin Coroutines](https://www.costafotiadis.com/on-testing-kotlin-coroutines.md): Or how to pretend you know what you are doing on pull requests
- [👏👏 Kotlin Coroutines Review 👏👏](https://www.costafotiadis.com/kotlin-coroutines-review.md): A callback story

## Pages

- [Me](https://www.costafotiadis.com/me.md)
- [Resume](https://www.costafotiadis.com/resume.md)
- [Projects](https://www.costafotiadis.com/projects.md)
