Software engineer  ·  Berlin, Germany

Cesar
Valiente

Android at Microsoft — Surface Duo Developer Experience

I build Android apps, and the guidance that helps other people build theirs. For the last few years my work has centred on what happens when a screen stops being one fixed rectangle — foldables, dual-screen, adaptive layout — and on leading the Android@Microsoft community, where the company's Android teams share what they learn.

Before that: architecture and Kotlin, a decade of Android apps, and a move from Madrid to Berlin that never got reversed.

Cesar Valiente

Madrid ✈ Berlin

Still writing Android

Role
Software engineer, Surface Duo Developer Experience
Leads
The Android@Microsoft internal community
Focus
Foldable & adaptive UI, architecture, testing
Writes
Kotlin, and Java when the code is old enough
Ask me
Foldables, architecture, testing, careers, community

Now building

Layer Four logo: four stacked layers inside a broken ring

Layer Four

The first blockchain layer built exclusively for mobile.

Built on Solana. Everything about it starts from the assumption that the node is a phone in someone's pocket — not a server that happens to have an app attached.

Read the brief and download the Android build

Status
In active development
Base
Solana
Target
Android, arm64 and universal
Role
Building it

What I work on

Three things I keep coming back to

Adaptive & foldable UI

Jetpack WindowManager, activity embedding, list-detail, navigation that survives a posture change. Layouts that hold up when the device is a phone, a tablet and a book within the same second.

Architecture in Kotlin

Unidirectional data flow, borrowed from Flux and Redux and made to sit properly on Android's lifecycle. Testing, modularisation and build setups that outlive the demo.

Teaching it back

Codelabs, workshops, conference talks and a weekly stream. Most of what I learn leaves as something someone else can clone, run and take apart.

Selected work

Problems I solved once, then published

Each of these started as something a team of mine needed that week. They are open source, and the two below are the ones other developers have built on most.

Unidirectional data flow for Android

A reference implementation of one-way state on Android in Kotlin: a single source of truth, state moving in one direction, side effects pushed to the edges. It takes the ideas behind Flux and Redux and works out what they mean once you have to survive a configuration change.

KotlinArchitecture Flux / Redux2017

Why it exists

Every Android team of that era was rediscovering the same state bugs. I wanted an argument you could run rather than one you had to read — the app is the talk, and the talk is the app.

Slides: Unidirectional data flow on Android using Kotlin ↗
Source ↗

Runtime permissions, the week the rules changed

Android 6.0 moved permissions from install time to runtime and quietly broke a common assumption in every app. This walks the whole new model — the request, the denial, the "never ask again" dead end — and wires it into a real screen rather than a demo activity.

JavaAndroid 6.0 Permissions2015

Why it exists

Written in the weeks after the release, when the documentation was thin and everyone was guessing. A decade on, the permission model it explains is still the one Android ships, which is why people keep forking it.

Source ↗

Toolbox

What I reach for

Languages
Kotlin first, Java where the code predates it, a little Rust and Swift
UI
Jetpack Compose and the View system, WindowManager, Navigation, SlidingPaneLayout
Architecture
Unidirectional state, Coroutines and Flow, Room, modularisation
Build
Gradle, and Bazel when a repo gets big enough to need it
Testing
JUnit, Espresso, instrumented runs across emulator matrices

How I work

Small, runnable, explained

I'd rather answer one question properly than demonstrate ten things at once. Nearly everything I publish is a single app that isolates a single API, small enough to read in an afternoon and run before lunch.

The same habit carries into teams: write the thing down, make it reproducible, hand it to whoever needs it next. That is most of what running a community turns out to be.

Writing, speaking & community

Most of the work leaves as an article or a talk

Foldable development, software architecture, testing, Android, career advice, leadership, community building — these are the subjects I end up talking about most. If you want me at your event, send me a message.