Fragmented - Android Developer Podcast

  • Autor: Vários
  • Narrador: Vários
  • Editora: Podcast
  • Duração: 175:20:28
  • Mais informações

Informações:

Sinopse

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.

Episódios

  • 150: Learning Kotlin - Returns, Jumps & Labels

    21/01/2019 Duração: 19min

    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) {

  • 149: Learning Kotlin: inline classes and Type driven design

    15/01/2019 Duração: 24min

    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

  • 148: Evolving Android architectures (Part 1)

    07/01/2019 Duração: 58min

    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 m

  • 147: Disposing RxJava 2 Streams with AutoDispose

    31/12/2018 Duração: 15min

    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()

  • 146: 3 Things Every Android Developer Needs to Know

    24/12/2018 Duração: 27min

    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)

  • 145: Tracking Network Requests With x-Request-ID

    18/12/2018 Duração: 11min

    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

  • 144: Developer Productivity Tools

    10/12/2018 Duração: 01h20min

    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

  • 143: Real world testing thoughts

    03/12/2018 Duração: 27min

    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

  • 142: Indie development on Android and iOS with Matt Logan

    19/11/2018 Duração: 58min

    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)

  • 141: Impostor Syndrome

    12/11/2018 Duração: 34min

    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 Con

  • 140: ProGuard with Jeb Ware

    05/11/2018 Duração: 58min

    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)

  • 139: Static code analysis with Manu Sridharan

    24/10/2018 Duração: 39min

    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 @rakingl

  • 138: Decompress - kotlin scripting

    15/10/2018 Duração: 23min

    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. Shownotes Existing solutions for poll/vote tabulation polleverywhere.com surveymonkey.com polldaddy.com Misc kscript by holgerbrandl blog post on the hackathon vote tabulation script what the csv output from google forms looks like github repo for script - with installation instructions Highly recommended - Talking kotlin episode on kscript // slick kotlin usage override fun onCreate(savedInstanceState: Bundle?) = super.onCreate(savedInstanceState).also { setContentView(R.layout.activity_something) // ... } Sponsors American Express Jobs - American Express is hiring Android developers! Contact

  • 137: Decompress KISS DRY testing

    04/10/2018 Duração: 45min

    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 ! Fragmented's Youtube channel Sponsors American Express Jobs - American Express is hiring Android developers! Contact @fragmentedcast [twitter.com] @donnfelker and +DonnFelker @kaushikgopal and +KaushikGopalIsMe

  • 136: Kotlin Extension Functions

    24/09/2018 Duração: 21min

    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. Show Notes Kotlin Extension Functions Docs Calling Extension Functions from Java Kotlin KTX View Functions import android.view.View fun View.gone() { this.visibility = View.GONE } fun View.visible() { this.visibility = View.VISIBLE } Contact @fragmentedcast [twitter.com] @donnfelker and +DonnFelker @kaushikgopal and +KaushikGopalIsMe

  • 135: You Can't Learn Everything

    17/09/2018 Duração: 08min

    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. Download Contact @fragmentedcast [twitter.com] @donnfelker and +DonnFelker @kaushikgopal and +KaushikGopalIsMe

  • 134: Get Effective Help with an SSCCE

    06/08/2018 Duração: 21min

    In this episode, Donn talks about how you can get effective help with your coding problems with an SSCCE - a Simple, Self-Contained, Correct (Compilable), Example. Using an SSCCE provides others with a quick, concise way to examine the problem without extraneous libraries, UI toolkits and various other parts of your application that do not matter to the problem at hand. Donn breaks down each component of the SSCCE so you can wrap your head around what you need to get help quickly. Links SSCCE.org Sponsors Instabug - Instabug is the simplest yet most comprehensive bug reporting and In-app feedback SDK. Contact @fragmentedcast [twitter.com] @donnfelker and +DonnFelker @kaushikgopal and +KaushikGopalIsMe

  • 133: Dependency Injection and Service Locators in a Kotlin world with Danny Preussler

    23/07/2018 Duração: 01h10min

    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. Show Notes Danny's slides (DI in a Kotlin world) talk Koin Toothpick how to pronounce reified Service Locators vs Dependency Injection Your application is aware it's using a Service Locator, but your application should be totally un-aware that it's using a Dependency Injection Container. SO post on the difference between DI & SL pattern Martin Fowler's post on DI, IOC, SL Caster.IO (paid) course by DF on setting up testing with Dagger 2 and Espresso Mark Seeman on Service L

  • 132: Dealing with Money in programming

    18/07/2018 Duração: 18min

    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. Show Notes The infamous Short - Ep029: All about the infamous 65,536 dex method count IEEE_754 float storage format How binary fractions work Problematic snippet 1: println(1.03-0.42) # prints 0.6100000000000001 Problematic snippet 2: var x = 0F (1..100).forEach { i -> x += 0.01F } println(x) # 0.99999934 vs 1 Sponsors Bitrise - Bitrise is your mobile continuous integration and delivery for your whole team, with dozens of integrations for your favorite services. Contact @fragmentedcast [twitter.com] @donnfelker and +DonnFelker @kaushikgopal and +KaushikGopalIsMe

  • 131: ARCore with Yulia Kaleda

    09/07/2018 Duração: 52min

    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 ! Show Notes ep 79 - How do i get started with VR Apps Tango shutting down ARCore ARKit Cloud Anchors: Share AR experiences ARCore - Geometry detection Sceneform - 3d view rendering Resources Google ARCore github Yuliya's blog post Yuliya's talk Sponsors Bitrise - Bitrise is your mobile continuous integration and delivery for your whole team, with dozens of integrations for your favorite services. Contact @yuliyakaleda @fragmentedcast [twitter.com] @donnfelker and +DonnFelker @kaushikgopal and +KaushikGopalIsMe

página 6 de 13