# Manuel Vivo .dev

Staff Mobile Architect & Android Engineer. Personal website of Manuel Vicente Vivo, featuring insights on Android development, system design, mentoring, and public speaking.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Mobile System Design Interview book

DevFeed: [Mobile System Design Interview book](<https://devfeed.tech/articles/mobile-system-design-interview-book-35676.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/mobile-system-design-interview>)

Author: Manuel Vivo

Published: 2025-06-17T00:00:00Z

Content type: article

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [App](<https://devfeed.tech/topics/app.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [data](<https://devfeed.tech/topics/data.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [book](<https://devfeed.tech/tags/book.md>), [case-studies](<https://devfeed.tech/tags/case-studies.md>), [cheat-sheet](<https://devfeed.tech/tags/cheat-sheet.md>), [data](<https://devfeed.tech/tags/data.md>), [interviews](<https://devfeed.tech/tags/interviews.md>), [ios](<https://devfeed.tech/tags/ios.md>), [library](<https://devfeed.tech/tags/library.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [system-design](<https://devfeed.tech/tags/system-design.md>), [system-design-interview](<https://devfeed.tech/tags/system-design-interview.md>)

### AI overview

A promotional article for the book Mobile System Design Interview, which teaches a framework for answering mobile system design interview questions across Android and iOS. It covers case studies, architecture trade-offs, offline synchronization, performance optimization, scalable data flow, and seven solved design questions.

### Source excerpt

Now available with doorstep delivery 🛒✨ https://geni.us/bbg-msd

## Interviewing at Staff+ level

DevFeed: [Interviewing at Staff+ level](<https://devfeed.tech/articles/interviewing-at-staff-level-35675.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/interviewing-at-staff-level>)

Author: Manuel Vivo

Published: 2024-03-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [android-engineer](<https://devfeed.tech/tags/android-engineer.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interview](<https://devfeed.tech/tags/interview.md>), [mentoring](<https://devfeed.tech/tags/mentoring.md>), [skills](<https://devfeed.tech/tags/skills.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

A guide to preparing for Staff+ individual contributor interviews across different companies. It covers data structures and algorithms, Android expertise, system design, and behavioral interviews, along with broader considerations of leadership and impact.

### Source excerpt

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

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

DevFeed: [Crash Course on the Android UI Layer | Part 2](<https://devfeed.tech/articles/crash-course-on-the-android-ui-layer-part-2-35674.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/crash-course-ui-layer-part-2>)

Author: Manuel Vivo

Published: 2023-12-19T00:00:00Z

Content type: article

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [saving](<https://devfeed.tech/topics/saving.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>), [screen](<https://devfeed.tech/topics/screen.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [saving](<https://devfeed.tech/tags/saving.md>), [screen](<https://devfeed.tech/tags/screen.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Part 2 of a series on the Android UI layer explains state holders, state hoisting, saving UI state, and the distinction between business logic and UI logic. It also discusses how UI logic responds to different device configurations, such as phones and tablets.

### Source excerpt

Part 2 - State Holders and Saving State

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

DevFeed: [Crash Course on the Android UI Layer | Part 1](<https://devfeed.tech/articles/crash-course-on-the-android-ui-layer-part-1-35673.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/crash-course-ui-layer-part-1>)

Author: Manuel Vivo

Published: 2023-12-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [save](<https://devfeed.tech/tags/save.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This first part of a series explains Android's UI layer and UI state. It describes how the UI layer fits alongside the data and optional domain layers, and outlines the responsibilities of UI elements, UI state, and optional state holders.

### Source excerpt

Part 1 - The UI and UI State

## State holders and state production in the UI Layer

DevFeed: [State holders and state production in the UI Layer](<https://devfeed.tech/articles/state-holders-and-state-production-in-the-ui-layer-35679.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/state-holders-ui-layer>)

Author: Manuel Vivo

Published: 2022-10-25T00:00:01Z

Content type: tutorial

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [LineageOS](<https://devfeed.tech/topics/lineageos.md>), [Development](<https://devfeed.tech/topics/development.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>), [screen](<https://devfeed.tech/topics/screen.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [dev](<https://devfeed.tech/tags/dev.md>), [screen](<https://devfeed.tech/tags/screen.md>), [state](<https://devfeed.tech/tags/state.md>), [talk](<https://devfeed.tech/tags/talk.md>), [talks](<https://devfeed.tech/tags/talks.md>), [ui](<https://devfeed.tech/tags/ui.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

An Android Dev Summit 2022 talk about producing UI state and managing UI complexity with state holders. It explains the differences between UI and business logic, ViewModels and plain state holder classes, and state versus events.

### Source excerpt

Android Dev Summit 2022 talk

## Collecting flows in a lifecycle-aware manner

DevFeed: [Collecting flows in a lifecycle-aware manner](<https://devfeed.tech/articles/collecting-flows-in-a-lifecycle-aware-manner-35671.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/collecting-flows-video>)

Author: Manuel Vivo

Published: 2022-10-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [summit](<https://devfeed.tech/tags/summit.md>), [talk](<https://devfeed.tech/tags/talk.md>), [talks](<https://devfeed.tech/tags/talks.md>)

### AI overview

An Android Dev Summit 2022 talk about lifecycle-aware collection of Kotlin flows. It covers APIs including repeatOnLifecycle and collectAsStateWithLifecycle in Jetpack Compose and explains how they work internally.

### Source excerpt

Android Dev Summit 2022 talk

## Consuming flows safely in Jetpack Compose

DevFeed: [Consuming flows safely in Jetpack Compose](<https://devfeed.tech/articles/consuming-flows-safely-in-jetpack-compose-35672.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/consuming-flows-compose>)

Author: Manuel Vivo

Published: 2022-08-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [API](<https://devfeed.tech/topics/api.md>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [function](<https://devfeed.tech/topics/function.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>), [now-in-android](<https://devfeed.tech/topics/now-in-android.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [boilerplate](<https://devfeed.tech/tags/boilerplate.md>), [compose](<https://devfeed.tech/tags/compose.md>), [flow](<https://devfeed.tech/tags/flow.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [ui](<https://devfeed.tech/tags/ui.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This tutorial explains how to use collectAsStateWithLifecycle in Jetpack Compose to collect Flow and StateFlow values from UI code in a lifecycle-aware way. It describes how collection follows the app lifecycle, stops by default when the app is in the background, and helps avoid unnecessary resource usage. The API is identified as alpha and requires opting in to its annotation.

### Source excerpt

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