Fragmented - Android Developer Podcast cover image

Fragmented - Android Developer Podcast

Latest episodes

undefined
Mar 11, 2019 • 21min

155: Naming conventions for RxJava Observables

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. Enjoy. Shownotes yak-shaving Upday's convention: Florina's tweet Upday's blog post - Reactive Frustrations 1 Options // option 1 fun getUser(): Single // yuck // option 2 fun user(): Observable // but what does this mean? // option 3 fun user(): Single fun userUpdates(): Observable // or fun userStream(): Observable // this is looking good // option 4 (upday style) fun userOnce(): Single fun userStream(): Observable fun userOnceAndStream(): Observable Stay tuned for a future episode, where we discuss more details and more complicated cases to handle (like emitting a list of user, policies for fetching the first user as quickly as possible etc.). Also #FinishNotation. Sponsors 🙏 sentry.io - Your code is broken. Let’s fix it together - 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
Mar 5, 2019 • 19min

154: Developer Growth: Start Writing

Growing as a developer is important for you, your career and your future. One of the best ways to grow your career is to start writing. Donn recommends starting a blog or contributing to a blog. The process of writing will expose your weak points in your comprehension of a topic. Refining your communication skills through writing and putting thoughts out into the universe via a blog will broaden your skills as a developer. Ultimately, writing is about communication and communication is the cornerstone of success in much of anything. In this episode, Donn walks you through why you should start writing to help you grow as a developer. Enjoy. Sponsors 🙏 sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/ Instabug -They're giving a special offer for all listeners, go to instabug.com/fragmented, signup, install the SDK, and you will get a free Instabug t-shirt and a 14-day free trial. Contact Discord chat or @fragmentedcast or [our Youtube channel][10] @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Feb 19, 2019 • 1h 14min

153: How to be an indie Android developer with Chris Lacy

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 epiisode, he talks to us about what it's like being an indie developer, starting on Action Launcher and of course his newest creation - ActionDash. Enjoy. Shownotes TweetLanes Action Launcher On selling Link Bubble Brave browser ActionDash Introducing ActionDash Download on the play store Slick graph library MPAndroidChart Action Launcher is hiring! Sponsors 🙏 sentry.io Nevercode Nevercode - CI/CD for Android, iOS, React Native & Ionic Try Codemagic Join Flutter CI/CD Slack Community Contact @chrismlacy or work with him or leave a 5 star reviews on ActionDash :) Discord chat or @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Feb 11, 2019 • 59min

152: Should I Rewrite My App? with Jeroen Mols

After you've been working on an app for sometime, the most common quandry one runs into is the need to rewrite the app. We've all been there, there's technical debt, we've improved our understanding, the tools have become better, we've become better. So should you go back and just rewrite the whole app? Jeroen walks us through his thinking. Shownotes The big Rewrite - Jeroen's talk Droidcon Italy Slides for the talk with notes Philips Hue Philips Hue API Resources The big rewrite - Chad Fowler The big rewrite - Jo Van Eyck Paying technical depth - Jeroen Moons Things you should never do - Joel Spolsky Write awesome unit tests - Jeroen Mols Pro Android Studio - refactoring - Jeroen Mols Why We Decided to Rewrite Uber’s Driver App - Nandhini Ramaswamy and Adam Gluck How to Ship an App Rewrite Without Risking Your Entire Business - James Barr, and Zeyu Li Sponsors 🙏 sentry.io Contact @molsjeroen or his blog or his speakerdeck Discord chat or @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Feb 4, 2019 • 57min

151: Evolving Android architectures (Part 2)

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. Shownotes Listen to the recap in episode 148 LCE: Modeling Data Loading in RxJava Rx example pull from db then network (from KG's presentation) Donn's caster.io episode on the amb operator Akshay's episode on Arch components (specifically Live Data) Jose's cheatseet on Activity lifecycle KG's example of using this architecture Sponsors 🙏 sentry.io Nevercode Try Codemagic - CI/CD for Flutter apps by Nevercode Join Flutter CI/CD Slack Community Contact Discord chat or @fragmentedcast or our Youtube channel @donnfelker and donnfelker (on Instagram) @kaushikgopal and kaushikgopal (on Instagram)
undefined
Jan 21, 2019 • 19min

150: Learning Kotlin - Returns, Jumps & Labels

Shownotes Kotlin Returns and Jumps Documentation Code data class Customer(val isPlatinum: Boolean) fun main() { val customer = Customer(false) println("Number of points customer has: ${calculatePoints(customer)}") // Break out of the loop once we're over 25 for (i in 1..100) { if (i > 25) { break } else { println(i) } } // Skip all even numbers for (i in 1..100) { if (i % 2 == 0) { continue } else { println(i) } } // Break out of the outer loop (which breaks out of the inner too) using a label donn@ for (i in 1..100) { for (j in 100..200) { if (j > 150) break@donn // This will break out of the inner loop and outer loop else println("i: $i, j: $j") } } // Continue processing the next outer loop value when a condition is met. donn@ for (i in 1..100) { for (j in 100..200) { if (j > 150) continue@donn // This will break out of the inner loop and outer loop else println("i: $i, j: $j") } } // returns with label example1() example2() println("I'm done processing!") } fun calculatePoints(customer: Customer): Int { if (customer.isPlatinum) { return 100000 } else { return 10 } } fun example1() { listOf(1, 2, 3, 4, 5, 6, 7, 8, 9).forEach { if (it > 7) { return } else { println(it) } } println("This wont print :( because return exited the bar() function") } fun example2() { listOf(1, 2, 3, 4, 5, 6, 7, 8, 9).forEach bin@ { if (it > 7) { return@bin } else { println(it) } } println("This will print! :) return exited the forEach!") } 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
Jan 15, 2019 • 25min

149: Learning Kotlin: inline classes and Type driven design

In this quick fragment, Kaushik talks about the new Kotlin 1.3 experimental feature "inline classes" and how it helps with Type driven design. Shownotes Kotlin releases 1.3 Fragmented episode #116 - inline, noinline & crossinline Think strong types and simple values typealias.com blog Type driven design resources Type drive approach to Functional design - Michael Feathers Type driven design in Elm blog.ploeh - Type driven design Kotlin KEEP KEEP proposal - inline classes KEEP discussion vs typealias Fragmented Ep #122 - typealiases inline classes vs typealiases How to represent money in programming Kotlin experimental Jake Wharton - inline classes make great database ids 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
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)

Get the Snipd
podcast app

Unlock the knowledge in podcasts with the podcast player of the future.
App store bannerPlay store banner

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode

Save any
moment

Hear something you like? Tap your headphones to save it with AI-generated key takeaways

Share
& Export

Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode