<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/https/speakerdeck.com/feed.atom.xml" media="screen"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <id>tag:speakerdeck.com,2005:/oldergod</id>
  <link rel="alternate" type="text/html" href="https://speakerdeck.com"/>
  <link rel="self" type="application/atom+xml" href="https://speakerdeck.com/oldergod.atom"/>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/1479008</id>
    <published>2025-12-13T04:07:42-05:00</published>
    <updated>2025-12-13T04:14:01-05:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/36-star-15-cash-app"/>
    <title>36･15 Cash App</title>
    <content type="html">Mobile Dev Week at Abu Dhabi
----------------------
1400 modules. 60 developers. 40 million customers.
This Android application, what does it look like?
It looks like Cash App.
We have the opportunity to discover, to inspect, to dive indeed into the internal current state of Cash App. No rug unturned, we will reveal it all: tech stack, open-source, APIs, architecture, development process, design system, testing, navigation, CI.
Our Android application is modern, flexible, and reliable. We shall discover how it gets done.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/7f0be12ca6444790be0de03379ec7c3c/preview_slide_0.jpg?37734690" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/1461170</id>
    <published>2025-11-05T04:40:37-05:00</published>
    <updated>2025-11-05T05:24:20-05:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/instant-apps-eulogy"/>
    <title>Instant Apps Eulogy</title>
    <content type="html">Cyril Mottier &amp; Benoît Quenaudon at Droidcon NYC 2025

Last year we asked ourselves a question. One that most Android engineers avoid whispering aloud: Are Instant Apps still a thing? It turns out that Google officially said no! Instant Apps are fascinating because they offer possibilities outside of what Google originally engineered them for. Benoît (Cash App) and Cyril (Amo), both of us shipped an Instant App this year for different use cases and different implementations. The restrictions required to publish an Instant App encourage dynamic, lean and performant architectures. Savoir-faire which stays relevant even outside the context of Instant Apps. After hovering briefly over the state of Instant Apps, we’ll share how we built and shipped our projects. From development quirks to publishing oddities, we’ll highlight what worked, what didn’t, and why Instant Apps might have deserved a second look.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/0464669544c74c129b2cfd47a4f3bd11/preview_slide_0.jpg?37240968" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/1176213</id>
    <published>2024-04-26T10:03:46-04:00</published>
    <updated>2024-04-26T10:10:43-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/3615-cash-app"/>
    <title>36・15 Cash App</title>
    <content type="html">1300 modules. 50 developers. 40 million customers.
This Android application, what does it look like?
It looks like Cash App.
We have the opportunity to discover, to inspect, to dive indeed into the internal current state of Cash App. No rug unturned, we will reveal it all: tech stack, open-source, APIs, architecture, development process, design system, testing, navigation, CI.
Our Android application is modern, flexible, and reliable. We shall discover how it gets done.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/8fda259a53c84b64a15211e8fd639d09/preview_slide_0.jpg?29902736" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/1394178</id>
    <published>2025-07-04T06:06:36-04:00</published>
    <updated>2025-07-04T06:08:44-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/heuristics-in-everyday-life"/>
    <title>Heuristics in Everyday Life</title>
    <content type="html"></content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/0adcaad62ebe4d7bb46f73c20f633507/preview_slide_0.jpg?35712334" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/1021445</id>
    <published>2023-04-28T07:00:28-04:00</published>
    <updated>2023-04-28T07:02:03-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/sweet-architecture"/>
    <title>Sweet Architecture</title>
    <content type="html">How about unidirectional data flow in an architecture where views and presenters don’t know about each other? While growing up to 40+ engineers and 600+ modules, Cash App managed to control the complexity of its product. Views can be written in either Kotlin or XML; presenters with either Rx, Coroutines, or Compose; no problem. We test views on the JVM and we don’t need to define fake presenters either.

Writing new screens is delightful and we’ll see how we made it possible by:
- Looking at the foundations of the architecture: our internal navigation library which allows clear modularity,
- Checking how it can adapt to presenters using different technologies,
- Explaining how views are defined and tested,
- Seeing how everything is glued together from a bird’s-eye view of the app.

Growing your app and team doesn’t imply more pain nor more complexity. Attendees will gain a sound understanding about how we achieved it.

</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/d7f6ee8a0baa41cf9742357085cd9799/preview_slide_0.jpg?25412001" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/917776</id>
    <published>2022-09-02T14:34:41-04:00</published>
    <updated>2022-09-02T14:37:59-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/architecture-at-scale-droidconnyc-2022"/>
    <title>Architecture at Scale (droidconNYC 2022)</title>
    <content type="html">How about unidirectional data flow in an architecture where views and presenters don’t know about each other? While growing up to 40+ engineers and 600+ modules, Cash App managed to control the complexity of its product. Views can be written in either Kotlin or XML; presenters with either Rx, Coroutines, or Compose; no problem. We test views on the JVM and we don’t need to define fake presenters either.
Writing new screens is delightful and we’ll see how we made it possible by:
- Looking at the foundations of the architecture: our internal navigation library which allows clear modularity,
- Checking how it can adapt to presenters using different technologies,
- Explaining how views are defined and tested,
- Seeing how everything is glued together from a bird’s-eye view of the app. Growing your app and team doesn’t imply more pain nor more complexity. Attendees will gain a sound understanding about how we achieved it.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/96dbaf49ffaa4f66b1f6a34cdf9287eb/preview_slide_0.jpg?22539076" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/866163</id>
    <published>2022-04-26T08:11:50-04:00</published>
    <updated>2022-04-26T08:13:11-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/managing-grpc-with-wire"/>
    <title>Managing gRPC with Wire</title>
    <content type="html">At Cash App, mobile and server engineers collaborate on Protobuf and gRPC schemas to define APIs between their services. To improve our experience doing so, we built Wire. From a small in-house protobuf generation library, Wire has today matured into our favourite tool to manage and generate gRPC messages and services. Wire is backed by a versatile Gradle plugin and is used on our Android app, our iOS app, and our microservices at Cash App.
The talk will introduce Wire’s basic features before diving into:

- What Proto 3 support brings to the table in terms of new types and JSON serialisation, and the difference between Wire and protoc,
- How Wire handles options and provides comfortable APIs to consume them,
- Details about Wire Gradle plugin internals, what steps are processed and how to configure them,
- How Wire helps managing protobuf dependencies across microservices.

This presentation will provide simple entry points for people starting with Wire, and actionable improvements for experienced users alike.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/8a2ab0b3ca224c3389604a1c91ddc1fc/preview_slide_0.jpg?21231751" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/683442</id>
    <published>2020-11-18T15:55:56-05:00</published>
    <updated>2020-11-18T15:58:50-05:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/wire-and-proto3"/>
    <title>Wire &amp; Proto3</title>
    <content type="html">Starting in 3.3.0 Wire supports Proto3. What changes with Proto3? How does Wire make it comfortable to use? Let’s see.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/0010a69450634d9c9751d43e0d88f1a7/preview_slide_0.jpg?16735228" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/567486</id>
    <published>2019-10-24T08:22:49-04:00</published>
    <updated>2019-10-28T11:48:03-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/effective-reactive-architecture"/>
    <title>Effective Reactive Architecture</title>
    <content type="html">Video: https://youtu.be/7fE5MDQ_Sc4

Your relationship with RxJava doesn't have to be complicated. You may have found many ways to use it wrong but it is powerful when used properly.In fact, RxJava can guide you in shaping a sound architecture for your app. To do this, you only have to follow a few but decisive principles.

In this talk, you'll:
- Explore how side-effect isolation can help avoiding bugs.
- Learn how to model your data and share it as one unique stream between your view and your presenter.
- Discover the ways a unidirectional data flow makes adding new functionality easy and safe.
- Look at how you can easily deal with collateral side effects, such as navigation.

After this talk, you’ll be able to write a robust and reactive architecture for your app, taking full advantage of RxJava.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/668cc743f0fd435da6dcaafec87f8f36/preview_slide_0.jpg?13965617" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/543552</id>
    <published>2019-08-28T09:54:49-04:00</published>
    <updated>2019-10-28T11:48:30-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/wire-3-tackling-grpc-with-kotlin"/>
    <title>Wire 3 : Tackling gRPC with Kotlin</title>
    <content type="html">Video: https://youtu.be/xo_zVPAXbBg

Co-Presented by @egorand and @oldergod.
Protocol Buffers (or Protobuf) is an efficient schema-based data serialization protocol, and gRPC is a high-performance, HTTP/2-based RPC framework. The two work together flawlessly to help you build world class distributed systems.

At Square, client and server engineers collaborate on Protobuf schemas to define APIs. We also built Wire - a library which processes schemas and generates Java code that applications can use to send and receive data. Last year we started working on Wire 3, which is rewritten in Kotlin, generates Kotlin code, and adds a number of exciting features:

- Protobuf messages as data classes
- Multiplatform runtime module
- Coroutines-based gRPC APIs
- Gradle plugin

In this session, we’ll take a deep dive into these features, and talk about how we leveraged Kotlin to create better APIs. We’ll show you how to get the best out of Protobuf and gRPC for your server and client applications using Wire.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/64c83e6ced764d32b41371ff6f558939/preview_slide_0.jpg?13418265" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/512196</id>
    <published>2019-04-24T11:00:02-04:00</published>
    <updated>2019-10-28T11:49:06-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/server-driven-ui-workflow"/>
    <title>Server Driven UI Workflow</title>
    <content type="html">Video: https://youtu.be/eHGFpRj_3Vk

Deploying an Android app to the play store always contains some cost in it. Furthermore the user isn't always keen to download (again) our latest versioned app. How about doubling the cost of development with the iOS app into account (or Web)?
At Square, we came up with a system in which the server owns the workflow of the client. This means the client doesn't know before hand which screen, which image or text it's gonna show next.

In this talk, we'll:

- Know why Square ended up choosing this system.
- Discover how we built it.
- Look at the challenges, the pros and cons of such an architecture.
- Talk about how we want to alter it for the future.

Attendees to this talk will be expose to solutions for problems every company is facing but don't address.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/7bcaa24a037f465e8f0b4b7a6365b660/preview_slide_0.jpg?12423118" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/474574</id>
    <published>2018-11-06T14:35:15-05:00</published>
    <updated>2019-10-28T11:49:36-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/applying-rx-best-practices-to-your-architecture"/>
    <title>Applying Rx Best Practices to Your Architecture</title>
    <content type="html">Video: https://youtu.be/ohBumH5-3Qs

Your relationship with RxJava doesn't have to be complicated. We find many ways to use it wrong; it is also powerful when used properly. In fact, RxJava can guide you in shaping a sound architecture for your app. We only have to follow a few but decisive principles.

In this talk, we'll:

- See at how side-effect isolation can help avoiding bugs.
- Learn how to share one unique stream between your view and your presenter.
- Discover the ways a unidirectional data flow makes adding new functionality easy and safe.
- Look at how data immutability brings safety to data manipulation.

After this talk, you’ll be able to write a robust and reactive architecture for your app, taking full advantage of RxJava.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/c129150757ee4a54aaec36e722e7a85d/preview_slide_0.jpg?13953802" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/470819</id>
    <published>2018-10-18T13:51:56-04:00</published>
    <updated>2018-10-18T14:09:49-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/kotlins-advanced-language-features"/>
    <title>Kotlin's Advanced Language Features</title>
    <content type="html"></content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/f62cd380af794fbf84aa06807c08a2b4/preview_slide_0.jpg?11001347" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/427678</id>
    <published>2018-02-08T00:03:10-05:00</published>
    <updated>2019-10-28T11:50:19-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/android-niokeru-model-view-intent-akitekutiya"/>
    <title>Android における Model-View-Intent アーキテクチャ</title>
    <content type="html">Video: https://youtu.be/MIV7Mi9zko8

Android上の開発は非同期の扱いを避ける事はできないです。ネットワーク、フレームワーク、ユーザの操作などから非同期処理が発生してます。油断してしまうとアプリが複雑化してメンテナンスが難しくなります。皆様はネットワークからレスポンスを待っている途中、ユーザが画面をローテーションしても問題ないですか？並行してユーザがいろんな操作しても大丈夫でしょうか？

Model-View-Intent アーキテクチャは非同期処理が発生する前提で考えられたため、すべてがストリームとして扱ってデータの流れを一方通行にするかつ不変オブジェクトを使うのが MVI アーキテクチャの方針です。マルチスレッディングやAndroidのライフサイクルの対応から生じる問題がアーキテクチャによって解決されるおかげでアプリのロジックに集中できるようになり、コードが書きやすく、今後の保守も楽になります！

皆様が MVI アーキテクチャの強みを理解し自分で実現できるようにする目標で Kotlin と RxJava を使って並行処理、画面ローテーション、スナックバーを含んだ画面をどうやって作っていくかを語るつもりです！</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/5f72cbf29417498aa87dd27b0d31fe94/preview_slide_0.jpg?9377934" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/426330</id>
    <published>2018-01-30T04:33:33-05:00</published>
    <updated>2018-01-30T04:37:33-05:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/kotlindeandroidkai-fa-woqi-chi-tiyokusiyou"/>
    <title>KotlinでAndroid開発を気持ちよくしよう</title>
    <content type="html">Cybozu Meetup #10 モバイル で発表した内容
-------------------------------
Kotlin はまだ使っていませんか？使っているけれど Java と比べて何が良いかがはっきりしませんか？
実は Java で当たり前な面倒くさい事いっぱいあるけれど Kotlin では当たり前な便利な事がいっぱいあります！
日々の開発が楽になり、「もっと早く Kotlin の事を知っとけばよかった！」と皆様が思うように説明させて頂きます。
Kotlin で Android の開発を気持ちよくしましょう。</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/1ac036ce7c014e4fb2eefeb149d7742b/preview_slide_0.jpg?9322438" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/405207</id>
    <published>2017-08-31T00:48:41-04:00</published>
    <updated>2017-10-31T20:42:32-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/model-view-intent-for-android"/>
    <title>Model-View-Intent for Android</title>
    <content type="html">Video: https://www.youtube.com/watch?v=64rQ9GKphTg

Development on Android inevitably involves asynchronous sources, which includes the network, the framework or even the user. This easily leads to a complex architecture and a state that is difficult to manage. Are you comfortable with your users rotating the screen while waiting for a network response? What will happen when multiple requests hit the network at the same time?

The Model-View-Intent architecture, borrowed from the web, is all about streams: listening to asynchronous sources, processing the information, and displaying the result. In this architecture, everything is a stream. However, Android is a multi-threaded platform and this introduces additional complexity that we have to take into account when applying the MVI pattern. Unidirectional data flow allows one to focus on a unique source of truth and by embracing immutability, there is no need to worry about data being mutated by other parts of the code. By abstracting away the common pitfalls of state management in Android, this architecture allows the developer to focus on the logic of the app, making it easy to write and easy to maintain.

In this talk, we’ll look at how, with Kotlin and RxJava, this reactive architecture can help the developer write a complex UI with concrete examples, including parallel network requests, config changes, SnackBars and more.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/1c778d89508a40348d6623a3e554522f/preview_slide_0.jpg?8635265" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/407448</id>
    <published>2017-09-18T04:03:34-04:00</published>
    <updated>2017-09-18T08:22:13-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/bundle-injection-with-dagger"/>
    <title>Bundle Injection with Dagger</title>
    <content type="html">See blog post: “Bundle Injection with Dagger” https://medium.com/@oldergod/bundle-injection-with-dagger-fe98b59f1cc6</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/48b5b083d7e54686a28bbded0f778dfb/preview_slide_0.jpg?8585095" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/402056</id>
    <published>2017-08-03T07:46:24-04:00</published>
    <updated>2017-08-03T07:47:57-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/oldergod/di-yi-cun-xing-zhu-ru-raiburariwozi-fen-dezuo-rou-duan-ban"/>
    <title>DI：依存性注入ライブラリを自分で作ろう（短板）</title>
    <content type="html">DI は便利だけど、@Injectはどこに付けたらいい？どの場合に付けたらいい？@Singletonは？ 
それから、うまく行かなかった場合は調査するの大変？ 
Dependency Injection はブラックボックスにみえるかもしれないけどやっている事はシンプル。 
ステップ・バイ・ステップ、依存性注入ライブラリをどうやって作るかをみましょう。</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/2fecdc905a344c5f88b6184e7b2a4a2e/preview_slide_0.jpg?8378507" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Benoît Quenaudon (@oldergod)</name>
    </author>
  </entry>
  <title>Benoît Quenaudon (@oldergod) on Speaker Deck</title>
  <updated>2025-12-13T04:07:42-05:00</updated>
</feed>
