

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

Jan 2, 2017 • 30min
068: Talking Buck with Uber engineer Gautam Korlam
We kick off 2017 talking to Uber Engineer Gautam. In first part of this 2 part series, Gautam talks to us about the Uber Android app, the complexity in the architecture, the scaling challenges, the pain points Android developers faced working on such a massive app.
He then goes on to explain how his team (Android Developer Experience) at Uber have approached these challenges and come up with elegant solutions.
We then dive head deep into Buck - the build system for Android development, it's advantages and the benefits that the folks at Uber have observed having migrated.
Show Notes
Build systems
Buck overview (Facebook/Uber)
Bazel (Google)
Pants (Twitter)
Android test app comparing different build systems [github.com]
Misc
okBuck (adopting Buck easily) [github.com]
Buck - Exopackage
Watchman
Resources
What makes Buck so fast
Gautam's talk on okBuck at Droidcon NYC [youtube.com] (Slides)
Contact
@kageiit [twitter.com]
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Dec 19, 2016 • 51min
067: Cross platform development with Xamarin cofounder Joseph Hill
In this episode, Donn talks with Xamarin cofounder on how one can use Xamarin for Android development.
They start off chatting about using Xamarin just for business logic sharing. This Joseph tells us was the original intention for use. They also touch on Xamarin forms which allows you to additionally build UI elements cross platform.
Even if you don't use Xamarin or plan to use Xamarin right away, this was a fantastic insight into the platform, from the creators directly. They touch on advantages, how to really leverage the platform and potential downsides.
Show Notes
Xamarin
Developer guides (Joseph mentioned they're particularly proud of this one)
Xamarin University
Download Visual Studio
Xamarin Forms
Apps using Xamarin for Code sharing
Alaska Airlines
Outback steakhouse
Notable alternatives:
Cordova
React Native
Contact
@josephhill and jhill@microsoft
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Dec 12, 2016 • 43min
066: Let's talk Immutability, Value Types and AutoValue with Ryan Harter
In this episode, we talk to our good friend and immutability champ Ryan Harter. We start off talking about the benefits and disadvantages of immutability, then we dive into Value types and the subtle difference with Value types. Finally we close out by talking about AutoValue and how you can extend it using the super nifty auto-value extension system for functionality like Parcelability, Json parsing etc.
Show Notes
About Ryan
Pigment (coloring for adults)
Fragment (prismatic photography art) (His blog post on the same)
Fragmented: Google IO special (Ryan was one of our guests)
References
Martin Fowler's updated article on ValueObjects
Effective Java Fragments:
Ep 14: Consider providing static factory methods instead of constructors
Ep 31: Obey the general contract when overriding equals
Ep 34: Always Override hashcode when overriding equals
Methods Count (check number of methods for a library)
AutoValue
AutoValue
AutoValue Builders
AutoValue Factory (different from AutoValue Builders)
Difference between Builder and Factory patterns [stackoverflow.com]
AutoValue extensions
Ryan's blog post
AutoValue Parcel [github.com/rharter]
AutoValue Cursor [github.com/gabrielittner]
AutoValue Redacted [github.com/square]
AutoValue Moshi [github.com/rharter]
AutoValue Gson [github.com/rharter]
AutoValue Firebase [github.com/mattlogan]
Misc
Project Lombok
Google's Auto Libraries (code generating helpers)
Ryan's Blog
Ryan's Caster.io series [caster.io]
Chicago Roboto 2017
Contact
@rharter [twitter.com]
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Dec 5, 2016 • 46min
065: Developer Platform engineering with Ty Smith
In this episode we talk to Ty Smith about all things Developer Platform. Currently a tech lead at Uber, Ty has quite the illustrious career having worked on some of the biggest names you've heard like Uber, Twitter(Fabric), Evernote, Zagat etc.
Unlike regular client app development, Developer Platform spans a variety of interesting topics like building consumable SDKs, building libraries with good APIs, creating Android integrations and App to app communication via components like Content Providers, AIDL Integrations, Intent APIS and deep links.
We ask Ty how he got started in this field, how one should go about thinking about it and the interesting challenges that one would run across in this intriguing field.
Show Notes
Ty's all star Dallas crew
Chris Banes [@chrisbanes] previously on FriendCaster
Chris Arvin [@ChrisArvinSF] previously on BaconReader
Dan Lew [@danlew42] previously on Expedia
Matt Wear [parallelcross.com] prevoiusly on Evernote
Juan Gomez [@_juandg] on Netflix
Developer Platform
Tests? Ain't Nobody Got Time For That! by Ty Smith [youtube.com]
Content providers [developer.android.com]
AIDL (Andorid Interface Definition Language) [developer.android.com]
TransactionTooLargeException [developer.android.com]
Contact
@tsmith [twitter.com]
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Nov 21, 2016 • 24min
064: Garbage Collection (Android) vs Reference Counting (iOS)
In this mini-Fragment episode, Kaushik talks about the process of Garbage collection and how it compares to Reference counting (which is the equivalent process in iOS).
How does each work? What are the differences? Which is better 😁 ? Listen on for all the juicy details...
Show Notes
Garbage collection (Android)
Garbage collection [wikipedia.org]
How GC works in Dalvik [medium.com]
How GC works with circular references [stackoverflow.com]
Reference counting (iOS)
Reference counting [wikipedia.org]
An in-depth look at manual memory management in Objective C [tomdalling.com]
Memory management in Objective C [rypress.com]
Weak, strong, unowned, oh my! (references in Swift) [krakendev.io]
Contact
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Nov 14, 2016 • 23min
063: Effective Java for Android Developers – Item #13: Minimize the accessibility of classes and members
In this mini-Fragment episode, Donn talks about Item #13 of the Effective Java series - Minimize the accessibility of classes and members. You'll learn why it's important to limit the access on your public API, how it can help you with development and performance. You'll also learn how changing a public API can affect the consumers of your API, for good and bad.
Show Notes
Java Access Control
Effective Java Book
Sponsor
BuddyBuild
Contact
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]

Nov 7, 2016 • 17min
062: Effective Java for Android Developers – Item #12: Consider Implementing Comparable
In this mini-Fragment episode, Donn talks about Item #12 of the Effective Java series - Consider Implementing Comparable. You'll learn about how you can use the Comparable interface to give your code the extra sorting boost it needs. Work with Arrays.sort(), Collections utilities and even sorted data structures. Donn breaks down what it takes to implement the compareTo method of the Comparable interface.
Show Notes
Comparable Interface
Effective Java Book
Sponsor
BuddyBuild
Contact
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]

Oct 24, 2016 • 42min
061: The state of event bus(es) today
The age old question: should I be using an event bus today? What is an event bus? what are still some good use cases for an event bus? Can i replace an event bus with RxJava?
Donn and Kaushik have at it and try to answer this question that gets asked constantly in the AndroidDev circles. Listen on for our take.
Show Notes
What's an event bus
Donn's blog post on event aggregators (event buses) [donnfelker.com]
KG's blog post on implementing an event bus with Rx [blog.kaush.co]
Libraries
Otto - Square's Event Bus library [github.com]
EventBus - greenrobot [github.com]
Misc
Handling GCM messages in the foreground and background by Mark Hudnall [markhudnall.comm]
KISS [wikipedia.org]
Ep 53: Jake on RxJava 2 [fragmentedpodcast.com]
RxRelays [github.com/JakeWharton]
Diff change set for converting RxBus to an RxRelay [github.com/kaushikgopal]
Caster.io EventBus course - Annyce Davis [caster.io]
Sponsors
BuddyBuild
Contact
@fragmentedcast [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Oct 17, 2016 • 45min
060: Smoke and Mirror Android UI tricks with Israel
We talk with Android UI magician Israel. In this episode, Israel does what magicians are never supposed to do, reveal those exciting magic tricks. He talks about tricks you can use in your Android apps to create a super slick UI, citing examples from Google Photos, Twitter and other apps.
Dazzle your Android users with these UI tricks.
Show Notes
Israel's last appearance on Fragmented (Ep 26) [fragmentedpodcast.com]
Smoke and Mirros
Israel's sample app [github.com]
Slides (with animation demos) [photos.google.com]
Google Photos Recycler View pinch to expand/shrink [photos.google.com]
ClipChildren demo [photos.google.com]
Utils method - traverse hierarchy and clip [photos.google.com]
Tap image to show full screen [photos.google.com]
Misc
Nick Butcher's Plaid app [github.com]
Android-Job library by Evernote [github.com]
Contact
@fragmentedcast [twitter.com]
@rallat [twitter.com]
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe

Oct 10, 2016 • 52min
059: Interview with Chiu-Ki
We talk with the all-star multi-talented GDE Chiu-Ki Chan about testing. Specifically, we dive into leveraging Mockito for your testing needs. What is Mocking, what is Stubbing, what are the different test doubles, how does mockito help with this? Listen on to find about that and some more interesting stuff on testing!
Show Notes
Introducing Pixel [blog.google]
Static Gateway Pattern [codebetter.com]
About Chiu-Ki:
Android Dialogs | youtube [youtube.com]
360|AnDev co-organizer | conference [360andev.com]
Technically Speaking| newsletter [tinyletter.com]
fake SharedPreferences implementations from AOSP
FakeSharedPreferences | fake in-memory SharedPreferences implementation [github.com]
BridgeSharedPreferences | empty SharedPreferences that does nothing implementation [github.com]
Testing SharedPreferences [gumroad.com]
Different kinds of Test doubles
Know your test doubles [testing.googleblog.com]
[Test Doubles: Mocks, Stubs, and More](https://www.objc.io/issues/15-testing/mocking-stubbing/
http://www.javaworld.com/article/2074508/core-java/mocks-and-stubs---understanding-test-doubles-with-mockito.html) [objc.io]
Mocks aren't Stubs [martinfowler.com]
Mockito
Mockito library [github.com]
Stubbing consecutive calls [mockito.org]
Argument Captor [mockito.org]
PowerMock [github.com]
Resources
friendspell | Chiu-Ki’s example project with a variety of testing strategies [github.com]
Mock Application in Espresso for Dependency Injection [sqisland.com]
Chiu-Ki's caster.io courses on Testing | MockWebServer
Contact
@fragmentedcast [twitter.com]
@chiuki and +ChiuKiChan
@donnfelker and +DonnFelker
@kaushikgopal and +KaushikGopalIsMe