Manuel Vivo .dev | A place where you can learn about Android development
12 Mar 2024 Mentoring

## Interviewing at Staff+ level

In this blog post, I’m covering how I prepared for various Staff level interviews at different companies

29 Jan 2024 Mentoring

## Prepare your interviews with me

Mock interviews, cheat sheets, 1:1 sessions, tips, and more!

19 Dec 2023 Architecture

## Crash Course on the Android UI Layer | Part 2

Part 2 - State Holders and Saving State

13 Dec 2023 Architecture

## Crash Course on the Android UI Layer | Part 1

Part 1 - The UI and UI State

10 May 2023 Talks Architecture

## Saving UI state on Android

Google I/O 2023 talk

25 Oct 2022 Talks Architecture

## State holders and state production in the UI Layer

Android Dev Summit 2022 talk

25 Oct 2022 Talks Architecture

## Collecting flows in a lifecycle-aware manner

Android Dev Summit 2022 talk

10 Aug 2022 Architecture

## Consuming flows safely in Jetpack Compose

Use the collectAsStateWithLifecycle API to collect flows in a lifecycle-aware manner from your UI.

1 Jun 2022 Architecture

## ViewModel One-off event antipatterns

You should handle ViewModel events immediately, causing a UI state update.

11 Apr 2022 Architecture Compose

## Migrating Architecture Blueprints to Jetpack Compose

This blog post tells the story of how the team migrated Architecture Blueprints to Jetpack Compose.

14 Dec 2021 Architecture

## Rebuilding our guide to app architecture

We just launched a revamped guide to app architecture.

27 Oct 2021 Talks Compose

## A Compose State of Mind

A Compose State of Mind — Android Dev Summit 2021 talk

27 Oct 2021 Talks Coroutines

## Kotlin Flows in practice

Kotlin Flows in practice — Android Dev Summit 2021 talk

1 Jul 2021 Coroutines

## repeatOnLifecycle API design story

Learn the design decisions behind the Lifecycle.repeatOnLifecycle API.

10 Jun 2021 Coroutines Hilt

## Create an application CoroutineScope using Hilt

Inject an application-scoped CoroutineScope using Hilt.

18 May 2021 Talks Compose

## Using Jetpack libraries in Compose talk

Using Jetpack libraries in Compose - Google I/O 2021 talk.

7 May 2021 Coroutines

## Things to know about Flow’s shareIn and stateIn operators

Become familiar with the shareIn and stateIn operators by example.

4 May 2021 Hilt

## Hilt is stable! Easier dependency injection on Android

Hilt, Jetpack’s recommended dependency injection (DI) solution for Android apps, is already stable!

26 Mar 2021 Coroutines

## A safer way to collect flows from Android UIs

Learn how to use the Lifecycle.repeatOnLifecycle API to safely collect flows from the UI layer in Android.

28 Feb 2021 Spanish

## Cómo la música ha influenciado mi carrera

Entrevista sobre cómo la música, la trompeta 🎺 y Las Musas me han influenciado en mi carrera como ingeniero Android.

3 Feb 2021 Coroutines

## Bridging the gap between coroutines, JVM threads, and concurrency problems

Learn more about how coroutines are executed in the JVM and concurrency problems.

21 Jan 2021 Hilt

## Using Hilt's ViewModelComponent

ViewModelComponent is a component in the Hilt’s component hierarchy that follows the lifecycle of a ViewModel and allows scoping types to it.

16 Dec 2020 Coroutines

## Simplifying APIs with coroutines and Flow

Learn how to create your own coroutine adapters and see how they work under the hood

24 Nov 2020 Hilt

## Migrating from Dagger to Hilt — Is it worth it?

Consider whether or not you should migrate your Dagger app to Hilt

24 Nov 2020 Talks Coroutines

## Going with the Flow

Introduction to coroutines Flow

21 Jul 2020 Hilt

## Scoping in Android and Hilt

Learn about scoping in Android and how that relates to scoping in Hilt

13 Jul 2020 Talks Coroutines

## Android Coroutines - How to manage async tasks in Kotlin

State of coroutines on Android in 2020

9 Jul 2020 Hilt

## Hilt — Adding components to the hierarchy

Get more flexibility in Hilt by adding your own components to the hierarchy

1 Jul 2020 Hilt Dagger

## Dagger and Hilt navigation support in Android Studio

Easily navigate between Dagger and Hilt related code in Android Studio

10 Jun 2020 Hilt

## Dependency injection on Android with Hilt

Learn about Jetpack’s recommended library for dependency injection

7 Apr 2020 Coroutines

## Coroutines & Patterns for work that shouldn’t be cancelled

Best practices for work that needs to run beyond its current scope with an applicationScope!

2 Apr 2020 Talks Coroutines

## Coroutines 101

Introduction to the basics of coroutines

11 Mar 2020 Coroutines

## Exceptions in coroutines

All you need to know about exceptions in coroutines

11 Mar 2020 Coroutines

## Coroutines - First things first

Learn about the most basics coroutines concepts

3 Mar 2020 Dagger

## Dagger code generation cheat sheets

Have you ever wondered what Dagger does under the hood 🤔?

4 Dec 2019 Talks Coroutines

## Coroutines!

All about cancellation and exceptions in coroutines

26 Nov 2019 Coroutines

## Lessons learnt using Coroutines Flow in the Android Dev Summit 2019 app

Best practices we found when using Flow in the ADS 2019 app

6 Nov 2019 Dagger

## Dependency Injection guidance on Android — ADS 2019

Why dependency injection is important on Android and a new guide about it!

24 Oct 2019 Talks Coroutines

## Testing coroutines - Android Developer Summit 2019

How to test coroutines in 2019!

24 Oct 2019 Talks Dagger

## An opinionated guide to Dependency Injection on Android - Android Developer Summit 2019

Why dependency injection is important on Android and a new guide about it!

15 Oct 2019 Coroutines

## Testing two consecutive LiveData emissions in Coroutines

Learn how to pause and resume a TestCoroutineDispatcher

30 Jul 2019 Dagger

## Dagger in Kotlin - Gotchas and Optimizations

Dagger optimizations come with no cost! Add them and follow best practices

24 Mar 2019 Coroutines

## The suspend modifier — under the hood

How is the compiler transforming the code to be able to suspend and resume the execution of coroutines?

19 Mar 2019 Coroutines

## Easy Coroutines in Android - viewModelScope

Learn everything you should know about viewModelScope