

Fragmented - Android Developer Podcast
Donn Felker, Kaushik Gopal
The Fragmented Podcast is the leading Android developer podcast started by Kaushik Gopal & Donn Felker. Our goal is to help you become a better Android Developer through conversation & to capture the zeitgeist of Android development. We chat about topics such as Testing, Dependency Injection, Patterns and Practices, useful libraries, and much more. We will also be interviewing some of the top developers out there. Subscribe now and join us on the journey of becoming a better Android Developer.
Episodes
Mentioned books

Oct 2, 2017 • 57min
098: Droidcon NYC - Kotlin, React Native, Android Security, Design Patterns and Doppl
In this episode, Donn is at Droidcon NYC 2017. He sits down to chat with Dan Kim about Kotlin, Gabriel Peal about React Native, Scott Alexander-Bown about Android Security, Jose Alcérreca about the Android Architecture Blueprints and Kevin Galligan about the history of Droidcon NYC and his new library - Doppl.
2:07 - Dan Kim (Kotlin)
10:07 - Gabriel Peal (React Native)
23:43 - Scott Alexander-Bown (Android Security)
33:32 - Jose Alcérreca (Android Architecture Blueprints)
43:09 - Kevin Galligan (Droidcon & Doppl)
Show Links
082: Airbnb’s Gabriel tells us how to animate with Lottie – Fragmented
085: Casual Kotlin conversation with Dan Kim – Fragmented
GitHub - googlesamples/android-architecture: A collection of samples to discuss and showcase different architectural tools and patterns for Android apps.
doppl by touchlab — touchlab
Sponsors
BuddyBuild - fragmentedpodcast.com/buddybuild
Contact
Dan Kim (@dankim) | Twitter
Gabriel Peal (@gpeal8) | Twitter
Scott Alexander-Bown (@scottyab) | Twitter
Jose Alcérreca (@ppvi) | Twitter
Kevin Galligan (@kpgalligan) | Twitter
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Sep 18, 2017 • 36min
097 : Android Architecture Paging Library with Florina Muntenescu
In this episode Florina returns to talk to us about Google's recently announced paging library!
The paging library is a powerful take on implementing paging functionality in general, not necessarily linked to a paritcular technology or library. Florina breaks down the different components and explains what specific function each of them play.
We start off with DataSources, talk about when one would want to use "Tiled" or "Keyed" data sources, and then talk about making them work with RecyclerViews (which is really what 99% of us eventually want). Florina also explains the role of PagedLists, PagedListAdapters and so much more.
If you ever wanted to get an overarching veiw of Google's first take on implementing the paging library, this is a great starting point. Listen on so you can understand, try it out and then give feedback to Google, to participate in the making of this new library.
Show Notes
Google Developer Days - Florina's segment on paging
Paging library - developer docs
DataSources
PagedList
PagedListAdapter
LivePagedListProvider
Sponsors
Kobiton - 15-day Free trial with no credit card required 🙌
Contact
@fmuntenescu [twitter.com]
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Sep 11, 2017 • 57min
096 : Romain Guy on Displays, CPU's, GPU's and Color
In this episode, Romain Guy from Google gives us the lowdown on a bunch of Hardware related stuff.
He starts off by explaining how the refresh rates on screens matter, what it would mean to have something like a 120Hz display for Android screens, how things like V-Sync and double buffering work, using different screen technologies, how much work is done by the CPU and GPU and so much more.
This was one of those episodes where we tried so hard to hold back for fear of recording for another 2 more hours. Romain is clearly one of the most knowledgable and interesting engineers to talk to today in the hardware land of Android. What a blast!
Show Notes
Photography
Romain on Instagram
Romain on Flicker
Leica M10
Canon EOS 5DS R
Screens, refreshing/rednering Color
Fragmented 91 - Reddit AMA
Romain on Reddit being spoiled by 120Hz
What is V-Sync (pcworld.com) and Screen tearing (Wikipedia)
Three-two pull down technique (filmaking) (wikipedia)
OLED vs AMOLED (quora.com)
OLED vs LCD (quora.com)
Romain Guy's 2017 IO Talk on Colors fundamentals YOU OWE IT TO YOURSELF TO WATCH THIS!!
Sponsors
Kobiton - 15-day Free trial with no credit card required 🙌
Contact
@romainguy [twitter.com]
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Sep 5, 2017 • 56min
095 : Room Databases with Florina Muntenescu
In this episode, we talk to Florina from Google about the recently released Database library Room. Room was introduced as part of the Android Architecture components and has been picking up a lot of steam in the community.
Room focuses on being a beautiful api layer to Sqlite. Florina explains to us how we can use Room to create a database, creating entities and how them map to tables, using DAOs to access data and even observe them
Listen on for the details!
Show Notes
Official docs
Android Architecture Components
Room migration docs
runInTransaction api (which Florina recommended if you're executing more than one SQL statement and don't want multiple event fired)
Google Samples - Android Architecutre Components
Florina's posts
Florina's Medium blog posts
Room & RxJava
7 steps to Room
Understanding migrations with Room
Testing Room migrations
360|AnDev talks
Room - Behind the scenes (Yigit Boyar)
Data Persistence in Android: Room for Improvement
Micellaneous questions about Room (that we chopped off for lack of time)
Q: Does Room use reflection?
A: There's only 1 reflection call (at the time of finding the database implementation, when you call Room.builder). Most of the other stuff is generated code (with compile time verification!).
Q: Does Room provide compile-time SQL checks
A: Yes, Room was designed to provide compile-time checks.
Q: Does Room handle SQL injection attacks (security)
Yes ... for all practical purposes. See this post for times when it doesn't.
Q: Do we have tools to access the sqlite database file directly?
Nope, at the moment, adb is your friend. Use that to download the file manually from your device.
Sponsors
Rollbar - special offer: Bootstrap plan free for 90 days
Contact
@fmuntenescu [twitter.com]
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Aug 28, 2017 • 16min
094: Design Patternitis - 5 Tips to Help You
In this episode of Fragmented, Donn talks about a common problem almost all software engineers face in their career - Design Patternitis.
So, you've read the books on design patterns and now you're applying them everywhere. Just because some code can be put into a pattern doesn't mean you should. Or should you? How can you apply them when needed? Donn shares 5 tips with you that you can use to help combat Design Patternitis.
Show Notes
Head First Design Patterns
Design Patterns - GoF Book
Patterns of Enterprise Application Archicture - Fowloer
Code Review StackExchange
Code Mentor
Sponsors
This episode is made possible by Kobiton - Fragmented.
They're giving listeners a 15-day FREE trial with no credit card required! 🙌
Give them a try at Kobiton.com/fragmented and let them know we sent you.
Contact
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Aug 14, 2017 • 52min
093: RxJava intervention with Dan Lew
In this episode of Fragmented, our friend and RxJava paragon of the Android - Dan Lew, returns for a record 3 and 1/2 time.
We've been using RxJava over the years now and have even talked to Dan about it in previous episodes.
How has our understanding of Rx use in Android changed over the years? We know some of the super standard usecases for RxJava in AndroidDev. But the important question to be asking is: when are the times we "shouldn't" be using RxJava? Are we over-complicating our code by shoe-horning it in different places. Concepts like functional programming and reactive state management have picked up steam again, how has this influenced our RxJava use?
Show Notes
Fragmented Ep.3 Dan Lew - The RxJava show (Part 1)
Fragmented Ep.4 Dan Lew - The RxJava show (Part 2)
Futures in Java (7)
SqlBrite - lighteweight Rx wrapper for SQLiteOpenHelper
Error handling with RxJava - Dan Lew
OrmLite - Android
Why not RxLifecycle
Tweet quote - boilerplate is ok
Introduction to Functional Reactive Programming
Sponsors
This episode is made possible by Kobiton - Fragmented.
They're giving listeners a 15 day FREE trial with no credit card required! 🙌
Give them a try at Kobiton.com/fragmented and let them know we sent you.
Contact
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Aug 7, 2017 • 35min
092: Learning Kotlin - dealing with static-ness and (companion) objects costs
In this second episode of our learning Kotlin series, we talk about Kotlin’s support for static members or … lack thereof. Kotlin as a language was designed so that there’s no such thing as a “static member” in a class but there are times when having static members can be useful.
So what do we do in those cases? do we just avoid static members? are there better alternatives? what are the costs with some of these approaches?
Listen on to find out more!
Show Notes
Static alternatives
Package level functions (Kotlin docs)
Static constants in Kotlin
Object declarations
Objects vs companion objects
Cost of approaches
Where do i put my constants in Kotlin
Exploring Kotlin's hidden costs - Part 1
Kotlin discussion - best practices for top level declarations
Look at the fragmentedpodcast.com for some code snippets
Misc:
Ep.89 - Learning Kotlin: Properties a first class language feature
Kotlin in Action – Manning Publications
Sponsors
Rollbar - special offer: Bootstrap plan free for 90 days
Contact
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Jul 24, 2017 • 55min
091 : Decompress - Reddit AMA highlights, package by feature not layer and testing!
In this decompress episode, DF and KG kick it off with a brief discussion of the highlights from the recent reddit AMA that the Android Engineering folk conducted. What were the interesting things they learnt or were surprised by etc.? They then go on to briefly discuss two topics they've always chatted about (off-air) packaging by feature (not layer) and most recent thoughts on testing. Listen on to find out more:
Show Notes
360 | AnDev
360|AnDev
045: Bluetooth (LE) with Dave (devunwired) Smith
059: Chiu-Ki Chan explains Mocking and Stubbing with Mockito
AMA Reddit
AMA - complete reddit thread
Alarm Manager or JobScheduler thread - reddit thread
Android Priority Job Queue - Yigit
Android Job (Evernote)
JobScheduler - Android
Fragment backstack manager thread - reddit thread
DF Tweet thread on using Fragments
Soft keyboard API shortcomings - reddit thread
SO question 1
SO question 2
SO question 3
SO question 4
Night light on Nexus 6P - reddit thread
Flux software
Sharp device: 120hz refresh rate- reddit thread
iPad demo 1
iPad demo 2
Sharp Aquos 120Hz Android phone
Package by feature not layer
Alt F1 keyboard shortcut - Select in... Project View
068: Talking Buck with Uber engineer Gautam Korlam
090: Make your apps instant with Zarah Dominguez
Instrumentation Testing Robots - Jake Wharton talk
okHttp Mock WebServer
Wiremock
Sponsors
Kobiton - start your 15 day free trial
Contact
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Jul 17, 2017 • 1h 1min
090: Make your apps instant with Zarah Dominguez
At I/O '16 Google announced the super cool new feature Instant Apps. At IO'17 we started to see real world examples and third parties pull off this feature. In this episode, we talk to GDE Zarah Dominguez who's company "Domain" was one of the partners for this program.
What is the Instant Apps feature? What are some usecases where this comes in handy? How does it actually work internally? What does it take for a developer to implement this feature in their own app? Listen on to find out!
Show Notes
Instant apps - official page
Domain (Zarah's company)
Making the Domain Android app "Instant"
Android Instant Apps, step-by-step: how Vimeo went about it
IO'17 Fireside chat with 3rd party partner who implemented Instant Apps
Google samples repository
Sponsors
Rollbar - special offer: Bootstrap plan free for 90 days
Contact
@zarahjutz [twitter.com]
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Jul 10, 2017 • 23min
089: Learning Kotlin - Properties a first class language feature
In this mini Fragment, KG talks about his journey learning Kotlin as a newb. Given that Kotlin is most likely going to be the de-facto language for most developers, it makes sense to deepen our understanding of the language (as we have strived with Java over the years).
"Properties" in Kotlin are a first class language feature. But what does that actually mean? What are the nifty features we get with properties? How are these resolved from a Java class when there's potential a name clash? What are some other gotchas and learnings from using properties? Listen on to find out:
Direct download
Shownotes:
Kotlin docs - Properties and Fields
Kotlin in Action - Manning Publications
java.util.Calendar
Mutable vals in Kotlin - Dan Lew
Contact
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe