Antonio Leiva’s BlogEverything Android, Kotlin and other random topicshttps://antonioleiva.comHow I reorganized all my repos with AI (and fixed my GitHub profiles in the process)https://antonioleiva.com/reorganize-repos-with-ai-github-profileshttps://antonioleiva.com/reorganize-repos-with-ai-github-profiles2026年1月03日 00:00:00 GMTThe year AI threatened our jobs: 2025 review and goals for 2026https://antonioleiva.com/analysis-2025-goals-2026https://antonioleiva.com/analysis-2025-goals-20262025年12月30日 00:00:00 GMTDo we need training to use AI?https://antonioleiva.com/need-ai-traininghttps://antonioleiva.com/need-ai-training2025年12月27日 00:00:00 GMTLLM Duel: Gemini 3 Flash vs Opus 4.5 vs GPT-5.2-Codex vs GLM-4.7https://antonioleiva.com/llm-duel-gemini-opus-gpt-glmhttps://antonioleiva.com/llm-duel-gemini-opus-gpt-glm2025年12月23日 00:00:00 GMTClosing the AI Loop in Software Developmenthttps://antonioleiva.com/closing-circle-aihttps://antonioleiva.com/closing-circle-ai2025年10月22日 00:00:00 GMTHow to deploy an Astro SSR app to Coolifyhttps://antonioleiva.com/astro-ssr-coolifyhttps://antonioleiva.com/astro-ssr-coolify2025年6月03日 00:00:00 GMTLive Templates on Android Studio and IntellliJ to improve your productivityhttps://antonioleiva.com/live-templates-android-studiohttps://antonioleiva.com/live-templates-android-studio2020年6月09日 00:00:00 GMTView Binding: The Definitive way to access views on Androidhttps://antonioleiva.com/view-binding-androidhttps://antonioleiva.com/view-binding-android2020年5月21日 00:00:00 GMT[LIVE] Answering all your questions: MVVM, Work-Life balance, career progression, football..? 😂https://antonioleiva.com/live-answer-questionshttps://antonioleiva.com/live-answer-questions2019年8月25日 00:00:00 GMTCOIL: The Next-Gen IMAGE LOADER for Android [Coroutines Based!] 🚀https://antonioleiva.com/coil-image-loader-androidhttps://antonioleiva.com/coil-image-loader-android2019年8月13日 00:00:00 GMTDependency Injection - All the Must-Know Concepts to start using ithttps://antonioleiva.com/dependency-injection-principleshttps://antonioleiva.com/dependency-injection-principles2019年6月26日 00:00:00 GMTLiving by the code, with Enrique López [Droidkast LIVE 7]https://antonioleiva.com/living-by-the-code-enrique-lopezhttps://antonioleiva.com/living-by-the-code-enrique-lopez2019年6月24日 00:00:00 GMTKoin for dependency injection on Android. Is Dagger dead?https://antonioleiva.com/koin-vs-daggerhttps://antonioleiva.com/koin-vs-dagger2019年6月13日 00:00:00 GMTAntonio Leiva interviewed by Fernando Cejas - Celebrating 1k subs on YouTube [Droidkast LIVE 6]https://antonioleiva.com/antonio-leiva-interviewed-by-fernando-cejashttps://antonioleiva.com/antonio-leiva-interviewed-by-fernando-cejas2019年6月04日 00:00:00 GMTData Binding on Android to implement the real MVVMhttps://antonioleiva.com/data-binding-on-android-to-implement-the-real-mvvmhttps://antonioleiva.com/data-binding-on-android-to-implement-the-real-mvvm2019年5月15日 00:00:00 GMTGoogle I/O 2019 - What's new for Android Developershttps://antonioleiva.com/google-io-2019https://antonioleiva.com/google-io-20192019年5月09日 00:00:00 GMTSelf-publishing: My experience with Kotlin for Android Developershttps://antonioleiva.com/self-publishinghttps://antonioleiva.com/self-publishing2019年4月03日 00:00:00 GMTFlutter: Mobile Development for Busy People, Lara Martin [Droidkast LIVE 05]https://antonioleiva.com/flutter-mobile-development-for-busy-people-droidkast-05https://antonioleiva.com/flutter-mobile-development-for-busy-people-droidkast-052019年3月26日 00:00:00 GMTYou need to learn Kotlin now! if you are an #AndroidDevhttps://antonioleiva.com/learn-kotlinhttps://antonioleiva.com/learn-kotlin2019年3月13日 00:00:00 GMTWhat Android devs wish they had known when starting out, with Nate Ebel [Droidkast LIVE 04]https://antonioleiva.com/what-android-devs-wish-they-had-known-when-starting-out-droidkast-04https://antonioleiva.com/what-android-devs-wish-they-had-known-when-starting-out-droidkast-042019年3月06日 00:00:00 GMTModularizing Android Apps, with Joe Birch [Droidkast LIVE 03]https://antonioleiva.com/modularizing-android-apps-droidkast-03https://antonioleiva.com/modularizing-android-apps-droidkast-032019年2月18日 00:00:00 GMTCoroutines in Kotlin 1.3 explained: Suspending functions, contexts, builders and scopeshttps://antonioleiva.com/kotlin-coroutineshttps://antonioleiva.com/kotlin-coroutines2019年1月31日 00:00:00 GMTConstraintLayout 2.0 with MotionLayout, with Huyen Tue Dao [Droidkast LIVE 02]https://antonioleiva.com/constraint-motion-layout-droidkast-02https://antonioleiva.com/constraint-motion-layout-droidkast-022019年1月23日 00:00:00 GMTThe Art of Coding: Disasters and Failures, with Fernando Cejas [Droidkast LIVE 01]https://antonioleiva.com/art-of-coding-droidkast-01https://antonioleiva.com/art-of-coding-droidkast-012019年1月18日 00:00:00 GMTThe year that changed it all: Analysis of 2018 and goals for 2019https://antonioleiva.com/analysis-2018-goals-2019https://antonioleiva.com/analysis-2018-goals-20192019年1月01日 00:00:00 GMTMVVM with architecture components: a step by step guideline for MVP lovershttps://antonioleiva.com/mvvm-vs-mvphttps://antonioleiva.com/mvvm-vs-mvp2018年12月12日 00:00:00 GMTClean architecture for Android with Kotlin: a pragmatic approach for startershttps://antonioleiva.com/clean-architecture-androidhttps://antonioleiva.com/clean-architecture-android2018年9月30日 00:00:00 GMTHow my world is changing todayhttps://antonioleiva.com/world-changing-todayhttps://antonioleiva.com/world-changing-today2018年9月21日 00:00:00 GMTMVP for Android: how to organize the presentation layerhttps://antonioleiva.com/mvp-androidhttps://antonioleiva.com/mvp-android2018年7月04日 00:00:00 GMTHacking Architecture Components by using Kotlinhttps://antonioleiva.com/architecture-components-kotlinhttps://antonioleiva.com/architecture-components-kotlin2018年3月13日 00:00:00 GMTYo Dawg! I heard you like Kotlin (Talk at Devfest Baltics)https://antonioleiva.com/yo-dawg-heard-like-kotlinhttps://antonioleiva.com/yo-dawg-heard-like-kotlin2018年1月15日 00:00:00 GMTTime for accountability: Analysis of 2017 and goals for 2018https://antonioleiva.com/analysis-2017-goals-2018https://antonioleiva.com/analysis-2017-goals-20182017年12月25日 00:00:00 GMTListeners with several functions in Kotlin. How to make them shine?https://antonioleiva.com/listeners-several-functions-kotlinhttps://antonioleiva.com/listeners-several-functions-kotlin2017年12月06日 00:00:00 GMTCalling Kotlin from Java: start using Kotlin today (KAD 29)https://antonioleiva.com/kotlin-from-javahttps://antonioleiva.com/kotlin-from-java2017年11月29日 00:00:00 GMTFunction references in Kotlin: use functions as lambdas everywherehttps://antonioleiva.com/function-references-kotlinhttps://antonioleiva.com/function-references-kotlin2017年11月22日 00:00:00 GMTAnko layouts on Android. Should I forget about XMLs?https://antonioleiva.com/anko-layouts-androidhttps://antonioleiva.com/anko-layouts-android2017年11月14日 00:00:00 GMTKotlin DSL to write Gradle scripts on Android: Step by step walkthroughhttps://antonioleiva.com/kotlin-dsl-gradlehttps://antonioleiva.com/kotlin-dsl-gradle2017年11月10日 00:00:00 GMTWhy Kotlin for Android online course is different from any otherhttps://antonioleiva.com/kotlin-android-online-coursehttps://antonioleiva.com/kotlin-android-online-course2017年9月02日 00:00:00 GMTKotlin Android Extensions: Say goodbye to findViewById (KAD 04)https://antonioleiva.com/kotlin-android-extensionshttps://antonioleiva.com/kotlin-android-extensions2017年8月16日 00:00:00 GMT12 reasons why you should start using Kotlin for Android today (KAD 30)https://antonioleiva.com/reasons-kotlin-androidhttps://antonioleiva.com/reasons-kotlin-android2017年7月11日 00:00:00 GMTSealed classes in Kotlin: enums with super-powers (KAD 28)https://antonioleiva.com/sealed-classes-kotlinhttps://antonioleiva.com/sealed-classes-kotlin2017年6月27日 00:00:00 GMTObjects in Kotlin: Create safe singletons in one line of code (KAD 27)https://antonioleiva.com/objects-kotlinhttps://antonioleiva.com/objects-kotlin2017年6月20日 00:00:00 GMTInterfaces in Kotlin. Who said interfaces can't have code? (KAD 26)https://antonioleiva.com/interfaces-kotlinhttps://antonioleiva.com/interfaces-kotlin2017年6月06日 00:00:00 GMTDatabases on Android with Anko and Kotlin: SQLite never was so easy (KAD 25)https://antonioleiva.com/databases-anko-kotlinhttps://antonioleiva.com/databases-anko-kotlin2017年5月30日 00:00:00 GMTWhat do 17 Google Developers Experts for Android think about Kotlin?https://antonioleiva.com/google-kotlinhttps://antonioleiva.com/google-kotlin2017年5月15日 00:00:00 GMTDialogs and alerts on Android using Anko and Kotlin (KAD 24)https://antonioleiva.com/dialogs-android-anko-kotlinhttps://antonioleiva.com/dialogs-android-anko-kotlin2017年5月09日 00:00:00 GMTHow to mock final classes on Kotlin using Mockito 2 (KAD 23)https://antonioleiva.com/mockito-2-kotlinhttps://antonioleiva.com/mockito-2-kotlin2017年5月02日 00:00:00 GMTUnit tests on Android with Kotlin (KAD 22)https://antonioleiva.com/unit-tests-android-kotlinhttps://antonioleiva.com/unit-tests-android-kotlin2017年4月25日 00:00:00 GMTHow to use Retrofit on android with Kotlin (KAD 21)https://antonioleiva.com/retrofit-android-kotlinhttps://antonioleiva.com/retrofit-android-kotlin2017年4月18日 00:00:00 GMTHow to use Dagger 2 on Android with Kotlin (KAD 20)https://antonioleiva.com/dagger-android-kotlinhttps://antonioleiva.com/dagger-android-kotlin2017年4月11日 00:00:00 GMTSay goodbye to NullPointerException. Working with nulls in Kotlin (KAD 19)https://antonioleiva.com/nullity-kotlinhttps://antonioleiva.com/nullity-kotlin2017年4月04日 00:00:00 GMTHow lambdas work in Kotlin. setOnClickListener transformation (KAD 18)https://antonioleiva.com/lambdas-kotlin-androidhttps://antonioleiva.com/lambdas-kotlin-android2017年3月28日 00:00:00 GMTOperator Overload in Kotlin: Add standard operations to any class (KAD 17)https://antonioleiva.com/operator-overload-kotlinhttps://antonioleiva.com/operator-overload-kotlin2017年3月21日 00:00:00 GMTWriting a RecyclerView Adapter in Kotlin (KAD 16)https://antonioleiva.com/recyclerview-adapter-kotlinhttps://antonioleiva.com/recyclerview-adapter-kotlin2017年3月14日 00:00:00 GMTProperty delegation in Kotlin: Assign values in Android without having the context (KAD 15)https://antonioleiva.com/property-delegation-kotlinhttps://antonioleiva.com/property-delegation-kotlin2017年3月09日 00:00:00 GMTReified Types in Kotlin: how to use the type within a function (KAD 14)https://antonioleiva.com/reified-types-kotlinhttps://antonioleiva.com/reified-types-kotlin2017年3月02日 00:00:00 GMTUsing "when" expression in Kotlin: The "switch" with super powers (KAD 13)https://antonioleiva.com/when-expression-kotlinhttps://antonioleiva.com/when-expression-kotlin2017年2月23日 00:00:00 GMTTake Realm to the next level with Kotlinhttps://antonioleiva.com/kotlin-realm-extensionshttps://antonioleiva.com/kotlin-realm-extensions2017年2月14日 00:00:00 GMTNinja Functions in Kotlin. Understanding the power of generics (KAD 12)https://antonioleiva.com/generic-functions-kotlinhttps://antonioleiva.com/generic-functions-kotlin2017年2月08日 00:00:00 GMTFunctional operations with collections in Kotlin (KAD 11)https://antonioleiva.com/functional-operations-collections-kotlinhttps://antonioleiva.com/functional-operations-collections-kotlin2017年2月02日 00:00:00 GMTData Classes in Kotlin: save a good bunch of lines of code (KAD 10)https://antonioleiva.com/data-classes-kotlinhttps://antonioleiva.com/data-classes-kotlin2017年1月25日 00:00:00 GMTUsing Anko to run background tasks with Kotlin in Android (KAD 09)https://antonioleiva.com/anko-background-kotlin-androidhttps://antonioleiva.com/anko-background-kotlin-android2017年1月19日 00:00:00 GMTExtension functions in Kotlin: Extend the Android Framework (KAD 08)https://antonioleiva.com/extension-functions-kotlinhttps://antonioleiva.com/extension-functions-kotlin2017年1月11日 00:00:00 GMTLambdas in Kotlin, and how they simplify Android development (KAD 07)https://antonioleiva.com/lambdas-kotlinhttps://antonioleiva.com/lambdas-kotlin2017年1月05日 00:00:00 GMTCustom Views in Android with Kotlin (KAD 06)https://antonioleiva.com/custom-views-android-kotlinhttps://antonioleiva.com/custom-views-android-kotlin2016年12月27日 00:00:00 GMTKotlin integrations with Android SDK (KAD 05)https://antonioleiva.com/kotlin-integrations-android-sdkhttps://antonioleiva.com/kotlin-integrations-android-sdk2016年12月19日 00:00:00 GMTClasses in Kotlin: More power with less effort (KAD 03)https://antonioleiva.com/classes-kotlinhttps://antonioleiva.com/classes-kotlin2016年12月07日 00:00:00 GMTVariables in Kotlin, differences with Java. var vs val (KAD 02)https://antonioleiva.com/variables-kotlinhttps://antonioleiva.com/variables-kotlin2016年11月28日 00:00:00 GMTCreate your first Android project using Kotlin (KAD 01)https://antonioleiva.com/create-first-android-project-kotlinhttps://antonioleiva.com/create-first-android-project-kotlin2016年11月21日 00:00:00 GMTKotlin Recipes for Android (II): RecyclerView and DiffUtilhttps://antonioleiva.com/recyclerview-diffutil-kotlinhttps://antonioleiva.com/recyclerview-diffutil-kotlin2016年9月12日 00:00:00 GMTKotlin recipes for Android (I): OnGlobalLayoutListenerhttps://antonioleiva.com/kotlin-ongloballayoutlistenerhttps://antonioleiva.com/kotlin-ongloballayoutlistener2016年3月15日 00:00:00 GMTKotlin awesome tricks for Androidhttps://antonioleiva.com/kotlin-awesome-tricks-for-androidhttps://antonioleiva.com/kotlin-awesome-tricks-for-android2016年2月04日 00:00:00 GMTSet a click listener to a RecyclerViewhttps://antonioleiva.com/recyclerview-listenerhttps://antonioleiva.com/recyclerview-listener2015年12月14日 00:00:00 GMTConverting Plaid to Kotlin: Lessons learned (Part 2)https://antonioleiva.com/plaid-kotlin-2https://antonioleiva.com/plaid-kotlin-22015年11月17日 00:00:00 GMTConverting Plaid to Kotlin: Lessons learned (Part 1)https://antonioleiva.com/plaid-kotlin-1https://antonioleiva.com/plaid-kotlin-12015年11月03日 00:00:00 GMTUse Voice Search to integrate with Google Nowhttps://antonioleiva.com/voice_search_google_nowhttps://antonioleiva.com/voice_search_google_now2015年10月14日 00:00:00 GMTFunctional Android (II): Collection operations in Kotlinhttps://antonioleiva.com/collection-operations-kotlinhttps://antonioleiva.com/collection-operations-kotlin2015年9月29日 00:00:00 GMTLayout animations on RecyclerViewhttps://antonioleiva.com/layout-animations-on-recyclerviewhttps://antonioleiva.com/layout-animations-on-recyclerview2015年9月08日 00:00:00 GMTUnleash functional power on Android (I): Kotlin lambdashttps://antonioleiva.com/functional-programming-android-kotlin-lambdashttps://antonioleiva.com/functional-programming-android-kotlin-lambdas2015年9月01日 00:00:00 GMTBranded launch screen: the new splash for Androidhttps://antonioleiva.com/branded-launch-screenhttps://antonioleiva.com/branded-launch-screen2015年8月09日 00:00:00 GMTOperator overloading in Kotlinhttps://antonioleiva.com/operator-overloading-kotlinhttps://antonioleiva.com/operator-overloading-kotlin2015年8月05日 00:00:00 GMTFunctional operations over Views in ViewGroup using Kotlinhttps://antonioleiva.com/functional-operations-viewgroup-kotlinhttps://antonioleiva.com/functional-operations-viewgroup-kotlin2015年7月29日 00:00:00 GMTAPI request in Android the easy way using Kotlinhttps://antonioleiva.com/api-request-kotlinhttps://antonioleiva.com/api-request-kotlin2015年7月21日 00:00:00 GMTKotlin for Android Developers: The bookhttps://antonioleiva.com/kotlin-android-developershttps://antonioleiva.com/kotlin-android-developers2015年7月14日 00:00:00 GMTDesign Support Library (IV): Collapsing Toolbar Layouthttps://antonioleiva.com/collapsing-toolbar-layouthttps://antonioleiva.com/collapsing-toolbar-layout2015年7月09日 00:00:00 GMTDesign Support Library (III): Coordinator Layouthttps://antonioleiva.com/coordinator-layouthttps://antonioleiva.com/coordinator-layout2015年6月30日 00:00:00 GMTDesign Support Library (II): Floating Action Buttonhttps://antonioleiva.com/floating-action-buttonhttps://antonioleiva.com/floating-action-button2015年6月09日 00:00:00 GMTDesign Support Library (I): Navigation Viewhttps://antonioleiva.com/navigation-viewhttps://antonioleiva.com/navigation-view2015年5月31日 00:00:00 GMTKotlin for Android (IV): Custom Views and Android Extensionshttps://antonioleiva.com/kotlin-android-custom-viewshttps://antonioleiva.com/kotlin-android-custom-views2015年5月07日 00:00:00 GMTKotlin for Android (III): Extension functions and default valueshttps://antonioleiva.com/kotlin-android-extension-functionshttps://antonioleiva.com/kotlin-android-extension-functions2015年4月06日 00:00:00 GMTKotlin for Android (II): Create a new projecthttps://antonioleiva.com/kotlin-android-create-projecthttps://antonioleiva.com/kotlin-android-create-project2015年3月23日 00:00:00 GMTKotlin for Android (I): Introductionhttps://antonioleiva.com/kotlin-for-android-introductionhttps://antonioleiva.com/kotlin-for-android-introduction2015年3月09日 00:00:00 GMTAdd multiple resource folders to an Android Apphttps://antonioleiva.com/android-multiple-resource-foldershttps://antonioleiva.com/android-multiple-resource-folders2015年3月03日 00:00:00 GMTMaterialize your Apphttps://antonioleiva.com/materialize-apphttps://antonioleiva.com/materialize-app2015年2月08日 00:00:00 GMTMaterial Design Everywhere: Using AppCompat 21https://antonioleiva.com/material-design-everywherehttps://antonioleiva.com/material-design-everywhere2014年10月17日 00:00:00 GMTRecyclerView in Android: The basicshttps://antonioleiva.com/recyclerviewhttps://antonioleiva.com/recyclerview2014年6月29日 00:00:00 GMTDagger: Scoped object graphs (Part 3)https://antonioleiva.com/dagger-3https://antonioleiva.com/dagger-32014年6月19日 00:00:00 GMTDagger: dependency injection on Android (Part 2)https://antonioleiva.com/dagger-android-part-2https://antonioleiva.com/dagger-android-part-22014年6月12日 00:00:00 GMTDependency injection on Android: Dagger (Part 1)https://antonioleiva.com/dependency-injection-android-dagger-part-1https://antonioleiva.com/dependency-injection-android-dagger-part-12014年6月04日 00:00:00 GMTSwipeRefreshLayout: How to usehttps://antonioleiva.com/swiperefreshlayouthttps://antonioleiva.com/swiperefreshlayout2014年3月28日 00:00:00 GMTThe power of TextView (Part 1): Drawableshttps://antonioleiva.com/textview_power_drawableshttps://antonioleiva.com/textview_power_drawables2014年1月30日 00:00:00 GMTLead your Android App to success with Google Analytics (part 2)https://antonioleiva.com/lead-your-android-app-to-success-with-google-analytics-part-2https://antonioleiva.com/lead-your-android-app-to-success-with-google-analytics-part-22013年10月13日 00:00:00 GMTLead your Android App to success with Google Analytics (part 1)https://antonioleiva.com/lead-android-app-success-google-analytics-part-1https://antonioleiva.com/lead-android-app-success-google-analytics-part-12013年10月06日 00:00:00 GMTActionBarCompat (Part 3): Migrating from ActionBarSherlockhttps://antonioleiva.com/actionbarcompat-migrating-actionbarsherlockhttps://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock2013年7月30日 00:00:00 GMTActionBarCompat (Part 2): Action Viewshttps://antonioleiva.com/actionbarcompat-action-viewshttps://antonioleiva.com/actionbarcompat-action-views2013年7月28日 00:00:00 GMTActionBarCompat (Part 1): How to usehttps://antonioleiva.com/actionbarcompat-how-to-usehttps://antonioleiva.com/actionbarcompat-how-to-use2013年7月25日 00:00:00 GMTUnveiling Bandhook (I): Foreground over any Layouthttps://antonioleiva.com/unveiling-bandhook-foreground-any-layouthttps://antonioleiva.com/unveiling-bandhook-foreground-any-layout2013年7月10日 00:00:00 GMTAndroid Unit Testing using Robolectric (I): Introductionhttps://antonioleiva.com/android-unit-testing-using-robolectric-introductionhttps://antonioleiva.com/android-unit-testing-using-robolectric-introduction2013年7月07日 00:00:00 GMT