<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/https/speakerdeck.com/feed.rss.xml" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Benoît Quenaudon</title>
    <description>https://quenaudon.com/</description>
    <link>https://speakerdeck.com/oldergod</link>
    <atom:link rel="self" type="application/rss+xml" href="https://speakerdeck.com/oldergod.rss"/>
    <lastBuildDate>2017-08-03 07:46:24 -0400</lastBuildDate>
    <item>
      <title>36･15 Cash App</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/7f0be12ca6444790be0de03379ec7c3c/preview_slide_0.jpg?37734690" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Sat, 13 Dec 2025 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/oldergod/36-star-15-cash-app</link>
      <guid>https://speakerdeck.com/oldergod/36-star-15-cash-app</guid>
    </item>
    <item>
      <title>Instant Apps Eulogy</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/0464669544c74c129b2cfd47a4f3bd11/preview_slide_0.jpg?37240968" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Wed, 25 Jun 2025 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/instant-apps-eulogy</link>
      <guid>https://speakerdeck.com/oldergod/instant-apps-eulogy</guid>
    </item>
    <item>
      <title>36・15 Cash App</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/8fda259a53c84b64a15211e8fd639d09/preview_slide_0.jpg?29902736" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Fri, 26 Apr 2024 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/3615-cash-app</link>
      <guid>https://speakerdeck.com/oldergod/3615-cash-app</guid>
    </item>
    <item>
      <title>Heuristics in Everyday Life</title>
      <description></description>
      <media:content url="https://files.speakerdeck.com/presentations/0adcaad62ebe4d7bb46f73c20f633507/preview_slide_0.jpg?35712334" type="image/jpeg" medium="image"/>
      <content:encoded></content:encoded>
      <pubDate>Thu, 09 Nov 2023 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/oldergod/heuristics-in-everyday-life</link>
      <guid>https://speakerdeck.com/oldergod/heuristics-in-everyday-life</guid>
    </item>
    <item>
      <title>Sweet Architecture</title>
      <description>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.

</description>
      <media:content url="https://files.speakerdeck.com/presentations/d7f6ee8a0baa41cf9742357085cd9799/preview_slide_0.jpg?25412001" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Fri, 28 Apr 2023 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/sweet-architecture</link>
      <guid>https://speakerdeck.com/oldergod/sweet-architecture</guid>
    </item>
    <item>
      <title>Architecture at Scale (droidconNYC 2022)</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/96dbaf49ffaa4f66b1f6a34cdf9287eb/preview_slide_0.jpg?22539076" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Fri, 02 Sep 2022 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/architecture-at-scale-droidconnyc-2022</link>
      <guid>https://speakerdeck.com/oldergod/architecture-at-scale-droidconnyc-2022</guid>
    </item>
    <item>
      <title>Managing gRPC with Wire</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/8a2ab0b3ca224c3389604a1c91ddc1fc/preview_slide_0.jpg?21231751" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Tue, 26 Apr 2022 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/managing-grpc-with-wire</link>
      <guid>https://speakerdeck.com/oldergod/managing-grpc-with-wire</guid>
    </item>
    <item>
      <title>Wire &amp; Proto3</title>
      <description>Starting in 3.3.0 Wire supports Proto3. What changes with Proto3? How does Wire make it comfortable to use? Let’s see.</description>
      <media:content url="https://files.speakerdeck.com/presentations/0010a69450634d9c9751d43e0d88f1a7/preview_slide_0.jpg?16735228" type="image/jpeg" medium="image"/>
      <content:encoded>Starting in 3.3.0 Wire supports Proto3. What changes with Proto3? How does Wire make it comfortable to use? Let’s see.</content:encoded>
      <pubDate>Wed, 04 Nov 2020 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/oldergod/wire-and-proto3</link>
      <guid>https://speakerdeck.com/oldergod/wire-and-proto3</guid>
    </item>
    <item>
      <title>Effective Reactive Architecture</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/668cc743f0fd435da6dcaafec87f8f36/preview_slide_0.jpg?13965617" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Thu, 24 Oct 2019 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/effective-reactive-architecture</link>
      <guid>https://speakerdeck.com/oldergod/effective-reactive-architecture</guid>
    </item>
    <item>
      <title>Wire 3 : Tackling gRPC with Kotlin</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/64c83e6ced764d32b41371ff6f558939/preview_slide_0.jpg?13418265" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Tue, 27 Aug 2019 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/wire-3-tackling-grpc-with-kotlin</link>
      <guid>https://speakerdeck.com/oldergod/wire-3-tackling-grpc-with-kotlin</guid>
    </item>
    <item>
      <title>Server Driven UI Workflow</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/7bcaa24a037f465e8f0b4b7a6365b660/preview_slide_0.jpg?12423118" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Wed, 24 Apr 2019 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/server-driven-ui-workflow</link>
      <guid>https://speakerdeck.com/oldergod/server-driven-ui-workflow</guid>
    </item>
    <item>
      <title>Applying Rx Best Practices to Your Architecture</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/c129150757ee4a54aaec36e722e7a85d/preview_slide_0.jpg?13953802" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Tue, 06 Nov 2018 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/oldergod/applying-rx-best-practices-to-your-architecture</link>
      <guid>https://speakerdeck.com/oldergod/applying-rx-best-practices-to-your-architecture</guid>
    </item>
    <item>
      <title>Kotlin's Advanced Language Features</title>
      <description></description>
      <media:content url="https://files.speakerdeck.com/presentations/f62cd380af794fbf84aa06807c08a2b4/preview_slide_0.jpg?11001347" type="image/jpeg" medium="image"/>
      <content:encoded></content:encoded>
      <pubDate>Thu, 18 Oct 2018 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/kotlins-advanced-language-features</link>
      <guid>https://speakerdeck.com/oldergod/kotlins-advanced-language-features</guid>
    </item>
    <item>
      <title>Android における Model-View-Intent アーキテクチャ</title>
      <description>Video: https://youtu.be/MIV7Mi9zko8

Android上の開発は非同期の扱いを避ける事はできないです。ネットワーク、フレームワーク、ユーザの操作などから非同期処理が発生してます。油断してしまうとアプリが複雑化してメンテナンスが難しくなります。皆様はネットワークからレスポンスを待っている途中、ユーザが画面をローテーションしても問題ないですか？並行してユーザがいろんな操作しても大丈夫でしょうか？

Model-View-Intent アーキテクチャは非同期処理が発生する前提で考えられたため、すべてがストリームとして扱ってデータの流れを一方通行にするかつ不変オブジェクトを使うのが MVI アーキテクチャの方針です。マルチスレッディングやAndroidのライフサイクルの対応から生じる問題がアーキテクチャによって解決されるおかげでアプリのロジックに集中できるようになり、コードが書きやすく、今後の保守も楽になります！

皆様が MVI アーキテクチャの強みを理解し自分で実現できるようにする目標で Kotlin と RxJava を使って並行処理、画面ローテーション、スナックバーを含んだ画面をどうやって作っていくかを語るつもりです！</description>
      <media:content url="https://files.speakerdeck.com/presentations/5f72cbf29417498aa87dd27b0d31fe94/preview_slide_0.jpg?9377934" type="image/jpeg" medium="image"/>
      <content:encoded>Video: https://youtu.be/MIV7Mi9zko8

Android上の開発は非同期の扱いを避ける事はできないです。ネットワーク、フレームワーク、ユーザの操作などから非同期処理が発生してます。油断してしまうとアプリが複雑化してメンテナンスが難しくなります。皆様はネットワークからレスポンスを待っている途中、ユーザが画面をローテーションしても問題ないですか？並行してユーザがいろんな操作しても大丈夫でしょうか？

Model-View-Intent アーキテクチャは非同期処理が発生する前提で考えられたため、すべてがストリームとして扱ってデータの流れを一方通行にするかつ不変オブジェクトを使うのが MVI アーキテクチャの方針です。マルチスレッディングやAndroidのライフサイクルの対応から生じる問題がアーキテクチャによって解決されるおかげでアプリのロジックに集中できるようになり、コードが書きやすく、今後の保守も楽になります！

皆様が MVI アーキテクチャの強みを理解し自分で実現できるようにする目標で Kotlin と RxJava を使って並行処理、画面ローテーション、スナックバーを含んだ画面をどうやって作っていくかを語るつもりです！</content:encoded>
      <pubDate>Thu, 08 Feb 2018 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/oldergod/android-niokeru-model-view-intent-akitekutiya</link>
      <guid>https://speakerdeck.com/oldergod/android-niokeru-model-view-intent-akitekutiya</guid>
    </item>
    <item>
      <title>KotlinでAndroid開発を気持ちよくしよう</title>
      <description>Cybozu Meetup #10 モバイル で発表した内容
-------------------------------
Kotlin はまだ使っていませんか？使っているけれど Java と比べて何が良いかがはっきりしませんか？
実は Java で当たり前な面倒くさい事いっぱいあるけれど Kotlin では当たり前な便利な事がいっぱいあります！
日々の開発が楽になり、「もっと早く Kotlin の事を知っとけばよかった！」と皆様が思うように説明させて頂きます。
Kotlin で Android の開発を気持ちよくしましょう。</description>
      <media:content url="https://files.speakerdeck.com/presentations/1ac036ce7c014e4fb2eefeb149d7742b/preview_slide_0.jpg?9322438" type="image/jpeg" medium="image"/>
      <content:encoded>Cybozu Meetup #10 モバイル で発表した内容
-------------------------------
Kotlin はまだ使っていませんか？使っているけれど Java と比べて何が良いかがはっきりしませんか？
実は Java で当たり前な面倒くさい事いっぱいあるけれど Kotlin では当たり前な便利な事がいっぱいあります！
日々の開発が楽になり、「もっと早く Kotlin の事を知っとけばよかった！」と皆様が思うように説明させて頂きます。
Kotlin で Android の開発を気持ちよくしましょう。</content:encoded>
      <pubDate>Tue, 30 Jan 2018 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/oldergod/kotlindeandroidkai-fa-woqi-chi-tiyokusiyou</link>
      <guid>https://speakerdeck.com/oldergod/kotlindeandroidkai-fa-woqi-chi-tiyokusiyou</guid>
    </item>
    <item>
      <title>Model-View-Intent for Android</title>
      <description>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.</description>
      <media:content url="https://files.speakerdeck.com/presentations/1c778d89508a40348d6623a3e554522f/preview_slide_0.jpg?8635265" type="image/jpeg" medium="image"/>
      <content:encoded>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:encoded>
      <pubDate>Tue, 26 Sep 2017 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/model-view-intent-for-android</link>
      <guid>https://speakerdeck.com/oldergod/model-view-intent-for-android</guid>
    </item>
    <item>
      <title>Bundle Injection with Dagger</title>
      <description>See blog post: “Bundle Injection with Dagger” https://medium.com/@oldergod/bundle-injection-with-dagger-fe98b59f1cc6</description>
      <media:content url="https://files.speakerdeck.com/presentations/48b5b083d7e54686a28bbded0f778dfb/preview_slide_0.jpg?8585095" type="image/jpeg" medium="image"/>
      <content:encoded>See blog post: “Bundle Injection with Dagger” https://medium.com/@oldergod/bundle-injection-with-dagger-fe98b59f1cc6</content:encoded>
      <pubDate>Mon, 18 Sep 2017 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/bundle-injection-with-dagger</link>
      <guid>https://speakerdeck.com/oldergod/bundle-injection-with-dagger</guid>
    </item>
    <item>
      <title>DI：依存性注入ライブラリを自分で作ろう（短板）</title>
      <description>DI は便利だけど、@Injectはどこに付けたらいい？どの場合に付けたらいい？@Singletonは？ 
それから、うまく行かなかった場合は調査するの大変？ 
Dependency Injection はブラックボックスにみえるかもしれないけどやっている事はシンプル。 
ステップ・バイ・ステップ、依存性注入ライブラリをどうやって作るかをみましょう。</description>
      <media:content url="https://files.speakerdeck.com/presentations/2fecdc905a344c5f88b6184e7b2a4a2e/preview_slide_0.jpg?8378507" type="image/jpeg" medium="image"/>
      <content:encoded>DI は便利だけど、@Injectはどこに付けたらいい？どの場合に付けたらいい？@Singletonは？ 
それから、うまく行かなかった場合は調査するの大変？ 
Dependency Injection はブラックボックスにみえるかもしれないけどやっている事はシンプル。 
ステップ・バイ・ステップ、依存性注入ライブラリをどうやって作るかをみましょう。</content:encoded>
      <pubDate>Fri, 04 Aug 2017 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/oldergod/di-yi-cun-xing-zhu-ru-raiburariwozi-fen-dezuo-rou-duan-ban</link>
      <guid>https://speakerdeck.com/oldergod/di-yi-cun-xing-zhu-ru-raiburariwozi-fen-dezuo-rou-duan-ban</guid>
    </item>
  </channel>
</rss>
