# Vladimir Jovanović > Android Developer building clean, stable mobile experiences since Android 2.2. Senior Engineer, Course Author, and Conference Speaker. ## About - [About](https://vladimirj.dev/about/): Android Developer building clean, stable mobile experiences since Android 2.2. Senior Engineer, Course Author, and Conference Speaker. - [Home](https://vladimirj.dev/): Vladimir Jovanović, Android Developer. ## Projects - [nestegg.money: private net worth & salary tracker](https://vladimirj.dev/nestegg-money/): A free, open-source, zero-knowledge net worth and salary tracker. Encrypted on your device, no login, installable as a PWA. - [440hz.app: free browser tools for musicians](https://vladimirj.dev/440hz-app/): A growing collection of free, offline browser tools for musicians. Tuner, metronome, chord tools, blind listening test, and more. No ads, no tracking, no accounts. - [Kotlin Multiplatform Libraries](https://vladimirj.dev/kotlin-multiplatform-libraries/): Kotlin Multiplatform makes it easier to share code across Android, iOS, JVM, web, and backend platforms. In this course, Vladimir Jovanović teaches you how to create and publish a KMP library step by step. Learn how to set up a project, write and test cross-platform code, and handle platform-specific implementations. By the end, you should be ready to publish your library to Maven Central and maintain it effectively. - [Improving, Testing, and Refactoring a Legacy Android App](https://vladimirj.dev/improving-testing-refactoring-android/): The Android platform is old enough that there is an abundance of legacy projects that someone needs to support and work on. This course will teach you the skills necessary to help companies support and improve their legacy apps. - [Android Fundamentals: View Binding](https://vladimirj.dev/android-view-binding/): View Binding library makes binding views in your Android project easy. This course will teach you how to replace the findViewById method with View Binding and make your code safe and concise. - [Firebase on Android: Remote Config and A/B Testing](https://vladimirj.dev/remote-config-ab-testing/): It is now possible to change your app without publishing an update. This course will teach you how to combine Firebase Remote Config with A/B testing so that you can remotely change the behavior of your app, and measure the impact of those changes. - [BL Taxi](https://vladimirj.dev/bl-taxi/): 🚕 BL Taxi is a simple app for calling a taxi in the city Banja Luka built using modern Android development tools - [Publishing and Distributing Your Android Application](https://vladimirj.dev/publishing-and-distributing-android-app/): You created a brand new Android application, but so far it only has one user: you. This course will teach you all that you need to know about the publishing and distributing process so that you can share your amazing app with the world. - [Getting Started With Android Studio](https://vladimirj.dev/getting-started-with-android-studio/): Android Studio is a great IDE for Android developers. This course takes you through its most important features and prepares you for the joyous and rewarding journey of becoming an Android developer. - [Analog Watch Face](https://vladimirj.dev/analog-watch-face/): An easy way to make your progress view nice and sleek. - [Wear OS Fundamentals: Watch Face](https://vladimirj.dev/wear-os-watch-face/): Building a watch face is the easiest way to expand your brand to Wear OS. In this course, you'll learn how to create a functional, optimized, and good looking watch face for wearable devices running Wear OS. - [Lemniscate Progress View](https://vladimirj.dev/lemniscate/): An easy way to make your progress view nice and sleek. ## Talks - [Droidcon London 2025: How a Single ß Can Break Everything](https://vladimirj.dev/droidcon-london_2025/): Talk given at Droidcon London 2025 conference - [Droidcon Berlin 2025: How a Single ß Can Break Everything](https://vladimirj.dev/droidcon-berlin_2025/): Talk given at Droidcon Berlin 2025 conference - [Droidcon Lisbon 2025: How a Single ß Can Break Everything](https://vladimirj.dev/droidcon-lisbon_2025/): Talk given at Droidcon Lisbon 2025 conference - [Droidcon Berlin 2024: Remixing TIDAL App with Jetpack Compose](https://vladimirj.dev/droidcon-berlin_2024/): Talk given at Droidcon Berlin 2024 conference - [InitConf 2022: My First Android App Workshop](https://vladimirj.dev/workshop-initconf_2022/): Introduction to Android development - [Droidcon Berlin 2021: Junioring Senior Developers](https://vladimirj.dev/droidcon-berlin_2021/): Talk given at Droidcon Berlin 2021 conference - [DecompileD 2021: Rewrite or Refactor That Is the Question](https://vladimirj.dev/decompiled_2021/): Talk given at Decompiled 2021 conference - [CodeStories Podcast](https://vladimirj.dev/codestories_2020/): Chat with Nathaniel on CodeStories podcast - [mDevCamp 2020: Rewrite or Refactor That Is the Question](https://vladimirj.dev/mdevcamp_2020/): Recording of the talk given at mDevCamp 2020 - [MobOS 2020: Rewrite or Refactor That Is the Question](https://vladimirj.dev/mobos_2020/): Talk given at MobOS 2020 conference - [InitConf 2019: Rewrite or Refactor That Is the Question](https://vladimirj.dev/initconf_2019/): Recording of the talk given at InitConf 2019 ## Blog - [Firebase Predictions 🔮](https://vladimirj.dev/firebase-predictions/): Firebase provides a wide variety of tools, something for every developer and something for every problem. But did you know that it has a tool that enables you to see into the future?! - [/* intentionally left empty */](https://vladimirj.dev/intentionally-left-empty/): Doing copy/paste of the sample data from one project to another is not an option. - [tools:title="RemoteSampleData"](https://vladimirj.dev/remote-sample-data/): Doing copy/paste of the sample data from one project to another is not an option. - [tools:title="LayoutPreview"](https://vladimirj.dev/layout-preview/): As every Android developer, I also started building my layouts by hard-coding values into them. Later on, I have realised that I should… - [Giving your code to the community](https://vladimirj.dev/giving-your-code-to-the-community/): About two years ago, I started putting pieces of code on my GitHub page. And soon I have noticed that nobody was looking at it. My profile was dead. - [PRObably the Language Of God](https://vladimirj.dev/probably-the-language-of-god/): During my university days, while I was studying Mathematics and CS, software development was refreshment of applied science in a sea of theoretical math. But then at my 4th semester I got the Prolog. - [Variable looked at me and said: "Say my name!"](https://vladimirj.dev/say-my-name/): While you are writing your code, the most important thing to have in mind is that you are writing your code first and foremost for humans to understand, and secondly for a machine to interpret. - [Handling configuration changes using static references](https://vladimirj.dev/handling-configuration-changes/): What if you hold a static reference to the data in my Activity to preserve them on screen rotation? Why is that bad? - [Short methods FTW](https://vladimirj.dev/short-methods-ftw/): My boss came to me and said: "Every method that you write should be less than 25 lines long" and I laughed, I laughed hard, right in his face. I was such a plonker! ## Profiles - [Bluesky](https://bsky.app/profile/vladimirj.dev) - [LinkedIn](https://linkedin.com/in/vladimir-j) - [GitHub](https://github.com/VladimirWrites) - [Stack Overflow](https://stackoverflow.com/users/5821000) - [Medium](https://medium.com/@VladimirWrites) - [Pluralsight](https://www.pluralsight.com/authors/vladimir-jovanovic) - [Google Play](https://play.google.com/store/apps/dev?id=6228447112810662324) ## Feeds - [RSS feed](https://vladimirj.dev/feed.xml) - [Sitemap](https://vladimirj.dev/sitemap-index.xml)