

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 8, 2015 • 12min
018: Effective Java for Android developers : Item 3
In this mini Fragment, we introduce Joshua's third Item: Enforce the Singleton property with a private constructor or an enum type.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Show Notes
Effective Java (2nd Edition) - Joshua Bloch
Enforce the Singleton property with a private constructor or an enum type
Approaches
Create a public static final INSTANCE variable and privatize constructor
Same as 1 but privatize variable and expose access with provide factory method getInstance
Single element Enums
Considerations
First two approaches are open to Serialization attacks (deserializing creates new instance)
To protect from those declare the fields transient + provide readResolve method
Enums are concise, provide free serialization and ironclad Singleton guarantees and are functionally equivalent to first approach
Supplemental reading (for the diligent ones that follow shownotes)
Dianne Hackborn regretting exposing the base Application class
DH again saying Application is a Singleton with crappier semantics
Elvis sightings
Contact us:
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]

Sep 21, 2015 • 1h 1min
017: Getting Close with Android Nearby
In this power packed episode, Donn returns... If that wasn't amazing enough, Andrew and Akshay from Google join us to talk about Nearby.
Show Notes
Follow up
Fragmented is on SoundCloud [soundcloud.com]
ViewPropertyAnimator has better performance [twitter.com]
Droid Inspector [sriramramani.com]
Jake Wharton's Scalpel [github.com]
Nearby
100 days of Google Dev, Episode 47/100 - Andrew on Nearby [plus.google.com]
Chromecast Guest mode when Nearby [support.google.com]
Examples/Documentation
google sample for Nearby [github.com]
Nearby official docs [developers.google.com]
Awesome picks for the week:
Andrew:
svg-android [github] and its various forks
inkscape tutorials by Derek Banas [youtube.com]
Akshay
Xiaomi mi band [engadget.com]
DF:
Karma Wifi (donnfelker.com)
Working Remote (modess.io)
KG:
Google Tone - Chrome extension (chrome.google.com)
Contact
Fragmented
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]
@andrewbunner [twitter.com]
Akshay's email
Soundcloud
shownotes: http://fragmentedpodcast.com/episodes/17
Contact:
Fragmented: https://twitter.com/fragmentedcast
Donn Felker : https://twitter.com/donnfelker
Kaushik Gopal : https://twitter.com/kaushikgopal
Andrew : https://twitter.com/andrewbunner
Akshay: akshayk@google.com

Sep 1, 2015 • 13min
016: Effective Java for Android developers : Item 2
In our third Fragment installment, we introduce Josh's second Item: Consider a builder when faced with many constructor parameters.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
[audio src="http://traffic.libsyn.com/fragmented/ep_14_fragmented.mp3" preload="none" autoplay="false"]
[Download][1]
Show Notes
Effective Java (2nd Edition) - Joshua Bloch
Consider a builder when faced with many constructor parameters
Patterns available for constructing object with parameters:
Telescoping Constructor Pattern - Provideconstructor with only required parameters, another with a single optional param, a third with 2 optional params... and so on.
Advantage: Works well for small number of parameters
Disadvantage: Does NOT scale well
JavaBeans Pattern - Callparameterless constructor to create the object; then call setter methods to set required parameter and each optional param of interest.
Advantage: Scales well, easy (but wordy) to read resulting code
Disadvantage: Allows inconsistency (if all required params not called); impossible to make classes immutable if using this pattern.
Builder pattern - winner!
Advantage: Simulates named optional parameters; allows immutable objects to be constructed; flexible
Disadvantage: more ceremony to actually construct the Builder Class and finally use.
Example usage from Android source:
AlertDialog Builder [androidxref.com]
Tip:
Use IntelliJ to generate your Builders easily
Contact us:
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]

Aug 21, 2015 • 1h 5min
015: Amanimations - Animations with Amanda
In this episode we talk to Amanda about how she got started as an Android developer, working at Venmo, her path to mastering Java and Android, dabbling with the dark side and Animations in Android!
Show Notes
Learning Java and Android
Java for Dummies [amazon.com]
Effective Java (2nd Edition) - Joshua Bloch [amazon.com]
Android programming: The Big Nerd Ranch Guide [bignerdranch.com]
Computer Science
CS50 by Harvard University: David Malan [youtube.com]
CS61B by UCBerkely: Jonathan Shewchuk [youtube.com]
MIT 6.00 by MIT Opencourseware [youtube.com]
Venmo
Venmo: The Musical 2015 (lip dub)
Hack Week at Venmo [venmo.com]
Swift/iOS and other languages
Kotlin [kotlinlang.org]
Animations
Snowdream github repo [github.com]
DevBytes youtube playlist
Chet Haase on Animations in Honeycomb [blogspot.com]
Droid Inspector [sriramramani.com]
Android ObservableScrollView [github.com]
Awesome picks for the week:
Amanda
On being a senior engineer [kitchensoap.com]
KG:
Guillotine animation
how we developed the guillotine menu animation for Android [yalantis.com]
how we developed the guillotine menu animation for iOS [yalantis.com]
Timely like Animations
Visualizing the Timely number tweening animation [youtube.com]
Implementing Timely's tweening animation [sriramramani.wordpress.com]
Contact
Amanda
@mandybess [twitter.com]
Fragmented
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]

Aug 10, 2015 • 17min
014: Effective Java for Android developers : Item 1
We've mentioned the book "Effective Java" by Joshua Bloch quite a few times on previous episodes. At this point, everyone knows they should have read this book (quadruple times). But it's a dense read and everyone could use a reading buddy. Also, what does Effective Java look like through the eyes of an Android developer?
In this second installment of our Fragment (a.k.a mini-episode), we thought we'll do our listeners a favor and help with that reading. We introduce the very first of these venerable "Items": Consider providing static factory methods instead of constructors.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Show Notes:
Effective Java (2nd Edition) - Joshua Bloch
Consider providing static factory methods instead of constructors
static factory method makeText for Toast class [androidxref.com]
ObjectAnimator [androidxref.com]:
.ofInt [androidxref.com]
.ofArgb [androidxref.com]
.ofFloat [androidxref.com]
Advantages:
You can control the name and thus give it much more meaningful names
You are not required to create a "new" object each time they are invoked
You can even return an object that's a subtype of the return type (unlike constructors which only return class type)
e.g. Java Collections framework [grepcode.com]
Disadvantages:
Classes without public or protected constructors cannot be subclassed
Static factory methods are not readily distinguishable from other static methods
Takeaways
"Consider" using static factory methods (not always)
Use newInstance when creating Fragments [androiddesignpatterns.com]
Use newIntent static factory method for creating intents inside the target activity.
Contact us:
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]

Aug 3, 2015 • 1h 2min
013: Corey Latislaw on TDD and Testing
In this episode we revisit the topic of Testing, looking at it from a TDD perspective. Globetrotter, Kata Queen, TDD practitioner and overall boss of Android development - Corey Latislaw, joins us in this episode with thoughts, tips and tricks on pulling off TDD. She also shares some of her wicked sketchnoting tips and made a very special Sketchnote just for this episode! Have a look at the sketchnote here.
Show Notes
GDG [developers.google.com]
GDE [developers.google.com]
GDE Android - Ms.Latislaw [developers.google.com]
GDE Android - Mr.Felker [developers.google.com]
Sketchnoting
The Sketchnote Handbook - Mike Rohde [amazon.com]
Sketchnoting for Techies [coreylatislaw.com]
Corey's Google I/O Sketchnotes [coreylatislaw.com]
Corey's live sketchnoting (with videos) [coreylatislaw.com]
Kids on Computers [kidsoncomputers.org]
Corey's books
Android Activity Book [gumroad.com] (coupon “fragmented” for $5 off)
Android Theory Book [gumroad.com] (coupon “fragmented” for $5 off)
Running Code Coverage in Android Studio [stackoverflow.com]
Katas
Video workshop [gum.co] (coupon “fragmented” for $5 off)
Simple Android app [coreylatistlaw.com]
Robolectric Integration [coreylatistlaw.com]
Awesome picks for the week:
DF:
Stop Using General CTA’s Text - be specific
Founder’s Journey Podcast
Baremetrics - Episode - Build vs. Buy: How to blow $100,000 saving money [soundcloud.com]
KG:
ANTI PATTERNS every programmer should be aware of [sahandsaba.com]
Contact
Corey
@corey_latislaw [twitter.com]
coreylatislaw.com
Fragmented
@fragmentedcast [twitter.com]
@donnfelker [twitter.com]
@kaushikgopal [twitter.com]

Jul 21, 2015 • 21min
012: Continous Integration and Collective Code Ownership
In this episode we're trying something new. Everyone has requested more episodes of the podcast. In short, everyone wants a weekly show. So this week, we're introducing what we call a mini-episode ... or as we like to call them a "Fragment". Fragment episodes will be shorter in length but still packed with goodness. They will range from ~7-25 minutes in length and will showcase either Kaushik, myself (Donn) or both of us.
In the first "Fragment" installment we're going to talk about Continuous Integration (CI) and Collective Code Ownership (CCO). Donn talks about what CI is, why its important and how it benefits you and your team. He then dives right into CCO and how it can be facilitated through testing.
We hope you enjoy these new mini-episodes ... aptly named ... Fragments. :)
Show Notes
Thoughtworks - Continuous Integration [thoughtworks.com]
Working Effectively with Legacy Code - Michael Feathers [amazon.com]
Continuous Integration solutions:
Jenkins CI [jenkins-ci.org]
Cloud solution- Cloudbees [cloudbees.com]
TeamCity [jetbrains.com]
CircleCI [circleci.com]
Setting up CI for Android [caster.io]
Ship.IO [ship.io]
TravisCI
(open source) Travis CI org [travis-ci.org]
(commercial) Travis CI com [travis-ci.com]
Continuous Delivery:
Deploybot (previously) Dploy.io [deploybot.com]
Codeship [codeship.com]
Contact
Donn Felker
@donnfelker [twitter.com]
donnfelker.com
Kaushik Gopal
@kaushikgopal [twitter.com]
kaush.co

Jul 14, 2015 • 1h 7min
011: The Fowler Road to a Clean Architecture
In this episode - Donn and Kaushik dive into a topic that is very near and dear their hearts - application architecture. They talk about how Martin Fowler has inspired a lot of their architectural decisions and how they're moving towards defining what a clean architecture means to them and other developers. They talk about Model View Presenter, Model View Controller and many other topics that surround these two common patterns. Take a listen and go for the ride on architecture train ... all aboard!
Show Notes
Chit-chat:
Exponential backoff with RxJava [github.com]
RxJs - ReactiveExtensions for Javascript [github.com]
Follow up:
Moving GC only applicable when app goes into background:
A closer look at ART in Android L (see last paragraph) [anandtech.com]
Google I/O 2014: The ART Runtime [youtube.com]
The road to a clean architecture:
Bad practices:
Cargo cult programming [wikipedia.org]
God objects [wikipedia.org]
Martin Fowler’s articles on Patterns of Enterprise Application Architecture:
Supervising Controller [martinfowler.com]
Presentation Model [martinfowler.com]
Passive View [martinfowler.com]
Martin Fowler’s Book P of EAA [amazon.com]
Decoupling the presenter [mattlogan.me]
Other approaches to clean architectures:
MVVM on Android - what you need to know [willowtreeapps.com]
Model View ViewModel for iOS [teehanlax.com]
VIPER architecture on iOS [objc.io]
VIPER inspired Clean Android architecture [speakerdeck]
Architecting Android the clean way [fernandocejas.com]
MVP Android [antonioleiva.com]
Awesome picks:
Donn:
Learning RxJava for Android by example - Kaushik’s talk [youtube.com]
Loading data from multiple source [danlew.net]
StorIO [engineering.pushtoreresh.com]
Mocks aren’t Stubs [martinfowler.com]
Kaushik:
Rebound animation library [facebook.github.io]
Will Bailey (creator of Rebound):
OrigamiActivity.java [gist.github.com]
Under the hood [code.facebook.com]
Example 1 [youtube.com]
Example 2 [youtube.com]
Example 3 [youtube.com]
Example 4 [youtube.com]
Springy animations with Rebound [parallelcross.com]
Contact
Donn Felker
@donnfelker [twitter.com]
donnfelker.com
Kaushik Gopal
@kaushikgopal [twitter.com]
kaush.co

Jun 23, 2015 • 1h 37min
010: Boning Up on Core Java with Michael Bailey
In this episode Donn and Kaushik talk to the very talented Michael Bailey about core Java principles and practices. Michael has quite the deep and passionate understanding of Java and we thought it would only be perfect to share this episode with a very passionate Java crowd - Android developers. We talk about IntelliJ, Testing, Inheritance, Static Code analysis, Garbage Collection, Data Structures and much more in this episode. If you're looking to learn a thing or two about Java, then this is your episode. We hope you enjoy.
Show Notes
elapsedRealtimeNanos for getting wall time [developer.android.com]
Android Pay announcement [officialandroid.blogpost.co.uk]
Intellij information:
Curated list of IDE plugings by Jetbrains [blog.jetbrains.com]
Key promoter plugin [plugins.jetbrains.com]
Productivity Guide [jetbrains.com/help]
Extending + Shrinking selection [jetbrains.com/help]
Testing talk:
Google acquires Appurify [techcrunch.com]
Cloud Test Lab (erstwhile Appurify) [developers.google.com/cloud-test-lab]
Great books on improving your Java skills:
Gang of Four [amazon.com]
Effective Java (2nd Edition)- Joshua Bloch [amazon.com]
Effective code review technique (WTFs a minute) [cryhavok.org]
On inheritance:
Item 15 : Design and document for inheritance or else prohibit it
Item 16 : Favor composition over inheritance
Chris Banes on using AppCompatDelegate [twitter.com]
Static code analyzers:
Checkstyle, PMD, Findbugs [github.com]
Android Lint [developer.android.com]
Findbugs [sourceforge.net]
PMD [sourceforge.net]
blog post setup static code analysis tools [vincentbrison.com]
Infer by Facebook [code.facebook.com]
John Carmack In-Depth: static code analysis [gamasutra.com]
Garbage collection:
Google IO 2011 talk [youtube.com]
Medium article - Garbage Collection[medium.com]
LeakCanary by Square [github.com]
What is meant by immutable [stackoverflow.com]
Data structures for Android
ArrayMap (Android alt. to HashMap) [developer.android.com]
SimpleArrayMap [developer.android.com]
SparseArray (Android alt. to mapping int -> Objects) [developer.android.com]
Benchmarking DS:
Caliper [github.com]
Vogar examples [code.google.com]
ADB Ep. 27 (forEach quirks) ( minute 9:07) [androidbackstage.blogpost.com]
Coding for performance blog post [devahead.com]
See Item 21 in Effective Java (Ed. 1) about typesafe enum patterns (this was before enums existed)
Null safety in Kotlin [kotlinlang.org]
Mondegreen [wikipedia.org]
Mad Gab
Awesome picks:
Michael:
Learn how to file high quality bug report for Android tools [tools.android.com]
List of Android conferences [androidstudygroup.github.io]
GTAC 2015 conference [googletesting.blogpost.com]
Developing for Android - blog post series by Google developers [medium.com]
Kaushik:
library: Android-ReactiveLocation [github.com]
Google App for Donation OneToday [onetoday.google.com]
An article discussing the case between Oracle vs Google [techdirt.com]
Donn:
Vote for my android talks at DroidCon NYC! :)
Anker Charging Station [amazon.com]
22$ Standing Desk [iamnotaprogrammer.com]
Contact
Michael Bailey
@yogurtearl [twitter.com]
Donn Felker
@donnfelker [twitter.com]
donnfelker.com
Kaushik Gopal
@kaushikgopal [twitter.com]
kaush.co

Jun 3, 2015 • 1h 30min
009: Google IO Special
This is the special Google I/O 2015 episode. In this episode - Kaushik makes the trek to Google I/O and chats with various Android developers about their favorite part of Google IO. I was not able to make it but Kaushik was able to interview of top developers in the industry and I’ll tell you what - this is a great episode - I really wish I was there to join him. I know he had a great time chatting and interacting with everyone. We hope you enjoy the show as much as we enjoyed creating it.
Show Notes
Dan Lew (Trello)
@danlew42 - twitter.com
Dan's Blog - danlew.net
Ty Smith (Twitter)
@tsmith - twitter
Eric Cochran (IFTTT)
NightlyNexus - github
+EricCochranNightlyNexus - plus.google.com
Cyril Mottier (Capitaine Train)
@cyrilmottier - twitter
About page - cyrilmottier.com
Shifty Jelly Team
Pocket Casts - pocketcasts.com
Philip Simpson
@geekygecko - twitter.com
Russell Ivanovic
@rustyshelf - twitter.com
Amanda Hill (Venmo)
@mandybess - twitter.com
Dave Smith (New Circle)
@devunwired - twitter.com
+DaveSmithDev - plus.google.com
Corey Latislaw (CapitalOne)
@corey_latislaw - twitter.com
coreylatislaw.com
Chet Haase
@chethaase - twitter.com
Android Backstaage - blogspot.com
Chiu-ki Chan
@chiuki - twitter.com
Elliott Chenger (Under Armour)
@echenger - twitter.com
blog - omitneedlesscode.com
Maria Neumayer (Citymapper)
@marianeum - twitter.com
Danny Roa (Foursquare)
@dannyroa - twitter.com
Michael Bailey
@yogurtearl - twitter.com
Donn Felker
@donnfelker - twitter.com
donnfelker.com
Kaushik Gopal
@kaushikgopal - twitter.com
kaush.co