The Fragmented Podcast is a podcast for Android Developers hosted by Donn Felker and Kaushik Gopal. Our goal is to help you become a better Android Developer. We chat about topics such as Testing, Dependency Injection, Android Patterns and Practices, useful libraries and much more. We will also be interviewing some of the top Android Developers out there. Subscribe now and join us on the journey of being an Android Developer.
We interrupt our regular programming for this extremely important message.We stand with our black sisters and brothers against the evil that is racism. The recent events of police brutality and oppression against black people have been truly horrifying. Please take the time to listen to the audio snippet on the #BlackLivesMatter movement from today's episode. It is a TedX talk by the far more eloquent Kennedy Cook who's voice and words are more powerful than ours.We've never been very vocal about political issues at Fragmented. But that doesn't mean we don't care about these issues. On the contrary! We do our best to have our actions speak louder than our words and let others with first hand experience speak out. Then importantly we aim to listen.But these aren't regular times are they? The horrifying brutality we're seeing against people of color is nauseating. The Covid-19 outbreak has made action particularly difficult so for today we will start with these words.More Resources on how to help:BET's consolidated listblacklivesmatters.carrd.cochange.org [racial justice]
OK, If you really want to know how git works, this is the episode for you.
KG talks with his longtime colleague and mentor Gordon McCreight. Gordon is a
wiz in general but his knowledge of git goes deep. So in this episode, KG goes
solo and really dives in-depth about how git works.
Buckle up and listen on; you'll come out on the outer side with a much
sounder understanding of git.
In this episode, we chat with friend of the show Leland Richardson. Leland is a
main contributor to Jetpack Compose. But in this episode, we pepper him with
questions on how he came to the position he's in viz. a reputed Software
Engineer contributing to probably the most cutting edge library in development
This was a treat and inspiring episode! Listen on:
Have you ever gone on on-call rotations for your company? What is on-call? How
to operate a successful on-call strategy? What does on-call for mobile mean? What are some tools and
resources to help with on-call rotations?
In this episode Donn and Kaushik dive into these topics.
In this episode, Donn and KG talk about the post Tim Bray recently wrote - Why Google did Android. They then touch on Chrome becoming a monopoly and tips on what folks can do to be a little more privacy conscious on the web.
We've all heard of the [Y2K problem], but there's also a similar coming up this 2038 for us programmers. In this episode we dive into the 2038 problem (... after of course talking about our opinions on new year resolutions).
Get 1% better every day folks... Listen here:
In this episode KG and Donn talk about KG's recent jaunt with Docker. In the attempt to setup continuous deployment for his blog, KG explains his simple requirement and how it lands up requiring some basic Docker. Donn then closes it out with some interesting in-depth knowledge on how to use Docker
It finally happens! KG and Donn talk about Coroutines with two experts at Google Manuel & Sean. We've waited quite sometime on Fragmented to discuss this topic. We wanted to make sure Coroutines was mature enough to be compared with the contenders. Listen to find out more!
In this episode, we touch on a note so widely discussed topic: should Android application today use a BaseActivity? Doesn't that wreak of inheritance over composition? What would uncle Joshua say about this ineffective approach? What are alternative options? do we have any?
In this episode Donn talks about his strategy for dealing with unknowns in programming, namely around testing and how to figure out how to write tests for new code that might be difficult, unfamiliar or even legacy code.
In today's episode, Kaush asks the question: in this brave new world where everyone is adopting more functional programming, do we just stop doing database operations? Listen to this episode to find out.
As Android developers we know Java and now Kotlin. But to become even more seasoned developers, learning newer languages can be a level booster.
In this episode KG and Donn discuss the merits of learning new languages, what new languages they’ve picked up and how they feel its important for them and their careers as developers. .
One question that Kaushik and I get all the time is this ...
I'm starting to learn how to build Android apps, which language should I learn? Kotlin or Java?
In this episode Donn answers this question and gives valid points on why both languages are valid options and why you might want to consider one over the other.
Marcel Schnelle joins Donn in this episode to talk about how to get your application under test and some steps to go from scared to confident in your testing process. The second half of the show they dive in deep to JUnit 5 and its new features.
JUnit 5 is backwards compatible with JUnit 4 and offers a slew of new features and extensibility points which make the framework much more appealing going forward. We're convinced you'll enjoy this episode and leave wanting to get your app under test - even more than it already is.
Donn sits down with Buffer Android Lead, Joe Birch. Joe is a GDE for Android, Google Actions, Flutter and Google Pay. In this episode Donn and Joe talk about Clean Architecture, what it is, and why you might want to use it.
They break down the concept of what Clean Architecture is in a manner that is easy for even a beginner to understand.
In this episode, Donn talks about Kotlin Lambda Expressions. He explains the syntax and how to build a couple of simple lambda expressions with and without type inference and declaration. We wrap up with a small example of passing a small lambda with multiple values to a function. See the show notes below for more info.
In this episode, you'll learn all about Kotlin Sealed classes. Donn walks you through what they are, how to create them, how to use data classes, objects and regular classes to create a restricted type hierarchy.
In this episode, Donn talks to Matt Runo about the Flank project. Using Flank you can run your Espresso test suite in parallel on Firebase Test Lab (FTL). This allows you to lower your feedback loop time and increase developer productivity and throughput.
In this show, Donn and Kaushik talk to Don Turner about how to build high-performance audio apps on Android.
We dive deep into history of audio on Android, some of the problems that the platform faced. Then look into the tools that we now have to solve those problems so that developers like you can build killer audio apps.
The Android community has come to use Rx pretty heavily but surprisingly there hasn't been any one convention that's won, when it comes to how we name our functions that return Observables. getUser(), user(), userUpdates() ? In this mini-episode dutifully does the yak-shaving for you and discusses what some options are and what the community has been gravitating towards.
Listen to all star Indie developer and friend of the show Chris Lacy. Chris Lacy created the beloved Action Launcher - arguably one of the best Launcher apps on Android. In this epi isode, he talks to us about what it's like being an indie developer, starting on Action Launcher and of course his newest creation - ActionDash.
In this episode, we continue our discussion from episode 148 on evolving android architectures. We collected some of the questions from the community and try to answer them.
Show notes: http://fragmentedpodcast.com/episodes/151/
In this episode, Donn and Kaushik talk about the state of android architectures and how they've stared to evolve. Kaushik recently worked on a project of coming up with an evolved version of an MVVM architecture, very similar to what the Android community now calls MVI.
In this episode they discuss the specific. A special request: if you have follow up questions or clarifications or things you'd like to see specifically with respect to this dicussion, hit us up on the Discord #fragmented-podcast channel with your thoughts and we'll make sure to address them in future parts!
In this short fragment, Kaushik explains how you can trace network requests from your app by adding a special header. Easily trace an HTTP request all the way from a client to your backend web process.
In this episode, Donn and Kaushik talk about productivity tools for developers. As developers, what are some additional tools and utilities that really up your game. If you wanted to see how they tweak their development environments and workstations in general, this is a good episode to listen. Also introducing a Fragmented Discord Chat server!
In this mini fragment, Donn and Kaushik share some thoughts on real world testing with Android development - a favorite topic of theirs.
Kaushik recently ran into a case where an espresso test fails because the UI stops performing. It's an interesting discussion on figuring out what matters when you write your tests. They dive into strategies and techniques around testing. What makes a good test, what should you be testing?
They then talk about why Hermetic testing is pretty hard on mobile and ideas around a simple solution that could be provided out of the box. They then round it up talking about TDD and it's role in today's world.
In this episode, we talk to our friend Matt Logan. Matt took some time off and worked on an indie app called Sessions. He built this for both Android and iOS. In this episode we talk to him about his experience building apps on both platforms, techniques, advice and other good stuff.
In this mini fragment, Donn and KG talk about Impostor syndrome. Most of us developers are plagued by this. Does this feeling ever go away? How do we deal with this? Listen to this short episode to find out more.
We all know of ProGuard, we want to use it and like it. But let's face it proGuard ain't pretty. In this episode we have Jeb walk us through the magic of ProGuard.
We talk to Jeb Ware of American Express. Jeb works as an Android developer and has given some great talks on ProGuard. He walks us through what ProGuard is, how it works, advancements with R8 and more.
By the end of this episode, you should have a new found appreciation for proGuard and bravely approach adding proGuard to your projects.
In this episode, Donn and Kaushik talk to Uber's Manu Sridharan on static code analysis. Manu's a badass who did his PhD on the subject! He explains how static code analysis works, how Uber leverages these tools in their app development pipeline and how we can use such tools to build high quality Android apps.
In this mini fragment, Donn asks KG about a recent hackathon side project that he worked on with Kotlin scripting.
We go into kotlin scripting (using kscript), pros cons, setting it up and more. We've added links some interesting resources, so you want to make sure you check out the shownotes for this one, so you too can explore kotlin scripting and see if it's a fit for you.
In this episode, DF and KG decompress. They start off talking about ideas around KISS vs DRY in software engineering. They move on then to talk about a dear topic - functional vs unit testing and then dive into some of the woes of having a testing infrastructure spun up. Also announcing our youtube channel !
In this fragment episode, Donn talks about Kotlin extension functions. He discusses what they are, how to build them, why they're useful, how to organize them, visibility and how to call them Java and much more.
Donn's on a roll again this week and talks to us about his experience having developed Android for a while. In the early days of Android development, as app developers we felt like we had a decent grasp of everything you needed to know to pump out decent apps.
But with the time, and the latest updates, that has become a tricky thing. This is a good problem to have for the ecosystem but it can make it seem very daunting for developers, both new and old.
Donn gives his 2 cents on this subject.
A hotly debated topic at the moment is the use of a library like Dagger for dependency injection in the world of Kotlin. In this episode, we talk to Danny Preussler. Danny's a pro who's been around from the Java 1.0 days! He helps trace the history of dependency injection in Java all the way to today, in a Kotlin world where there exists alternatives like Koin and Kodine.
We dive into how some of these use a Service Loader/Locator pattern and the subtle differences with dependency injection. Listen on for an action packed episode.
In this mini fragment Kaushik talks about dealing with the Money object. With money we need decimals, but the obvious solution of using a float or double may not work as advertised. Listen to this episode to find out why and how you can go about dealing with this.
We live in a time of booming AR (and VR). We wanted to talk to someone who’s worked with it and would know a thing or two about the subject. Then we found Yuliya – also known as the walking wizard of ARCore. In this episode, she teaches Kaush and Donn about ARCore, the differences between AR/VR, the fundamental building blocks of ARCore, some of the newer concepts introduced like Sceneform. An action packed episode to say the least. Listen on !
In this episode, we resume our conversation with Airbnb's Gabriel Peal. If you haven't listened to part 1, you really really should go back and do that. In that episode, we kicked it off by first trying to understand the goals and the story behind why React Native was chosen as the code sharing technology/tool.
If you haven't heard, Airbnb has decided to move away from React Native. Friend of the show Gabriel Peal wrote an in-depth series of blog posts about this. We had so many questions around this that we asked him to come on the show and he graciously accepted to answer some of our questions.
It's always a pleasure listening to his insights and this episode is no exception!
In today's episode, we are joined by Sam Bobra - engineering manager @VSCO, android fangirl and gRPC magician (some would go so far as to say evangelist !) to talk about gRPC on Android. Super informative episode!
Show notes at http://fragmentedpodcast.com/episodes/128/
In this episode, we continue with Part 2 of this GraphQL series. If you haven't listed to episode 125 already, it might make sense to first listen to that one cause we go into the basics of GraphQL.
In this episode, we dive into the specifics of Apollo and how Mike went about creating a GraphQL client for Android. Let's get on with Part 2.
In this episode, we talk about GraphQL. Friend and GDE Mike Nakhimovich helped create the library Apollo for Android, which is the defacto official GraphQL client for Android.
In this first part of two, we take a step back and first try to understand what GraphQL is, why one would use it, how Mike set out to create and contribute Apollo for Android and his journey and satisfaction with open sourcing it when he worked at the New York Times.
If you've ever been interested in GraphQL, this is a good show to get you up to speed.
In this episode of Fragmented, Kaushik talks to Chiuki & Huyen from Android Dialogs and Russell & Philip from Pocket Casts. Fresh after IO we huddled in a room to talk about our first impressions and what we thought were some of the highlights for us Android developers. Hope you enjoy the show! (if you want to see a behind the scenes crossover special, make sure to subscribe to Android Dialogs!)
Show notes: http://fragmentedpodcast.com/episodes/124/
With good –most of the time– also comes the bad. In this episode, Kaushik and Donn chat about the small annoying things about being an Android developer, or more aptly - "Micro Frustrations".
We usually cover the new, latest, greatest and awesome developments. But it helps to step back and also point out the things that are broken and the 1000 cuts so to speak.
Sit back and enjoy this hearty rant!
Show notes: http://fragmentedpodcast.com/episodes/123/
In this episode of learning kotlin, we look at the typealias keyword. The typealias keyword allows you to provide alternate names for existing types and and function types. Learn how, why and when you can use it in this episode
In this episode of Fragmented, we wrap up another 2 part series. We dive into the details of the Arrow library with this one. Arrow is a library in Kotlin that helps bring many of the functional paradigms of programming to your daily development. We talk to the team about how it all started, the history of the library, why we even need arrow, how Arrow is structured, some of the pitfalls, and in the end some resources on getting us started with Arrow.
In this episode of Fragmented, we kick off another 2 part series. This time it's with the Kotlin Arrow team! In the first part, we talk to Jorge, Raul and Paco about Functional programming in general, some core FP concepts, do we already use functional programming today, what are pure functions, do I need to know complicated math to do FP, Immutability, Referential transparency and so much more. These are all pretty daunting words, but the Arrow team break it down and make it really simple for us to understand.
In part 2 of this series,
To help us understand Flutter in-depth we talk to Flutter's GDE Eugenio Marletti. In Part 2 of this 2 part series, Eugenio helps us understand what flutter is, why it was created, how it works, some really cool features with Flutter and why an AndroidDev today should really give Flutter a good look.
We got so carried away in conversation, that we were forced to break this episode into two parts. If you missed part 1 but want to go back and listen you'll find it here: 118: Flutter and cross-platform development with GDE Eugenio Marletti - Part 1
In this episode, we dive into one of our most requested topics and highly anticipated ones - Flutter.
To help us understand Flutter in-depth, we talk to Flutter's GDE Eugenio Marletti. In Part 1 of this 2 part series, Eugenio helps us understand what flutter is, why it was created, how it works, some really cool features with Flutter and why an AndroidDev today should really give Flutter a good look.
We got so carried away in conversation, that we were forced to break this episode into two parts. Stay tuned for Part 2.
Show notes: http://fragmentedpodcast.com/episodes/118/
In this episode, Donn and Kaushik sit down to talk about multi-module builds with Gradle. They talk about how you can separate your build into multiple different modules and how you might go about implementing it.
In this episode of learning kotlin, we look at 3 important keywords - inline, noinline and crossinline. The inline keyword is super common and you've probably run across this one at some point. What does it mean and when is it useful? We also look at the related but seldom used variants noinline and crossinline.
In this episode, we talk about the different parts of Android architecture components. We've had episodes on Room and the paging library, so in this one, we thought we'll touch a little on Lifecycle Owners & Observers, ViewModels, and LiveData. Akshay Chordiya helps break it down. Listen on!
In this episode we catch up with a highly energetic but sick Christina Lee about the delightful details in the Pinterest app, delving with the dark side (Swift), giving live coding presentation talks and touching on some Kotlin details like covariance and contravariance. Listen on for a power-packed 40 minutes.
In this mini-fragment episode, Donn talks about Item #9 of the Effective Java (Third Edition) book - Prefer try with resources to try finally.
Please note, this episode references the third edition of the Effective Java book that recently came out. Previously we were doing the entire series on version 2, but we are now upgrading to version 3 of the book. We will not be re-doing any of the existing lessons, but if one was inserted in the mix, then we will do that lesson.
In this episode of Fragmented, we talk about CI, CD and CD services. That's Continuous Integration, Continuous Delivery, and Continuous Deployment. BuddyBuild a beloved 3rd party service of ours (and previous sponsor) is sunsetting their Android service, so Donn and KG discuss alternatives and the options they've been keeping an eye on.
show notes: http://fragmentedpodcast.com/episodes/110/
In this episode of Fragmented, we go back to learning some Kotlin and look at the Iterable like data structure introduced called "Sequences". What is a sequence? How is it different from Iterable? When should I use it?
Listen on and find out!
Show notes at http://fragmentedpodcast.com/episodes/109/
In this episode Donn talks to React Native magician Ryan Salva.
React native and cross-platform development is typically one of our most requested topics so we kick the new year off with React Native. Ryan and Donn dive into the state of React Native today for mobile development, how it's matured since inception, what kinds of apps are suited to be built with React Native, what kinds aren't, what are the benefits to using React Native, some tips like pushing updates without having to upload to the play store every time and so much more.
Show notes at http://fragmentedpodcast.com/episodes/108/
In this episode, we talk to Alex Lockwood who created shapeshifter.design, while at Google. Shape Shifter is an amazing tool that can help developers create Animated Vector Drawables without losing all their hair. Think of shapeshifter as a developer-friendly, open source, After Effects alternative for Android developers.
Alex talks to us about how and why he created Shape Shifter, the different tools that have evolved out of its creation and just getting a good grasp of its working.
Show notes: http://fragmentedpodcast.com/episodes/107
In this episode we sit down and talk to Ray Ryan from Square about the Reactive Workflow pattern that he recently gave a talk on. This pattern goes deep into RootViews, containers, ViewFactories and much much more.
In this episode, we talk to Jake Wharton of Google on a recent Kotlin coding style guide that they released: the Android Kotlin Guides. In this episode, we pick his brains and ask him how he structured the guide, how he partitioned it to fit some of the idiosyncrasies of Kotlin, what some of the challenges were, when coming up with the guide and much more.
Jake's one of the best out there and it's always such a pleasure to have him on the show. Listen on:
Show notes: http://fragmentedpodcast.com/episodes/105
In this episode of Fragmented, Donn makes the pilgrimage to Microsoft Connect 2017. Connect is Microsoft's annual developer conference where they announce a bunch of new products and services.
Donn got to interview a bunch of folks, and in this episode, we talk to two of them: Miguel De Icaza (leading open source proponent who also helped create Gnome, Mono, Xamarin etc.) and Simina Pasat (Program manager for Microsoft's very new CI like service AppLink). Both of them were terrific guests and had quite a few gems to share, for us Android devs! Listen on.
In this episode, he breaks down the pattern for us. He tells us how to implement it, how it helps with testing, the benefits of the pattern and some of the pitfalls. Recording this episode was riveting for us and we dive into some juicy technical details. Listen on!
Show notes: http://fragmentedpodcast.com/episodes/103/
In this episode of Fragmented, Donn and I decompress. I had the pleasure of attending KotlinConf 2017 - Jetbrain’s very first conference dealing completely just on Kotlin. I have a quick chat after Day 1 with Donn, giving him the juicy updates.
We talk about how the conference was organized, some of the technical talks I attended (our thoughts on these…) and some of the folks I had the opportunity to meet.
Overall it was an amazing time at KotlinConf and if you want to vicariously enjoy it, listen on to the show.
Show notes: http://fragmentedpodcast.com/episodes/102/
Another day, another opportunity to learn more Kotlin. In this episode, Kaushik walks through the concept of visibility modifiers. How do the modifiers in Kotlin differ from the ones in Java? What is this new internal modifier? When should I use each of the operators?
Listen on to find out!
This is the 100th episode of Fragmented. We do things a little differently for our 100th episode and field a bunch of listener questions that came in. We're going a little meta and talking about our experience starting Fragmented, our process, how we pick guests and topics, our setups, our favorite Android libraries and classes (?!).
Thank you so much for being a listener. We cannot express how grateful we are to have you.
In this episode, Donn talks about Item #17 from the Effective Java book: Design and Document for inheritance or else prohibit it. Learn how you should be documenting your code that is built for inheritance when you should not call overridable methods and much more.