droidcon NYC 2019
2019-08-26..2019-08-27
New York City, United States
[droidcon NYC 2016, droidcon NYC 2017, droidCon NYC 2018, droidcon NYC 2019]
| title | author | length |
|---|---|---|
| If your code looks like it's Kotlin & quacks like it's Kotlin, then it probably is Swift. | Cecilia Castillo, Adrián Catalan | 41m |
Built a tiny dog‑breed guessing game with 10 rounds and local scoring, implemented natively on both platforms while swapping roles so iOS dev writes Kotlin and… | ||
| Kids, Play Nice! - Writing With Kotlin-Java Interop | Britt Barak | 38m |
Nexmo’s Kotlin-Java interop experience delivers ten concrete fixes: annotate nullability to avoid platform types, prefer bean-style getters, use @JvmOverloads… | ||
| A Talk about Talking : Making a Memorable Presentation | Stacy L Devino | 30m |
Concrete checklist for shows and meetings: define why anyone should care, draft an outline with three core points and rehearse those until natural, get… | ||
| Hands on MvRx: Building Real Apps | Gabriel Peal | 42m |
An Android architecture library built on Jetpack and Kotlin-only Jetpack extension that treats each screen as an immutable state data class and a single… | ||
| Netflix's Reactive Android Components - The Redux Revenge. | Juliano Moraes | 35m |
Built two native apps (Android in Kotlin, iOS in Swift) in three months with four engineers, using GraphQL for fetching and quicktype to generate identical… | ||
| Building a Security Assurance Program | Christopher Cole | 38m |
Practical checklist for starting a security assurance program: require executive buy‑in, write defensible policies with waiver deadlines, and set a clear bug… | ||
| SELECT * FROM Kotlin | Sam Edwards | 39m |
Evaluates Room vs SQLDelight by adding on-disk persistence to a sample shopping-cart app, implements three modules (in-memory, Room, SQLDelight), and verifies… | ||
| Diving into advanced Kotlin features | Simon Wirtz | 39m |
Covers concrete Kotlin features and how they compile: Kotlin 1.1.3.x and inline-class preview 1.3 are used as references; shows the 'to' infix pair and custom… | ||
| Multiplatform Functional Architecture | Michael Pardo | 33m |
Argues that a single, testable core can run on Android and iOS by combining Kotlin Multiplatform with a pure Model View Update (MVU) core implemented as the… | ||
| SwiftUI meets Kotlin Multiplatform! | John O'Reilly | 16m |
Explores a working iOS app that consumes a shared Kotlin Multiplatform repository to show bus routes, using SwiftUI views bound to an ObservableObject with… | ||
| From Four Wheels to Two | RJ Marsan | 30m |
Lyft ships a scooter sharing client from zero to launch in about two months by using feature modules and flavor-based NOP implementations so production stays… | ||
| Square Workflow: Android and iOS apps composed of state machines defining UI and navigation. | Zach Klippenstein, Ray Ryan | 41m |
Square reworks Point of Sale into a composable runtime: an open-source Kotlin/Swift library (github.com/square/workflow) that models UI and navigation as state… | ||
| Implementing the Paging Library | Ash Davies | 36m |
Explains how the Android Paging Library composes PagedList with ListAdapter/DiffUtil and a DataSourceFactory to load snapshots lazily, using LiveData (or… | ||
| Litho: Best Practices for building efficient UIs | Sergey Ryabov | 42m |
Litho claims up to smoother scrolling by moving layout and measurement to the background layout thread, flattening view hierarchies and recycling individual… | ||
| Flutter at scale | Jorge Coca | 37m |
BMW adopts Flutter as a single codebase for iOS, Android and web supporting multiple brands and regional flavors, using trunk‑based development with scheduled… | ||
| Adapting Your Apps for Android Q Privacy Requirements | Nicole Borrelli | 29m |
Android 10 enforces concrete privacy changes: location gains allow only while app is in use (foreground services count), apps request incremental background… | ||
| Making a mountain out of a module | Joe Birch, Ataul Munim | 25m |
A small Letterbox client with three screens (feed, film detail, actor detail) is built to test modularization, using feature-based domain/data/remote modules… | ||
| A day in the life of a mobile reverse engineer | Alec Guertin | 30m |
Shows how Google Play Protect analyzes apps at scale: visibility to ~2 billion devices, >50 billion installs checked and over a million APKs analyzed daily… | ||
| Connect platforms with a Kotlin DSL | Patrick Cousins | 36m |
Sprout is a Kotlin DSL plus CLI that generates platform code (Retrofit endpoints, Moshi models, Swift, PHP) from a machine‑readable Sprout Kotlin DSL seed… | ||
| Why does Google think my app is harmful? | Alec Guertin | 26m |
Google Play Protect runs static and dynamic scans on APKs, flags apps as Potentially Harmful Apps or Mobile Unwanted Software, and shows pop-up warnings or… | ||
| Securely Take Payments in a React Native App | Richard Moot | 29m |
A working React Native Order Ahead app shows Square In‑App Payments SDK handling card entry UI that sends tokenized nonces directly to Square so the app never… | ||
| Data Encryption on Android | Jon Markoff | 23m |
Practical guide to encrypting Android app data with Jetpack Security: use the MasterKeys helper to create AES-256-GCM keys backed by the AndroidKeyStore, opt… | ||
| Koin vs Dagger (Service Locator vs D.I.) | Brian Plummer | 17m |
Compares Koin 2.0 and Dagger by showing how each resolves dependencies: Koin uses Koin 2.0 runtime resolution with reified types and the lazily injected… | ||
| Reverse-Engineering apps on the device - how far can we go? | Jeb Ware | 21m |
An app on device opens another app’s APK from PackageManager.publicSourceDir, treats it as a zip to read assets, uses Resources.getResourcesForApplication and… | ||
| Apps at Scale: An Industry Discussion | Gabriel Peal, Ty Smith, César Puerta, Pierre-Yves Ricau, Lisa Wray | 01h 28m |
Panel compares real engineering choices: monorepos vs many repos, build systems and tradeoffs (Gradle + caching, OkBuck, Buck and Bazel, ongoing move to… | ||
| Invading the home screen | Matteo Bonifazi | 33m |
Describes concrete steps to turn a flat Android home screen into active entry points using app shortcuts and widgets: implement static, dynamic, and pinned… | ||
| Good APIs don't need a tutorial | Alec Strong | 42m |
Argues that a library should teach by arrangement not text: split an API into its own tiny module so compilation is fast and experimentation happens in a side… | ||
| Calm is key: A guide to a happier, more productive workplace | Dan Kim | 40m |
Argues that calm beats frantic hours with concrete practices: adopt remote-style asynchronous work, ban ASAP expectations, use Slack for nonessential chat and… | ||
| Git rm -r --cached .idea? | Harry Grillo | 14m |
Explains which .idea files to commit and which to ignore: keep code styles and inspection profiles to synchronize formatting and lint, commit run… | ||
| Easy Android Accessibility | Lyla Fujiwara, Shailen Tuli | 39m |
Accessibility work pays off: Android accessibility reaches over a billion people (about 1 in 7) and ~200–250 million with visual impairment, so make apps… | ||
| Moving to MotionLayout | Huyen Tue Dao | 43m |
MotionLayout becomes a declarative, seekable layer on top of ConstraintLayout using a MotionScene XML file to define start/end constraint sets, onSwipe… | ||
| Inhibiting the impostor | Ana Baotić | 27m |
Claims that 7 out of 10 people experience impostor feelings and that the cycle runs: stop, worry, over-prepare or procrastinate, then attribute success to luck… | ||
| Building apps using Kotlin Native | Jeremy Rempel | 52m |
Practical walkthrough of using Kotlin Native to share business logic across Android and iOS: compiler via LLVM produces an Objective‑C framework imported by… | ||
| Prototyping with Jetpack Compose | Ben Oberkfell | 35m |
Prototype implements a playable Jetpack Compose mini crossword: a functional 5x5 mini crossword rendered from a simple board model, with scalable centered… | ||
| Using Kotlin/JS and Kotlin/Native on Android | Jake Wharton | 36m |
Demonstrates compiling the same Kotlin implementation for JVM, JavaScript, and native and swapping implementations behind an interface so Android code can call… | ||
| A Brief History of Real Time Audio (or Wasn’t That API Deprecated?) | Morrison Chang | 17m |
A concise timeline of Android real-time audio: early MIDI engine JetPlayer (Android 1.5), NDK-only OpenSL ES (API 9) giving ~45 ms latency, then a… | ||
| Productivity Hacks for Busy Engineers | Chuck Greb | 21m |
An interactive card counting exercise uses three decks and a volunteer to show context switching drops throughput from 79 to 42 cards and increases error and… | ||
| Getting big payouts with Koin | Rick Busarow | 36m |
Demonstrates using Koin 2.0 as a Kotlin service-locator to wire an Android single-screen app: ViewModel with a repository and a user ID, repository built from… | ||
| Performance in a Kotlin world | Sean McQuillan, Dan Galpin | 34m |
Uses Android Studio Profiler (CPU, memory, network, energy), Jetpack Benchmarking, and Systrace to find real bottlenecks: a schedule screen renders twice and… | ||
| Keynote: Being more than an Android Developer | Yash Prabhu | 26m |
Argues Android work is both a tech stack and a people stack, showing concrete practices: use CircleCI or Jenkins, Gradle, MVVM/MVP, Dagger, move from RxJava to… | ||
| Redux for Android | Elliott Chenger | 38m |
Argues that adopting Redux on Android centralizes user state into a single store, makes data flow unidirectional, and dramatically improves testability and… | ||
| Accessibility on Android : Some assembly required | Tom Wlodkowski | 28m |
Shows concrete fixes: add contentDescription so “Toppings” reads “No toppings selected,” use a custom accessibility action to change the generic “double tap to… | ||
| How it's made: Jetpack Compose | Yousuf Haque, Zachary Smith | 16m |
Demo builds a Stark roll call that inserts names into an alphabetized list and updates a header when all are present, proving the UI simply mirrors application… | ||
| Setting up a bug bounty program for your app | Sebastian Porst | 46m |
Practical guide for launching a bug bounty: use a triage partner like HackerOne private program to invite trusted researchers first, start very narrow… | ||
| Android Jetpack Hearts Kotlin: on the road to more wholesome APIs | Wojtek Kaliciński | 37m |
Android declares Kotlin-first for Jetpack and shows concrete work: Java APIs get KTX extensions (sharedprefs, DSLs, property delegates), libraries add… | ||
| Adding Flutter to your Android app | Matt Carroll | 30m |
Explains how to add Flutter to an existing Android Gradle app by creating a Flutter module and either producing a consumable AAR (flutter build aar) or linking… | ||
| Building iOS and Android Mobile App in 30 minutes! | Hazem Saleh | 40m |
Claims that a working iOS and Android app can be built in 30 minutes using Flutter and Dart, with Visual Studio Code and the Flutter CLI. The demo uses… | ||
| Lessons Learned from Using Kotlin Multiplatform internally | John Bennedict Lorenzo | 35m |
OLX migrates the posting flow using Kotlin Multiplatform starting with shared data models and Kotlin serialization, planning to add Ktor and SQLDelight later… | ||
| Effective Multiplatform Architecture | Ryan Harter | 32m |
Migrating the Chicago Roboto Android app to Kotlin Multiplatform converts one feature at a time and keeps UI layers native, producing thin platform apps that… | ||
| Where the Heck Am I? Understanding Location in Your Application | Richard Süselbeck | 37m |
Explains how satellite navigation actually fixes a phone: a constellation of 25 satellites in six orbits at ~20,000 km broadcasts ephemeris and almanac data… | ||
| CameraX Workshop | Caren Chang | 01h 21m |
Builds a camera app from scratch using Jetpack CameraX with live preview, photo capture that writes files and logs the path, and a frame image analysis… | ||
| The Light Way | Lisa Wray | 28m |
Messenger Lite prioritizes cold start and tiny install size and proves a native app can scale: a 6 MB APK inside a 1.3 billion‑user ecosystem. It enforces a… | ||
| Getting to know CameraX | Meghan Mehta, Oscar Wahltinez | 29m |
CameraX claims 70% fewer lines of code than Camera2 and runs back to L (backwards compatible to L, covering >90% of devices), fixes flash and camera‑switch… | ||
| Working Across Platforms | Christina Lee | 39m |
Compares concrete cross‑platform choices: React Native bridge uses JS derivatives and an async FIFO message queue that often becomes a serialization… | ||
| Coroutine + Flow = MVI | Etienne Caron | 36m |
Shows how MVI uses immutable state and unidirectional data flow with Kotlin Coroutines and Kotlin Flow to avoid race conditions and remove RxJava complexity… | ||
| Storing app data reliably & performantly with SimpleStore | Kurt Nelson | 34m |
Claims SharedPreferences silently fails and blocks UI; at global scale millions of devices make a 99.9% success rate still mean thousands of failures and P95… | ||
| Make Better Decisions: Experiment! | Kate Kelly | 20m |
Etsy runs platform experiments that prove or disprove precise hypotheses: infinite scroll reduces items viewed, purchases and favorites, while simple variants… | ||
| Multiplatform Library Development | Russell Wolf | 40m |
A practical postmortem on building an early Kotlin library: describes creating multiplatform settings (shared-preferences abstraction) with Android… | ||
| How to Do Great Work | John Li | 17m |
Tech lead role at Wayfair starts with a small Android team that has under a year of platform experience, so priority is defining concrete standards… | ||
| Workshop: Maximize Developer Productivity with Fast and Reliable Gradle and Maven Builds | Tony Robalik | 01h 39m |
Hands-on workshop shows how to use build scans and remote build cache to measure and fix Gradle/Maven bottlenecks: capture every local and CI build, run a… | ||
| Prioritizing Platform Development | Alex Brashear | 20m |
The New York Times creates an app platforms team that prioritizes developer experience and long-term stability, rewrites the iOS app in Swift over 1.5 years… | ||
| Tall Legacy App with 10 Pumps Kotlin | Nicole Borrelli | 16m |
Concrete recipes for Kotlin Java interop with examples and pitfalls using real bytecode and generated methods The talk shows how annotating top level files… | ||
| Bazel | Artem Zinnatullin | 42m |
Claims Bazel scales large Android and iOS mono-repos and often outperforms Gradle/xcodebuild by using reproducible Starlark config, parallel configuration, and… | ||
| Transforming a Java Desktop Application to Kotlin Multiplatform | Jossi Wolf | 27m |
Attempt to port a Java Swing cycle-editor fails to reuse UI: Swing components remain JVM-only so the UI must be rewritten per platform, but the heavy business… | ||
| Wire 3 : Tackling gRPC with Kotlin | Benoît Quenaudon, Egor Andreevici | 39m |
Wire 3 is a Kotlin rewrite that generates Kotlin code, adds a Gradle plugin, and ships coroutines-based gRPC APIs plus a multiplatform runtime; it targets… | ||
| Using ML to make your UI tests more robust | Godfrey Nolan | 31m |
Shows a practical pipeline that uses Test.ai on top of Appium with a TensorFlow object‑detection model trained from Kaggle icon sets to locate UI elements and… | ||
| (Android) Transformers - bytecode in disguise! | Doug Stevenson | 37m |
Explains how Firebase Performance finds every HTTP call by rewriting compiled classes at build time using the Android Transform API and ASM rather than runtime… | ||
| Android & Assistant: a match made in heaven | Eliza Camber | 27m |
Android reaches 2.5 billion monthly users and Google Assistant recently quadruples to over a billion devices, and app actions let an installed app surface via… | ||
| Flowing Things, not so strange in the MVI world | Garima Jain | 33m |
Shows a concrete migration path from an Rx MVI implementation to Kotlin Coroutines Flow, converting Retrofit Single/Observable calls to suspend functions for… | ||
| //TODO: Write A Better Comment | Adam McNeilly | 24m |
Article that told developers to stop writing comments is rejected as bad advice and replaced with a practical plan: classify comments as remove redundant… | ||
| Shielding Your Android App from Attackers | Peter Tefft | 33m |
Shows decompiling a mock “Money Bank” APK using Bytecode Viewer and dex2jar, then applies R8/ProGuard renaming (mapping file shown) and Preemptive’s DashO to… | ||
| Edge & Offline-First App Data Management in 5G devices | Tom Bates | 34m |
Claims a full embedded DB (Actian Zen) that runs as a C++ library on Android iOS Linux Windows and IoT boards, with AES-256 encryption that stays encrypted in… | ||
| Let's focus on IDE Indexing | Naveen Narayanan | 31m |
Uber Focus implements on‑demand lazy indexing for IntelliJ/Android Studio in a Buck monorepo, raising IDE heap to 4GB and setting caches.indexer.thread… | ||
| Android Studio Tips and Tricks Part 2 | Michael Bailey | 39m |
Concrete, actionable Android Studio tricks: map caps lock to escape on macOS to avoid missed Escape taps; use the resource manager instead of old thumbnails to… | ||
| Shark: Diving into the guts of LeakCanary's Hprof parser | Pierre-Yves Ricau | 43m |
LeakCanary’s HPROF parser is rewritten as Shark in Kotlin and claims 10× less memory and 6× faster parsing; it replaces Perfetto’s heavy in-memory indexes with… | ||
| Modularizing your Android UI with Style Guide-Driven Development | Rea Bhasin | 24m |
Grubhub builds a reusable Android style system: an Android pattern library (library + sample app) that houses versioned UI components used across four Android… | ||
| Native Concurrency and Coroutines | Ben Asher | 37m |
PlanGrid's Kotlin Multiplatform sync library runs Kotlin/Native coroutines across threads by embedding runBlocking inside a native worker pool (five workers in… | ||
| Road to modularization | Siggi Jonsson, Aaron He | 32m |
Tinder Android grows from a single module to 300 modules around 2 million lines of code, with a claimed clean build down to 6 minutes clean build without… | ||
| Best Practices for Mobile App Security Testing | Michael Krueger, Brian Reed | 33m |
Automated and manual testing finds concrete failures: about 85% vulnerable and roughly half leak private data; static scans miss many issues that dynamic… | ||
| Does your Android app expose you to excess risk? | Neal Michie | 30m |
A WhatsApp buffer‑overflow triggered by crafted call packets shows attackers find bugs by static analysis (decompilers, grep) then dynamic analysis (rooted… | ||
| ReduxKotlin.org: Redux for All Kotlin platforms | Patrick Jackson | 33m |
ReduxKotlin.org provides a pure Kotlin multi-platform Redux implementation (published to Maven Central) that targets JVM, native (iOS/macOS), JavaScript and… | ||
| Dagger Party Tricks | Zac Sweers | 15m |
Shows concrete Dagger techniques: replace eager Retrofit OkHttp injection with a Call.Factory lambda to defer OkHttp init via Call.Factory lambda, shaving… | ||
| Jetpacks for you and I | Marcos Placona | 36m |
A live demo shows an app that fetches 20 Pokémon via Retrofit and Glide, then eliminates repeated network calls by moving logic into ViewModel + LiveData so… | ||
| Keeping your Pixels perfect | John Rodriguez | 29m |
Claims that Paparazzi turns multi-minute Android UI iteration into seconds by running the IDE’s layout lib rendering pipeline on a pure JVM, using transformed… | ||
| Advanced & Practical MotionLayout | Jason Pearson | 39m |
Covers how MotionLayout actually solves common UI problems: shows reuse Constraints between Transitions to avoid duplication, uses drag space touch anchor to… | ||
| The Life-Changing Magic of Kotlin Multiplatform Serialization | Eugenio Marletti | 40m |
Covers the kotlinx.serialization library that splits serialization vs encoding/decoding so a compile‑time compiler plugin generates serializer bytecode and a… | ||
| nothing matches | ||