Fragmented - Android Developer Podcast cover image

Fragmented - Android Developer Podcast

Latest episodes

undefined
Jan 7, 2019 • 59min

148: Evolving Android architectures (Part 1)

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. 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! Shownotes MBLT-Dev talk by KG : Unidirectional state flow patterns - a refactoring story github sample repo with this pattern Salient features of the pattern: I. Screens are driven by a single ViewModel II. Screens listen to a single Observable exposed from the ViewModel III. Screens listen to a single Observable exposed from the ViewModel IV. Events are sent into the VM through a single function processInputs V. Break(ing) the Chain VI. Testing strategy Inspiration The state of managing state with RxJava MVI patterns with Hannes Dorfmann MVRx Sponsors 🙏 Nevercode Nevercode is taking Flutter revolution extremely serious and is prepared to offer kick-ass CI/CD for Flutter projects with codemagic.io. Check it out and get started at https://codemagic.io/ Sentry.io Sentry tells you about errors in your code before your customers have a chance to encounter them. Check them out at: https://sentry.io/for/android/ Contact Discord chat or @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Dec 31, 2018 • 15min

147: Disposing RxJava 2 Streams with AutoDispose

In this short fragment episode, Donn explains how you can clean up your RxJava 2 streams and ensure no memory leaks are occurring by using the AutoDispose library from Uber. Shownotes AutoDispose Library Tool to help migrate to RxJava 2 CatchUp Library Code Samples Java myObservable .map(...) .as(AutoDispose.autoDisposable(AndroidLifecycleScopeProvider.from(this))) .subscribe(...) Kotlin myObservable .map(...) .autoDisposable(AndroidLifcycleScopeProvider.from(this)) .subscribe(...) With Scope Event Provided myObservable .map(...) .autoDisposable(AndroidLifcycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)) .subscribe(...) Testing // File: CustomerService.kt class CustomerService @Inject constructor(...) { lateinit var scopeProvider: ScopeProvider } // Usage in Fragment/Activity/etc val service = CustomerService(...).apply { scopeProvider = AndroidLifecycleScopeProvider.from(this) } // Usage in Test val service = CustomerService(...).apply { scopeProvider = TestScopeProvider.create() } Contact @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram) Fragmented Chat
undefined
Dec 24, 2018 • 28min

146: 3 Things Every Android Developer Needs to Know

Dependency Injection Constructor_setter_method injection Service Locators or other DI frameworks Common Frameworks 1. Dagger 2. Koin 3. Kodein 4. ToothPick How to test Functional / System Integration Unit Tools: jUnit Espresso Spek Keep it simple simple KISS principle KISS principle - Wikipedia Examples Code Duplication “Extract this into a method” Lets create a framework for this Kaushik’s - 3x rule if something is duplicated 3 or more times, think about extracting it 3/6 Rule - In 6 months, will I be able to understand this in under 3 minutes? Contact @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Dec 18, 2018 • 11min

145: Tracking Network Requests With x-Request-ID

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. Shownotes What is the X-Request-ID HTTP Request IDs improve visibility across the application stack How HTTP headers work Where does the X- come from? Sponsors 🙏 codemagic.io by NeverCode Join their Flutter Community here Contact @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Dec 10, 2018 • 1h 20min

144: Developer Productivity Tools

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! Shownotes Fragmented Discord Chat Server Productivity tools Keyboard Maestro Keyboard Maestro - Mac (Referral code with 20% discount) Sample macros: Demo: Better auto pairing with BBEdit and Keyboard Maestro Demo: Autocopy text from one program to another AutoHotkey - Windows (Windows equivalent of sorts) DuckDuckGo Bang Syntax Muzzle App Window management tools: Divvy Spectacle Magnet Moom Phoenix VSCode Night owl theme OhMyZsh Spaceship prompt Auto Suggestions Fish Shell Kap - Screen recording tools Sip - Color Management Sponsors 🙏 codemagic.io by nevercode Join their Flutter Community here Contact @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Dec 3, 2018 • 28min

143: Real world testing thoughts

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. Shownotes Espresso Testing lists (onData) Espress test swipe action What is the fold Hermetic Servers testing MockWebServer WireMock Sponsors 🙏 American Express Jobs - American Express is hiring Android developers! NeverCode Blog post on developing apps 20% faster Contact @fragmentedcast or our Youtube channel @jebstuart @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Nov 19, 2018 • 59min

142: Indie development on Android and iOS with Matt Logan

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. Shownotes Sessions Android iOS Strava Chris Lacy - Action Launcher Indie Hacker's podcast Fragmented Ep #64 - Garbage Collection (Android) vs Reference Counting (iOS) Matt's blog post on code sharing Sponsors Instabug NeverCode Blog post on developing apps 20% faster Contact @fragmentedcast @_mattlogan @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Nov 12, 2018 • 34min

141: Impostor Syndrome

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. Shownotes Karl the Fog (wikipedia page) @KarlTheFog Matt's twitter post on background process limit 0 #135 - You can't learn everything I’m willing to look foolish, if it means I’ll learn something. Larry page 1996- Java thread #76: Taming the activity lifecycle with Kristin Marsicano Jose Alcérreca's lifecycle cheatsheet bookmark Sponsors Instabug - Thousands of companies including Lyft, eBay and T-Mobile rely on Instabug to receive comprehensive bug reports from users and testers, helping them iterate faster and enhance their app quality. Signup now, integrate the SDK for free, and get a special Instabug t-shirt. Nevercode -Develop apps 20% faster with the leading CI/CD partner for iOS, Android, Cordova, Ionic, React Native & Flutter projects. Blog post on developing apps 20% faster Contact @fragmentedcast @preusslerberlin @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Nov 5, 2018 • 58min

140: ProGuard with Jeb Ware

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. Shownotes How ProGuard works - Jeb at Droidcon Boston ProGuard Manual D8/R8 announcement R8 issue tracker Sponsors American Express Jobs - American Express is hiring Android developers! Contact @fragmentedcast or our Youtube channel @jebstuart @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Oct 24, 2018 • 39min

139: Static code analysis with Manu Sridharan

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. Note from Manu: I found the story I was thinking about: Reed Hastings founded the company that built the Purify tool for debugging memory errors in C programs before founding Netflix. But, that's actually not a static analysis tool; it does dynamic analysis by adding extra metadata at runtime. As far as the history of lint goes, from Wikipedia looks like Kaushik's guess was exactly right as to why it's called lint. Looks like the name goes back to the late 1970s. Misc ErrorProne Improve your code with Android lint checks checkstyle RxThreadEffectChecker The Checker framework NullAway - Uber Infer - Facebook Infer: RacerD - Facebook Contact @fragmentedcast (on Twitter) or our Youtube channel @rakingleaves @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)

The AI-powered Podcast Player

Save insights by tapping your headphones, chat with episodes, discover the best highlights - and more!
App store bannerPlay store banner
Get the app