Fragmented - AI Developer Podcast

Fragmented - AI Developer Podcast

By Kaushik Gopal, Iury SouzaScienceTechnologyEducation
Download on the App Store

Fragmented - AI Developer Podcast episodes

  • 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)
            • 59 min
            • 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)
                    • 58 min
                    • 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)
                              • 20 min
                              • 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)
                                                • 25 min
                                                • 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)
                                                            • 59 min
                                                            • 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
                                                                • 16 min
                                                                • 146: 3 Things Every Android Developer Needs to Know
                                                                  • Dependency Injection
                                                                    1. Constructor_setter_method injection
                                                                    2. Service Locators or other DI frameworks
                                                                    3. Common Frameworks
                                                                    4. 1. Dagger
                                                                      2. Koin
                                                                      3. Kodein
                                                                      4. ToothPick
                                                                      • How to test

                                                                        1. Functional / System
                                                                        2. Integration
                                                                        3. Unit
                                                                        4. Tools:
                                                                          1. jUnit
                                                                          2. Espresso
                                                                          3. Spek
                                                                          4. Keep it simple simple

                                                                            1. KISS principle KISS principle - Wikipedia
                                                                            2. Examples
                                                                              1. Code Duplication
                                                                                1. “Extract this into a method”
                                                                                2. Lets create a framework for this
                                                                                3. 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)

                                                                                    28 min
                                                                                  • 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)
                                                                                          • 12 min
                                                                                          • 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)
                                                                                                              • 1 hr 21 min
                                                                                                              • 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)
                                                                                                                      • 28 min

                                                                                                                      About Fragmented - AI Developer Podcast

                                                                                                                      From the publisher's feed

                                                                                                                      Fragmented is an AI developer podcast for engineers who want to go beyond vibe coding and ship real software.

                                                                                                                      More shows like Fragmented - AI Developer Podcast

                                                                                                                      Design Details by Brian Lovin, Marshall Bock

                                                                                                                      Design Details

                                                                                                                      360 Listeners

                                                                                                                      Developer Tea by Jonathan Cutrell

                                                                                                                      Developer Tea

                                                                                                                      403 Listeners

                                                                                                                      Does Not Compute by Sean Washington, Rockwell Schrock

                                                                                                                      Does Not Compute

                                                                                                                      53 Listeners

                                                                                                                      Toolsday by Una Kravets, Chris Dhanaraj

                                                                                                                      Toolsday

                                                                                                                      48 Listeners

                                                                                                                      Swift Unwrapped by JP Simard, Jesse Squires, Spec Network, Inc.

                                                                                                                      Swift Unwrapped

                                                                                                                      90 Listeners