258 avsnitt • Längd: 40 min • Månadsvis
The Fragmented Podcast is the leading Android developer podcast started by Kaushik Gopal & Donn Felker. Our goal is to help you become a better Android Developer through conversation & to capture the zeitgeist of Android development. We chat about topics such as Testing, Dependency Injection, Patterns and Practices, useful libraries, and much more. We will also be interviewing some of the top developers out there. Subscribe now and join us on the journey of becoming a better Android Developer.
The podcast Fragmented – Android Developer Podcast is created by Donn Felker, Kaushik Gopal. The podcast and the artwork on this page are embedded on this page using the public podcast feed (RSS).
Join us as we talk with Vinay Gaba, Android GDE and leading voice in Android development, about the future of the field. Vinay shares insights from interviews with top Android devs on their three-year predictions, and offers his own perspective. We cover AI's impact, evolving development roles, and crucial future skills.
You can find the full shownotes over at fragmentedpodcast.com.
Pessimists avoid risk, Optimists change the world.
In this episode, we dive into the power of rapid prototyping for Android developers using Kotlin. We explore how this crucial skill can impress stakeholders, accelerate your workflow, and help you stay ahead in today's fast-paced tech landscape. We'll cover use cases across scripting, web development (with Ktor & HTMX), mobile apps (Jetpack Compose), and even touch upon how AI is changing the game!
You can find the full shownotes over at fragmentedpodcast.com.
In this episode, we dive into the programming paradigm — Data Oriented Programming (DOP) and why making data the star can simplify your code. Learn how well-modeled data reduces defensive logic, prevents invalid states, and keeps your apps stable. We’ll also contrast DOP with Object Oriented Programming (OOP) and Functional Programming (FP), sharing practical examples, tips, and resource links to deepen your understanding.
The full shownotes with illustrations are on fragmentedpodcast.com.
In this episode, discover how Dan Rusu’s pods4k Immutable Arrays library can deliver 2–8× speed boosts and 5× lower memory usage in Kotlin/Android apps. We first revisit the fundamentals of autoboxing/unboxing and immutability to understand their impact on performance. Then we hear from Dan himself on his library, motiviations for building it, how the benchmarks were calculated and much much more. Our grand finale episode for 2024. Hope you enjoy it!
Full Shownotes at https://fragmentedpodcast.com/episodes/254.
Disclaimer: Links shared might be affiliate links. They help support the production of Fragmented. Thank you for your support.
Kaushik looks at a new logging library from Square called logcat. He starts by seeing how the popular Timber library does it along with the benefits. He then interviews Pierre-Yves Ricau (Piwai) of Square, the creator of logcat, to explore its origins and advantages.
You can find the full shownotes over at fragmentedpodcast.com.
You can find us on a few places:
Disclaimer: Links shared might be affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode of Fragmented, Kaushik dives into the importance of creating your own starter template to streamline app development and minimize decision fatigue. He shares insights from his own starter template - Playground Android.
Looking to the future, JetBrains has an exciting tool called Amper that might make all of this much easier. Kaushik chats with JetBrains’ Márton Braun about Amper, an exciting new tool that could revolutionize Kotlin & Android project setups.
Tune in to learn how to go from idea to code with less friction!
You can find the full shownotes over at fragmentedpodcast.com.
You can find us on a few places:
Disclaimer: Links shared might be affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Kaushik explores the evolution of dependency injection (DI) in Android development. Dagger has been the de-facto solution for DI in Android but there might be a new king in DI-town. He also chats with friend of the show and dependency injection expert Ralf Wondratschek for a final gut check.
Shownotes: https://fragmentedpodcast.com/episodes/251
We're back from the hiatus with our SemiQuicentennial episode! With the momentous 250 comes some big announcements and a shift in the way we do things.
Listen to find out the details!
Shownotes: https://fragmentedpodcast.com/episodes/250
In this episode of our podcast, we explore the diverse landscape of Java versions within the Android ecosystem. Our guest is Michael Bailey, a seasoned Java expert who has been a frequent presence on our show since the early days of our podcast. We kick off with a solid foundation, discussing the differences between JDK and JRE, as well as the distinctions between the available Java JDKs. We also guide listeners through Android Studio settings, exploring how to select a suitable JDK, its utilization, and how it relates to JAVA_VERSION on one's home path/terminal.
As we dig deeper, we start to unpack some of the crucial Android app settings. From compileOptions to sourceCompatibility/targetCompatibility, we shed light on why these versions are important. We also demystify the compileSdk vs minSdk vs targetSdk, and how they interconnect. Drawing from Kaushiks's recent experience in building a new app, we provide real-life examples that can better clarify these topics for our listeners.
We conclude the episode by providing some valuable resources for further understanding and exploration. This episode is designed to be a comprehensive guide to understanding and navigating the intricacies of Java versions in Android development.
Find Michael Online
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast on Twitter or our YouTube channel
Donn
Kaushik
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this edition of Fragmented, we're thrilled to host Ishan Khanna, a software engineer at Tinder who possesses great enthusiasm for feature flags and A/B testing. Donn discusses why he invited Ishan on the show, highlighting Ishan's passion for feature flagging and A/B testing. The conversation kicks off with an insightful story from Ishan about feature flagging at Booking.com, leading to a discussion on the difference between A/B Testing and Feature Flags, when and why to introduce feature flagging, and how to measure its effectiveness. The show also focuses on the benefits and risks of feature flagging, along with ways to manage potential complexities in the codebase.
We then delve deeper into the topic of feature flagging, covering how to get started, what to look for in a tool, and the role of testing. Discussion points include the best practices for rollout percentages, considerations for multi-platform implementation, and the specifics of targeting in feature flagging. The conversation wraps up with an exploration of available tools for those looking to introduce feature flagging or A/B testing frameworks into their operations, examining when it might be necessary to build a bespoke solution.
The episode offers a wealth of resources for listeners, including links to an array of feature flagging and A/B testing tools, such as Firebase Remote Config, Optimizely, and LaunchDarkly. For more insight into the topics discussed, Ishan recommends his Droidcon Berlin talk on 'Customer Driven Development' and Stuart Frisby’s talk on A/B Testing. To reach out to Ishan, listeners can contact him via Twitter, LinkedIn, or his website.
Here are the links mentioned in the document, in markdown format:
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast on Twitter or our YouTube channel
Donn
Kaushik
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, we talk to, Siggi Jonsson. Siggi helps guide us through the complex and often confusing world of Android app modularization. Our conversation will begin by shedding light on the importance of modularization, what triggers the need for breaking projects into multiple modules, and how modularization relates to team size, feature teams, and code ownership. This discussion is aimed at demystifying how and why developers often choose to modularize their applications.
As we move forward, we'll dive into more advanced aspects of modularization, such as the challenges of scaling and the potential missteps in over-modularization. Drawing on real-world experiences, we'll examine the red flags that signal a need for revising your modularization strategy. This part of our discussion will also highlight some specific tools and techniques that can help manage and visualize your project's modularization, and Siggi will share his own experiences and insights into how these tools have assisted in his modularization strategy.
In the final part of the episode, we'll touch on the benefits and strategies of proper modularization. Siggi will share practical advice on how to tackle big projects, fix issues with modularization, and make a smooth transition from monolithic to modular structures. We'll also talk about some tools that can be handy in this process. Before closing, Siggi will offer his top tips for developers embarking on their modularization journey and share some valuable resources to help them. Siggi will also provide updates on his latest work and how listeners can reach out to him.
Sure, here are the links provided in the text, formatted in Markdown:
Find Siggi online here:
Need to learn Git? Donn has the course for you. In this FREE course, you'll learn everything you need to know to start working with Git daily. Watch it here.
@fragmentedcast on Twitter or our YouTube channel
Donn
Kaushik
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this podcast episode, we have the pleasure to host Fred Porciúncula, a Google Developer Expert (GDE) known for his work with Kotlin Inject and his invaluable contributions to the Android development community. Fred offers his expertise on Dependency Injection (DI), Kotlin Multiplatform (KMP), and how they intersect.
We kick off the conversation by discussing Dependency Injection (DI), its importance, and the options available to developers, including Dagger, Hilt, Anvil, Koin, and Kotlin-Inject. Fred explains the use and impact of DI in the Kotlin Multiplatform (KMP) world, considering Dagger’s current lack of KMP support and debating whether one should use separate DI tools for Android apps and KMP components.
Delving further into Kotlin-Inject, we explore its features, usage, and how it differentiates itself from other DI solutions. Topics discussed include its unique handling of Scopes, its support of constructor injection, and its utility in building dependency graphs. Furthermore, we examine the timeless debate of Dependency Injection versus Service Locator.
Toward the end of the episode, Fred presents his thoughts on the advantages and disadvantages of exclusively using Kotlin-Inject throughout an application. We also tackle the concept of “Vanilla Injection” - refraining from using DI libraries at all.
For further learning, we recommend resources like Fred's insightful article on transitioning from Dagger/Hilt to Kotlin-Inject, a Dagger issue discussing KSP support, and a Kotlin-Inject discussion on Anvil-like features. Links to these resources, among others, are provided below. Don’t miss out on this engaging and informative episode with Fred Porciúncula!
Find Fred Online Here
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast on Twitter or our YouTube channel
Donn
Kaushik
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk to an old friend of the show, Colin White, about Treehouse, a combination of the Redwood and Zipline libraries.
Colin is a Staff Engineer at Cash App (Block).
Redwood is a multiplatform Compose library that allows you to target multiple UI toolkits on various native platforms. Ultimately this allows you to share presentation logic.
Zipline is a multiplatform JavaScript engine for Android, iOS, and the JVM, which uses Kotlin for calls in/out of the JavaScript land. This allows you to update the application logic of your apps without the traditional song and dance of the app store approval and release process.
Treehouse is the combination of both libraries, Redwood and Zipline. Listen in to learn more ...
@fragmentedcast on Twitter or our Youtube channel
Donn
Kaushik
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik announce that they are steering the podcast back into Android waters. In other words, the Fragmented Podcast is returning to its roots ... we're back to being a 100% Android Development focused show.
We're glad to have you as a listener, here's to the future of Android Development. 🚀
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or kau.sh/blog or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk to long-time friend Dan Lew about his recent career switch from Android developer to TypeScript/Node.js/Progressive Web App Developer (and more).
It's an interesting discussion that covers ...
Need to learn Git? Donn has the course for you. In this FREE course, you'll learn everything you need to know to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or kau.sh/blog or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk about one of the age old bike shedding topics - code formatting, and how you can solve it with automation and tools.
Code formatting can turn into an endless debate amongst peers and teams, and what Kaushik and Donn have found is that this can be delegated to a tool and automated. Freeing you and your team of having to worry about proper indentation, bracket placement, etc. By relying on a well defined tool and some automation you can clean your code up, make it much more uniform and easier maintain.
We talk about ktfmt, a Kotlin code formatter that was released by Facebook. We dive into ktlint, detekt and more. We also dive into spotless which can help you by integrating ktfmt into your gradle build pipeline.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or kau.sh/blog or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk about the fear of shipping, some impostor syndrome and how it contributes to uncertainty and doubt in your capabilities as a software developer.
Recently Donn embarked on a mission to come up with an idea and ship it within 24 hours (which he did do). The end result was a net benefit of confidence, speed and skill acquisition. This helped reduce any doubt, uncertainty and ultimately fear of shipping a product faster.
That's what this conversation is about ... how to doing a project like the 24 hour MVP can remove fear, uncertainty and doubt and help you ship your side project/products faster.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or kau.sh/blog or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk about 5 new-ish Kotlin constructs that you might not be aware of.
The constructs that they talk about are:
You'll learn what they are, how you can use them and when or when you might not want to use them, and more. We hope you enjoy.
Enjoy!
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this short episode, Donn talks about the CODEOWNERS file and how it can help you ensure teams review the code that they are responsible for before merging.
The CODEOWNERS file is a file that you drop into the root of your project (or into the /docs or .github/ directory) that tells GitHub (or whatever git host you're using) to require a review for any code changes that match the patterns as defined in the CODEOWNERS file. You'll specify a matching pattern and users, or teams that own that pattern of files and they will be required to review the PR before it can be merged. This helps prevent unwanted changes to files that may or may not be owned by one team or another. This is useful as teams grow larger and need more control over the changes in their application codebase.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks about the tips and tricks he's used over the last 20 years of consulting, freelancing and working full time to find jobs and new opporftunities. We're hoping some of these tips help those affected by the recent tech layoffs.
These are tips that Donn still uses to this day. They work wonders to help you land a job quickly when you do them.
The tips:
Ancillary Tips to Boost Your Chances of Landing a Job:
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk about their thoughts on Jetpack Compose and XML for Android layouts and which one you should learn first.
As with every conversation in tech ... it depends on what you're trying to do, where you are at in your career, what the company is doing and more. Donn and Kaushik go into both of their thought processes around Compose and XML and when you should learn one or the other, or even both and whether Jetpack is the future ... or is XML here to stay?
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk about the thought of having a terminal for Android.
Have you ever wished you could whip up a quick script to get the current location of a device, add it to cron and do some automated tasks on your phone? Wouldn't it be nice to have low level access to your system like you do on your desktop?
In this episode, Donn and Kaushik dive into the details of what that might look like and why they find it intriguing.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Kaushik goes solo and interviews Ben Orenstein. Ben is a prolific Ruby developer, an amazing conference speaker, an ardent vim-ster, and now the CEO of Tuple.
Kaushik has been a big fan of Ben's work and was super stoked to talk to Ben and pick his brains on a host of topics: starting the company Tuple, pair programming in general, learning different programming languages and technology, giving better conference talks and more!
This episode is chock full of wisdom from Ben. Enjoy!
Ben is @r00k listen to his podcast - The Art of Product
Follow @fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
kau.sh's blog or @kaushikgopal (on Twitter)
In this episode, Donn and Kaushik talk about how many Android applications seem to suffer from the disease of over-architecture while neglecting the product (UI/UX) itself. They discuss why this is deterimental to the user experience in the Android platform and how they've seen it evolve over the years. They attempt to provide some thoughful ideas on how this can be rectified in the future and more.
We're looking for your feedback on this show. What are your favorite product apps that are just a joy to use on Android? Let us know on Twitter at @donnfelker and @kaushikgopal and @fragmentedcast
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk to John Rodriguez (jrod) about the Paparazzi library which allows you to perform UI screenshot testing on Android without an emulator or physical device.
They talk to John about what screenshot testing is, why it's important, advantages and it's disadvantages as well. You'll learn how to use Paparazzi and how it can test various different screen configurations without having to run an emulator. You read that correct ... without an emulator.
If you're looking to incorporate screenshot testing into your app, this is the episode for you.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode Donn and Kaushik talk about frustration, finding "flow state" and how it's known as "the madness" and how to deal with it.
We originally were going to talk about an other topic, but during the off air banter Donn brought up how he was frustrated with losing/burning so much time on a task that he had for his side project. He only meant to spend a little bit of time on it and then spent WAY more time than he meant to. He got to the point where he had to stop working on the project, yell at himself for not time boxing it and then he had to refocus. This piqued Kaushik's interest and they decided to hit record to talk about this topic as its something they both deal with and have also hear many other developers deal with too.
The "Madness" is when you get consumed by your work and you're so passionate that you lose track of time, eating and more. You've become consumed ... you have "The Madness". This happens to all developers, and Donn and Kaushik talk about how to not let this derail your day when you have other responsibilities as well as life and work. We hope you enjoy today's off the cuff developer discussion.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk to Android GDE Vinay Gaba about learning Jetpack Compose.
They talk about how to learn how to use Jetpack Compose by example (and Vinay's excellent talk by the same name). How to use Jetpackcompose.app to help you find the right Jetpack Compose component and how to use ShowKase to organize discover and visualize your Jetpack Compose Elements.
We then dive into why someone might want to learn Jetpack Compose and how to start learning it. They touch briefly on the parts of Compose, such as the compiler, runtime, UI, foundation, and more. They wrap up by talking about Unidirectional State flow and by answering the hot question ... "Is Jetpack Compose ready for production?"
If you're looking to learn more about Jetpack Compose, this is an episode for you.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode Donn talks about that pit of the stomach feeling we all get when we feel like we should know something but we don't. It's that voice in our head as developers that makes you feel like an idiot even when you're not.
Donn gives examples of how even senior engineers are subject to this feeling and how they are often the ones to not speak up about it simply because of their experience level and seniority.
This episode talks about why we get this feeling and how to combat it going forward.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Kaushik peppers Donn with questions about his foray into Android Turbo, Hotwire, and the concept of "Native Where You Need It".
Donn recently launched Android Jumpstart, the Android client for the Jumpstart Rails trifecta. Jumpstart Rails allow you to launch your SaaS business much faster than if you were to do it from the ground up.
The Android client for Jumpstart Rails builds on top of Turbo and Hotwire, two technologies that help power the Hey email client and Basecamp (the project management app). By using Turbo and Hotwire you're able to get very fast response times and speed with "HTML Over the Wire" (aka Hotwire) with Websockets and much more. This allows your web app to be super fast and when packaged with Android Turbo, allows your web app to live within a native shell. HOWEVER, this doesn't mean its simply a web wrapper. With Android Turbo you can specify which URL routes you'd like to be as native and which ones you'd like to remain web-based. This means you can choose to use Native when you need it, and delegate back to the web for everything else.
This is the solo founder, indie-hacker, and startup SaaS dream come true. You can come to market faster, iterate with a smaller team and get native benefits when and where you need it, all while also allowing your application to be flexible in a web manner.
If you're thinking about building a SaaS app that needs a web presence, Android and iOS presence but want fully native experiences in certain areas then this will be the episode for you.
Need to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode Donn and Kaushik talk to Konstantin Liakhovskii about Expo development and how it takes cross platform development and its productivity to the next level.
Konstantin dives deep into the usages and reasons why Expo (and React Native) are still very good options for companies that are looking to adopt a cross-platform application.
Stoa is a community platform for creators and anyone who wants to monetize their community. Sign up at getstoa.com and get 3 months free when we launch. Early access coming soon.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode Donn sits down and talks to Ephraim Schmitt about how he changed careers from being an exotic car salesman to a mobile software developer. It's a fascinating and inspiring story for anyone looking to get into software development.
We talk about the mental and financial struggles, how he learned to start coding, how you can find opportunities everywhere, how to interview better, where to look for positions when you're just starting out, why volunteering/doing something for free early on is fast way to open doors and build your network and so much more.
If you or anyone you know is looking to break into the software industry, this is the podcast for you. You'll leave with a couple pages of notes, tips and the inspiration you need to jump into the world of software development.
Stoa is a community platform for creators and anyone who wants to monetize their community. Sign up at getstoa.com and get 3 months free when we launch. Early access coming soon.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode Donn and Kaushik are back together on the mic. After an extended break, they both returned renewed and ready to dive into all things software, starting off with IDE themes, plugins and what they've been up to since they were last on the show together.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode Donn talks about something not giving up and persevering when the going gets tough in software, your career and more. It's easy to give up, but the real reward is when you persevere.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik talk about some of the books that they're reading and thoughts and recommendations on each.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or jkl.gg/b or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn and Kaushik reunite for an episode on how they use productivity tools like various todo apps as well as how the organize information for storage and easy retrieval in their day to day lives.
In this episode, Donn and Kaushik reunite for an episode on how they use productivity tools like various todo apps as well as how the organize information for storage and easy retrieval in their day to day lives.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Kaushik talks to his good friend Prabhjot and learns about "Android Enterprise". This is the official way for companies or organizations to enable the use of Android devices and apps in the workplace.
Prabhjot talks about how he setup the infrastructure to provision devices and the different capabilities the solution allows.
If you ever wondered what kind of control is possible, listen to this episode and get a nice scary reality check. After listening to this episode, you'll think twice before accepting free devices from companies or letting policy apps be installed on your phone.
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn continues to dive into his favorite software book: Working Effectively with Legacy Code. He talks about one of the fundamental tactics of the book: Introducing seams
You'll learn what a seam is according to the book, as well as how Donn interprets it so that you can get the same benefit he has gotten from it. You'll learn how to introduce seams into your codebase through method injection, interfaces, abstract classes, and the static gateway pattern (aka: wrapper pattern).
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks to Jay Ohms about Turbo Native for Android, Hotwire, and how to build apps faster with Hotwire, Turbo, Stimulus, and Strata. Jay is an Android developer at Basecamp.com and Hey.com and has been building Hey with Android Turbo since it has been released (he's one of the developers of it).
You'll learn what Hotwire is, how to use it with Android Turbo (and Stimulus and Strata) and how you can create apps faster and more maintainable by marrying the concepts of the web with native code. It's a fascinating technology, and one that Donn will be using very shortly for a SaaS product he's working on.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks dives into his favorite software book: Working Effectively with Legacy Code. He talks about one of the introduction level topics: The Legacy Code Change Algorithm
You'll learn what it is and how you can use it as the basis for this new series that will be focused on the book, Working Effectively with Legacy Code.
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks to software developer Alan Hill about the Growth Mindset and how it applies to software development and life in general.
They chat about pull request feedback lifecycle, learning new tech, and how applying a growth mindset can advance you in your career further than you could have imagined. They wrap up by going through Fixed Mindset vs Growth Mindset "back and forth" to discuss the differences.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks about the difference between working at a big tech company vs freelancing.
There are many pro's and con's for each. What is best for you? Listen to the episode and find out.
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks about the importance of following code conventions and coding styles in codebases.
You'll run into various different coding conventions throughout your career. Sometimes it's as an employee, sometimes it's as a freelancer or consultant or just a small side project. The number of coding "styles" that you'll see will blow your mind as you work through your career. The big question is ... should you adhere to the current coding convention that is used in the app/file/etc or should you use your own favorite or an industry standard?
In this episode, I'll help explain the differences so you can make an informed decision going forward.
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks to David and Ross from Squeaky Dog Studios about building a business out of a side project.
David and Ross are long-time serial side project developers with experience that dates back to the Palm era. They've built games, apps, and now Watch Faces.
We dive deep into how they went from building their watch faces for Android as a side project and how they turned it into a full-time business in which one of the co-founders works full-time. We talk about building the app, pricing, support, which features to build, paid vs free, trial conversions, supporting your app and much much more.
If you've ever wanted to build a side project into a business, and it's app-based... this one is for you.
Android Apps by Squeaky Dog Studios on Google Play
Other links by Squeaky Dog Studios
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks about the three things that every developer needs to know how to do.
These three things include:
How to identify and stop premature optimization
How to write tests and know the difference between unit, integration and end-to-end tests.
How to set up a continuous integration server
While there are vast arrays of other things all developers need to know how to do, and we will cover them in future episodes, this small list will help you vastly in your career. It has helped mine (Donn) a ton.
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn answers a listener's question. The listener wanted to know how to choose what to learn next in Tech.
Donn provides 6 tips (actually 7 if you count a hidden one) on how to pick what technology to learn next. He provides a simple framework that will help you check whether you should pursue a particular technology or not.
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks with Philipp Lackner about growing an online presence within the Software Industry with Instagram and YouTube.
You'll learn how Philipp went from 0 to over 80,000 followers on Instagram. This was done all organically by posting valuable content every single day to his feed.
You'll also learn how he uses YouTube (as well as Instagram) as a marketing channel for his own course products that he sells via his site.
We wrap up by talking about content strategy, what tools are used, captions and hashtags. This episode is chock full of great info if you're learning how to grow your following online.
@donnfelker and donnfelker (on Instagram)
Freelancing for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode Donn talks about why you need to learn React (or Flutter) - so you can truly understand the Unidirectional data flow pattern in a framework that was built for that purpose alone.
Working with other frameworks which bolt on a custom unidirectional data flow is often hard to understand. When you work with React and learn how it works, the concept of Unidirectional data flow starts to make much more sense as that is the default way to implement UI's in technologies like React (and Flutter).
This exposes you to the pattern and helps you understand it. In turn, this will help you become a better developer.
Unidirectional Data flow Image
How to learn React:
How to Learn Flutter
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks with Mitch Tabian about Kotlin Multiplatform Mobile, also known as KMM.
Mitch explains what KMM is, why he decided to use it, and how it works from a developer's perspective. The goal was to build an app and develop both the iOS and Android versions. Mitch talks about his experience in building a KMM app. We cover the pros and cons, what worked vs what did not, and his advice on using KMM going forward. Mitch also shares content about how to build native components in Jetpack Compose and SwiftUI as well as architectures used in his KMM project.
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn talks with Glenn Leifheit from Microsoft about a concept known as "Secure Development Lifecycle". Glenn is a Senior Security Program Manager at Microsoft.
Glenn explains to you what the secure development lifecycle is, how it works and how you can implement something like this in your company. He also shares the top tips you can implement in order to get the quickest benefit of the Secure Development Lifecycle
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
This is the original story of how Uber was built ... this is a fascinating story. You don't want to miss this. Donn talks to Jason Roberts. Jason was chosen to be Uber's CTO when the company was in its infancy (but didn't accept the offer). Jason shares the story of developing the code that eventually ran Uber from a couple of cars to a highly distributed system with an impressive amount of rides.
We talk about building what is needed when it's needed, the tools that he chose to build Uber's platform on. Early startup learnings, and how Uber originally ran on PHP before he chose to move it to Node.js.
Jason shares his story of how he met Travis (Uber's CEO who took it from a small company to a huge international corporation), how they built the systems, and team and much more. You'll learn how networking, working on interesting things, and seizing the moment and luck played into him landing his role at Uber.
Finally, we wrap up by chatting a bit about how being a generalist in an early-stage startup is beneficial (vs being a specialist).
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Consulting for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.
In this episode, Donn outlines how you can optimize your home office so that you look, sound, and perform the best that you can. From audio to video, to your body, and everything beyond, it's covered here.
In this episode, Donn outlines how you can optimize your home office so that you look, sound, and perform the best that you can. From audio to video, to your body, and everything beyond, it's covered here.
Donn talks about everything you can do to improve your home office. From microphones, lighting, and webcams for your video calls to chairs, standing desks, and more. This episode has all the links below for all the products discussed.
Take even 20% of the recommendations and apply them to your home office and you'll see a drastic difference in your productivity and happiness in your home office.
Microphones
Boom arms for Mics
Webcams
Docking Hub
Lighting
Headphones
JVC Xtreme-Xplosivs Wired Earbuds - Donn's Go to
Sony MDR-7506 Professional Headphone
No, I don't use Bluetooth headsets at work, though many do. If they work for you, you might want to check out the Audio Technica ATHM50XBT's or the Bose Quiet Comfort 35's
Chairs
Standing Desk
Anti-Fatigue Mats
Monitor and Monitor Arms
Keyboard
Mouse
Air Quality
Focus Music
Mobility, Desk Ergo, and Back Pain Resources
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
Consulting for Mobile Developers (Donn's YouTube)
kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal
Disclaimer: Many of the links are affiliate links. They help suppor the production of Fragmented. Thank you for your support.
In this episode, Donn talks with DevOps expert, Will Button about everything DevOps-related. If you're ever wondered how and what DevOps is, then listen in.
Will walks you through the definition of DevOps and how it's used in a company. You'll learn the 20% of DevOps you should know that will get you 80% of the benefit. You'll also learn about a bunch of automation technology that will help you and your team level up your environments so that you can become super efficient in your day-to-day engineering activities.
In this episode, Donn talks about the best way to learn a new technology from the ground up. Want to learn something new? This episode is for you.
You'll learn Donn's proven 5-step methodology for learning new technology. This is the same method Donn has used for over 2 decades of learning new technology. We hope it helps you.
In this episode, Donn talks about the best way to learn a new technology from the ground up. Want to learn something new? This episode is for you.
You'll learn Donn's proven 5-step methodology for learning new technology. This is the same method Donn has used for over 2 decades of learning new technology. We hope it helps you.
The 5 Steps:
Watch the entire course here, for free
In this episode, Donn returns for a solo episode to talk about his thoughts on Quality over Quantity and why it's important to software development and productivity in general.
In this episode, we talk to acclaimed Android developer Joaquim Verges. He recently embarked on a journey of making is laptop not burn like a furnace when using Android Studio. He landed up on this unknown effort by Jetbrains called Projector and seems to have found programmer Nirvana.
Listen to his adventures.
Anvil is a Kotlin compiler plugin that makes your life a tad bit easier when using Dagger 2. In this episode we talk to Ralf Wondratschek from Square who created the library and open sourced it for all of us.
After touching on some of the basics, Ralf dives into the thinking behind Anvil and how it evolved into the tool it is today. It's filled with nuggets of wisdom especially if your app uses Dagger for Dependency Injection.
Enjoy!
In episode 1 of Fragmented we talked about Testing. 200 episodes in, we decided it's a good time to do a state of the union for mobile testing. We talk with Valera Zakharov who's a Staff Engineer at Slack and considered one of the experts in the field of mobile testing. Hope you enjoy this one!
In our 200th episode, we talk about Serverless Programming.
What is it? What's an example of a service I could build with Serverless Programming? What are the advantages or disadvantages? We talk about it all in this episode.
Also, 🙏 for being listeners. We've stuck together for 200 of these. Kaushik & Donn are incredibly grateful to have you folks as listeners.
A tweet from a famous tech journalist about Android vs iOS spurs a storm. In this episode, Donn and Kaushik given their honest thoughts on iOS vs Android; and being developers for the platform.
We're back and Fragmented is going Indie again. A quick episode on the future of Fragmented.
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.
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.
Objects which are no longer referenced can be evicted with git prune; though this is a low-level operation which is often called from git gc. By default it will not remove commits newer than 2 weeks old, and of course the commits that are reachable from that; so provided the branch (or tag) deleted has recent commits, it will stay around in the git repository for up two a fortnight afterwards.
Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.
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
for Android.
This was a treat and inspiring episode! Listen on:
Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.
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.
Learn and practice Android development from inside your browser. Visit Educative.io/fragmented to get 10% off.
What are Polyglot programmers, should you be one? Listen to this episode and find out!
Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.
Well, the world took a crazy turn and everyone's working from home now. How do
you work from home? An experienced developer who's done this before talks to a
newbie and discuss their thoughts.
git commit --allow-empty -m "todo: listen to fragmented" -m "send KG & DF tweet"
Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.
title : 192: What is your backup strategy? 📼
permalink : 192
In this episode, we talk about what a good backup strategy looks like and the
different kinds of data you should be backing up.
Stay safe and think about your backup strategies.
KG's primary Mac:
rsync script that KG uses:
This mirrors both drives defensively (-n is dry run)
rsync --partial --progress --archive --update \
--verbose\
--human-readable\
--exclude='$RECYCLE.BIN' --exclude='$Recycle.Bin' --exclude='.AppleDB' \
--exclude='.AppleDesktop' --exclude='.AppleDouble' --exclude='.com.apple.timemachine.supported'\
--exclude='.dbfseventsd' --exclude='.DocumentRevisions-V100*' --exclude='.DS_Store'\
--exclude='.fseventsd' --exclude='.PKInstallSandboxManager' --exclude='.Spotlight*'\
--exclude='.SymAV*' --exclude='.symSchedScanLockxz' --exclude='.TemporaryItems'\
--exclude='.Trash*' --exclude='.vol' --exclude='.VolumeIcon.icns' --exclude='Desktop DB'\
--exclude='Desktop DF' --exclude='hiberfil.sys' --exclude='lost+found'\
--exclude='Network Trash Folder' --exclude='pagefile.sys' --exclude='Recycled'\
--exclude='RECYCLER' --exclude='System Volume Information' --exclude='Temporary Items' --exclude='Thumbs.db'\
-n\
/Volumes/xhd_strg/ /Volumes/xhd_strg_bkp
Check out the new Square YouTube channel for developers. Square has SDKs and APIs to make payments and run a business.
Today we talk about logging. When to log, how to log, what to log - our thoughts on the subject.
Check out the new Square YouTube channel for developers. Square has SDKs and APIs to make payments and run a business.
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, Donn and Kaushik talk about some changes coming down the pipe for the podcast and what it means in the long run.
Want to know what the changes are? Well, you're going to have to listen to the show... click play and listen away.
Once again, thank you all for joining us on this journey, it's been a fun and wild one.
In this decompress episode, Donn and KG talk about how their 2019 went. It goes from Dagger talk to Kotlin talk to Kotlin Conf talk. Give it a listen and enjoy!
Square has SDKs and APIs to make payments and run a business. Even better, Square has a new YouTube channel for developers! Check out Square's new YouTube Channel for Developers at youtube.com/squaredev and let them know you heard about it from us.
In this episode, Kaushik tries to talk through this question.
Thanks to friends of the show Jeroen, Yigit and a bunch of others who ran through some ideas on this one.
Square has SDKs and APIs to make payments and run a business. Even better, Square has a new YouTube channel for developers! Check out Square's new YouTube Channel for Developers at youtube.com/squaredev and let them know you heard about it from us.
How do you know what to test when you don't even know how to write the code that you need to test? This is a paradox that many developers find themselves in daily.
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.
Square has SDKs and APIs to make payments and run a business. Even better, Square has a new YouTube channel for developers! Check out Square's new YouTube Channel for Developers at youtube.com/squaredev and let them know you heard about it from us.
Learn UX/UI design flatironschool.com/fragmented in 24 weeks and discover our global community on campus or online and go back to school with Flatiron School! flatironschool.com/fragmented!
Change careers with confidence with 1:1 support from our dedicated Career Coaches and a money-back guarantee. Complete details at flatironschool.com/terms.
See you in class!
App Modularization has plenty of benefits and a lot of Android devs today are starting to modularize their android app.
A common problem though that most folks will start to run into is - how do you manage your database objects in these modules? do you create a single module with all your database dependencies (modularize by layer), do you do the right thing and modularize by feature so each module has it's own database file etc.?
In this episode Kaushik grapples with that question and tries to come up with an answer.
Vettery is an online hiring marketplace that is changing the way people hire and get hired. Make a free profile, name your salary, and connect with hiring managers from top employers today.
Listeners of Fragmented get a $300 bonus if you accept a job through Vettery! Sign up at vettery.com/fragmented
--
Learn UX/UI design flatironschool.com/fragmented in 24 weeks and discover our global community on campus or online and go back to school with Flatiron School! flatironschool.com/fragmented!
Change careers with confidence with 1:1 support from our dedicated Career Coaches and a money-back guarantee. Complete details at flatironschool.com/terms.
See you in class!
In the world of Functional programming where pure functions don't encourage side-effects, how does on actually do any IO?
So in this brave new world where everyone is adopting more FP principles, do we just stop doing database operations? Listen to this episode to find out.
Learn UX/UI design flatironschool.com/fragmented in 24 weeks and discover our global community on campus or online and go back to school with Flatiron School! flatironschool.com/fragmented!
Change careers with confidence with 1:1 support from our dedicated Career Coaches and a money-back guarantee. Complete details at flatironschool.com/terms.
See you in class!
Vettery is an online hiring marketplace that is changing the way people hire and get hired. Make a free profile, name your salary, and connect with hiring managers from top employers today.
Listeners of Fragmented get a $300 bonus if you accept a job through Vettery! Sign up at vettery.com/fragmented
In this episode of Fragmented, Donn talks about when it's appropriate to comment your code.
Donn then dives into the types of code comments, when you might want to comment vs when you might not want to (depending upon your consumer) and then gets into how he decides to comment his code with a simple two-step process.
Enjoy!
Build amazing apps in Java, Kotlin or whatever tech you prefer and use Bitrise to automate your Android integration, build, test and deploy process quickly and easily.
Sign up for an exquisite pair of Bitrise Branded Socks at https://go.bitrise.io/fragmented
Learn UX/UI design flatironschool.com/fragmented in 24 weeks and discover our global community on campus or online and go back to school with Flatiron School! flatironschool.com/fragmented!
Change careers with confidence with 1:1 support from our dedicated Career Coaches and a money-back guarantee. Complete details at flatironschool.com/terms.
See you in class!
In this episode of Fragmented, Kaush breaks down how he begins creating and writing technical talks, using a talk he's about to give at the Mobilization Conference.
Enjoy!
Vettery is an online hiring marketplace that is changing the way people hire and get hired. Make a free profile, name your salary, and connect with hiring managers from top employers today.
Listeners of Fragmented get a $300 bonus if you accept a job through Vettery! Sign up at vettery.com/fragmented
Build amazing apps in Java, Kotlin or whatever tech you prefer and use Bitrise to automate your Android integration, build, test and deploy process quickly and easily.
Sign up for an exquisite pair of Bitrise Branded Socks at https://go.bitrise.io/fragmented
As Android developers we know Java and now Kotlin. But to become even more seasoned developers, learning newer languages can be a level booster.
The list can go on and on, especially if you've been in the industry awhile. So, when does it make sense for you to learn a new language?
When should you learn a new language? When does it make sense? How do you do it?
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.
Build amazing apps in Java, Kotlin or whatever tech you prefer and use Bitrise to automate your Android integration, build, test and deploy process quickly and easily.
Sign up for an exquisite pair of Bitrise Branded Socks at https://go.bitrise.io/fragmented
How do you know if some code is over-engineered?
What does that even look like?
How do you know if you're over-engineering the code that you're writing?
What if you recently started at a new company, how do you know if the code you're working with is over-engineered?
In this episode, Kaushik and Donn go back and forth on this topic ...
This episode is sponsored by Instabug -
Understand How Your App is Doing with Real-Time Contextual Insights From Your Users
Kotlin isn't a magic bullet that prevents NullPointerExceptions.
Not at all.
What Kotlin does do is force you to think about how you want to handle your nulls. through Kotlin forcing you to think this through, the hope is that you'll avoid NullPointerExceptions. The only problem is, Kotlin has the !! operator, also known as the "Not Null Assertion Operator". This operator basically says "Hey Kotlin, trust me, I'm a pro, I know what I'm doing ... I KNOW THIS WON'T BE NULL".
This... is a code smell.
In this episode, Donn walks through why Kotlin's Not Null Assertion Operator (!!) is a code smell and what you can do to alleviate it.
Build amazing apps in Java, Kotlin or whatever tech you prefer and use Bitrise to automate your Android integration, build, test and deploy process quickly and easily. Sign up for an exquisite pair of Bitrise Branded Socks, here! https://go.bitrise.io/fragmented
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.
He provides caveats to why you might want to use one language over another and some of the trade offs of Java and Kotlin and how they operate together.
If you're wrestling with this question, this is the show for you ...
Build amazing apps in Java, Kotlin or whatever tech you prefer and use Bitrise to automate your Android integration, build, test and deploy process quickly and easily. Sign up for an exquisite pair of Bitrise Branded Socks, here! https://go.bitrise.io/fragmented
Kaushik is back in this weeks podcast. 🎉
Donn and Kaushik talk about testing RxJava streams with a Kotlin extension method and how and when to test various scenarios.
Donn talks about his thoughs on the Testing Pyramid and why he think's its incorrect and how you can help shift your thinking in regards to it. They then talk about IDE themes and how the theme can help you with your day to day development and more.
They wrap up with some talk about devleoping on Mac's vs Windows and Linux.
We hope you enjoy ...
This week Donn talks about what pattern you should use when developing your application. Is it MVP? MVVM? Mabye MVI? Perhaps it's something else. Find out in this episode.
We hope you enjoy ...
In this episode Donn and Kaushik sit down with Instacart Engineer Colin White to discuss a new image library he has created called Coil.
Coil is a Kotlin-first image library that focuses on ease of use, simplicity and extensibility. In this episode we ask him the question you're probably wondering ... "Why create an image library, isn't this a solved problem already?" and then move onto the details of how the library works, and what it offers developers.
From Donn's perspective - It's an interesting library and gives you what you need with minimal footprint but offers you the extensibility that you'd want in the future. Its a good balance of "just enough" and "I might need this".
Enjoy
This week Donn and Kaushik talk to Leland Richardson from the Android team at Google about Jetpack Compose.
Jetpack Compose is declarative component-based UI runtime for Android. With compose you can build your UI with functions in Kotlin to easily "compose" what your UI would look like.
We dive deep in this episode. We talk about the background and influence React had on the project, we dive deep into some of the decisions made regarding the library and much much more...
We hope you enjoy ...
In this episode, Donn talks about public speaking and how it can help you grow your career.
He dives in by telling a story of his first speaking engagement and how he was riddled with fear, insecurity, doubt and anxiety. He then talks about why speaking can help you grow your career and life leaps and bounds. He wraps up with possible things you can speak about when starting out as well as where you can get your break into the speaking circuit.
This episode is sponsored by Instabug.
Squash bugs 🐞 in less than a minute with Instabug!
Special offer for all listeners, go to instabug.com/fragmented
Signup for free, install the SDK, and you will get Instabug's brand new t-shirt!
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.
Enjoy.
Get ahold of Marcel:
In this episode, Donn continues his talks about Kotlin Lambda Expressions. He explains how you can use lambda expressions as function parameters and as return types for functions.
This is a very dense episode - if you get lost look at the code snippets below or view on them on fragmentedpodcast.com
class LogReader {
fun processFile(file: File, processLine: (String) -> Unit = {}) {
file.forEachLine {
println("Number of Chars: ${it.length}")
processLine(it)
println("Line Done Processing")
}
}
fun processFileWithHandlers(file: File, logHandler: LogHandler) {
file.forEachLine {
println("Start of Processing")
logHandler.handleLine().forEach { handler -> handler(it) }
println("Line Done Processing")
}
}
}
interface LogHandler {
fun handleLine(): List<(String) -> Unit>
}
val reader = LogReader()
val textFile = File("/Users/donnfelker/scratch/lorem.txt")
// Process with single lambda
reader.processFile(textFile, { println("First 10 Chars: ${it.substring(0..9)}") })
val logHandler = object : LogHandler {
override fun handleLine(): List<(String) -> Unit> {
return listOf<(String) -> Unit>(
{ line -> println("${line.substring(0, 1)}") },
{ line -> println("${line.substring(2, 4)}") },
{ line -> println("${line.substring(5, 10)}") }
)
}
}
// Process with multipe handlers via the logHandler
reader.processFileWithHandlers(textFile, logHandler)
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.
Enjoy.
Get ahold of Joe:
Kaushik decides to hit record on a skype call he has with friend of the show Jesse Wilson. They start off by discussing building features across different platforms today. Jesse talks about a clever mechanism of using javascript to change logic on the fly across the Square cash app, that's worked out pretty well. They then go on to discussing how one can try and converge across platforms in terms of business logic, architecture, naming etc. They then wind it down by discussing the state of Flutter, Kotlin multiplatform and reaching the promised land.
Enjoy.
Instabug completely takes care of your beta testing and user feedback process so you can debug, fix, and improve your app quality faster. They're giving Fragmented listeners a special bonus when you go to instabug.com/fragmented - Signup for free, install the SDK, and you will get Instabug's brand new t-shirt
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. This is part 1 of a multi-part series on Lambda Expressions in Kotlin.
The basic syntax of a lambda expression:
val myLambda : Type = { argumentList -> codeBody }
The codeBody is the only section that is not optional.
Double lambda expression (doubles an integer) with type inference
val double = { number: Int -> number * 2 }
val result = double(4)
// result = 8 now
Double string multi-line lambda with type inference.
val doubleString = { number: Int ->
// codebody
val doubleResult = number * 2
doubleResult.toString()
// Kotlin knows this will return a string
}
Type declaration in a lambda
val myLambda: (String, Int) -> String = { str, int ->
"$str - ${int.toString()}" // "Donn - 32"
}
val result = myLambda("Donn", 32)
// result = "Donn - 32"
Preview of next week … passing a lambda to a function
fun doWork(name: String, favoriteNumber: Int, someLambda: (String, Int) -> String) {
// Do some processing, this is a contrived example
val repeatedString = "$name$name"
val result = someLambda(repeatedString, favoriteNumber)
println(result)
}
// Usage
doWork("Donn", 32) { str, int ->
val someNewValue = "$str is my parameter and so is $int"
someNewValue.length.toString() // this is returned
}
// '37' is printed via println
// Or use it like this, the lambda code body is what can change, this is where the power is at
doWork("Donn", 32) { name, count ->
var result = ""
for(i in 1..count) { result += "$name" }
result // this is returned
}
// loops over and concatinates "Donn" until the favorite number (aka count) is met.
// Output looks like: "DonnDonnDonnDonnDonnDonn..." and so on...
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. You'll learn all about Flank, how it works and how to get started in this episode.
In this show, Donn talks with Dan Jarvis about Machine Learning on Android with ML Kit and Tensor flow.
They dive deep into what ML (Machine Learning) is, what you need to know as a developer and how to apply those things to build ML applications on Android.
They tal about what you can do on Android in regards to ML, model training and running the models on the device. You may be wondering if you should include the model in your app or if it should live on a server, that's discused as well and the reasons for it.
They wrap up the show with some examples of what you could build and some great resources to get you started.
Enjoy
With the release of Android Q we now have the settings panel and all its glory. This panel, while most likely overlooked as a minor feature, is actually a diamond in the rough.
Why?
Simply because it's going to lower the abandonment rate of your app and increase the engagement of your app at the same time. Donn talks about this in depth in this episode.
Enjoy.
In this show, Donn and Kaushik talk to Cameron Ketcham and Connie Shi from the Android Material Components team at Google.
The Android Material Components are material designed components that you can easily drop into your application with just a few small tweaks. You get a bunch of fully built out material components, from the Android Material team at Google. From Chips, to Cards, to Buttons and much much more ... the goal is to enable you to build your application faster when using these components.
Donn and Kaushik talk to Cameraon and Connie about the components and how to use them in this episode.
Enjoy
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.
Enjoy.
In this episode, Donn talks about Item #20 in the Effective Java book (third series) by Joshua Bloch. He discusses why you should think about using interfaces over abstract classes, how they can add mixin like behavior to retrofit existing classes with new behavior, default methods, skeleton implementations and more.
Enjoy.
With the release of Android Q we now have the settings panel and all its glory. This panel, while most likely overlooked as a minor feature, is actually a diamond in the rough.
Why?
Simply because it's going to lower the abandonment rate of your app and increase the engagement of your app at the same time. Donn talks about this in depth in this episode.
Enjoy.
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.
// 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.
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.
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.
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.
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.
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.
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!")
}
In this quick fragment, Kaushik talks about the new Kotlin 1.3 experimental feature "inline classes" and how it helps with Type driven design.
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!
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
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.
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()
}
How to test
Keep it simple simple
@fragmentedcast or our Youtube channel
@donnfelker and donnfelker (on Instagram)
@kaushikgopal and kaushikgopal (on Instagram)
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.
@_mattlogan
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.
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
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.
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.
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.
// slick kotlin usage
override fun onCreate(savedInstanceState: Bundle?) = super.onCreate(savedInstanceState).also {
setContentView(R.layout.activity_something)
// ...
}
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.
import android.view.View
fun View.gone() {
this.visibility = View.GONE
}
fun View.visible() {
this.visibility = View.VISIBLE
}
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.
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.
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.
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.
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.
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
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.
After two years, 220 screens, and 120,000 lines of javascript, Gabriel tells us why they're moving away from React Native.
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!
Listen on:
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!
In today's episode, we sit down with Caren Chang from June to talk about audio engineering for Android. More specifically, how stoves can use audio to send notifications.
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!)
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!
If you're looking for a solution to just hide system bar (and not the navigation bar) go to our main shownotes page to see the code.
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 1 of this 2 part series, Eugenio helps us undersatnd what flutter is, why it was created, how it works, some really cool features with Flutter and why an AndroiDev 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 go back and listen you'll find it here: 118: Flutter and cross platform development with GDE Eugenio Marletti - Part 1)
https://play.google.com/store/apps/details?id=io.flutter.gallery&hl=en
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 AndroiDev 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.
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. They discuss build performance with incremental compilation, isolation of features, code ownership and how to handle cross-cutting concerns like persistence and networking.
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.
Look at the official shownotes page for some code snippets
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!
Code snippet for a ViewModelFactory:
class UserVMFactory(
val user: MyUser
) : ViewModelProvider.Factory {
override fun create(modelClass: Class): T {
return when {
modelClass.isAssignableFrom(UserVM::class.java) ->
UserVM(user) as T
else -> throw IllegalArgumentException("Unknown ViewModel class")
}
}
}
In this episode, we talk to Patrick Nikoletich from Microsofts App Center team. We explore the intricacies of the Continuous Integration server system on the App Center platform. From what App Center is, all the way down into the weeds to how to get your app building on App Center in a few short steps. We also get into the nitty gritty details around how you can customize your build with build hooks, install utilities and binaries, work with a command line interface, shell scripts, the App Center API much much more. This episode shows a new side of Microsoft that we have not seen in a long time and its a breath of fresh air.
Also, view the show notes at http://fragmentedpodcast.com/episodes/114/
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.
Check them out today at mapbox.com/android
In this mini-fragment episode, Donn talks about Item #5 of the Effective Java (Third Edition) book - Prefer Dependency Injection to Hardwiring Resources.
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. This is the case with Item #5. We did Item #5 previously for v2 of the book, but v3 introduced a new Item 5 (and bumped the previous Item 5 up to 6).
TLDR; Item #5 is new in the third edition of the Effective Java book. So listen closely. :)
Check them out today at mapbox.com/android
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.
Listen on:
Check them out today at mapbox.com/android
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?
Eager evaluation:
val lst = listOf(1, 2)
val lstMapped: List = lst.map { print("$it "); it * it }
print("before sum ")
val sum = lstMapped.sum()
// prints "1 2 before sum"
Lazy evaluation:
val seq = sequenceOf(1, 2)
val seqMapped: Sequence = seq.map { print("$it "); it * it }
print("before sum ")
val sum = seqMapped.sum()
// prints "before sum 1 2"
Source stackoverflow.com answer
Notice that at each chain operation, a new temporary list is created:
data class Person(val name: String, val age: Int)
fun main(args: Array) {
val people =
listOf(Person("Chris Martin", 31),
Person("Will Champion", 32),
Person("Jonny Buckland", 33),
Person("Guy Berryman", 34),
Person("Mhris Cartin", 30))
println(people
.filter { it.age > 30 } // new temp. list
.map {
it.name.split(" ").map {it[0]}.joinToString("")
} // new temp. list
.map { it.toUpperCase() }) // new temp. list
}
Using a sequence:
println(people
.asSequence() // convert to sequence
.filter { it.age > 30 } // lazy eval (intermediate op)
.map {
it.name.split(" ").map {it[0]}.joinToString("")
} // lazy eval (intermediate op)
.map { it.toUpperCase() } // lazy eval (intermediate op)
.toList() // terminal operation
)
Without a terminal operation, Sequences won't print anything:
val seq = sequenceOf(1, 2, 3)
println(seq) // prints address
println(seq.toList()) // [1, 2, 3]
You can't pick an index from a sequence:
println(seq[0]) // throws ERROR "No get method providing array access"
println(seq.toList()[0]) // 1
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.
Listen on!
Check them out today at mapbox.com/android
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.
Thanks to Buddybuild for sponsoring this episode of Fragmented! Ship apps faster with BuddyBuild 🚀 Give them a try for free at fragmentedpodcast.com/buddybuild.
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:
when
problems: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!
In this episode of Fragmented, we talk to Hannes Dorfmann about using the Model View Intent (MVI) pattern for Android. The MVI pattern was sparked through cycle.js (for javascript). Hannes took this pattern and tried to adapt it to Android. This pattern has gained a lot of traction and interest in the Android community.
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!
Hannes series on MVI for Android (must read!) :
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.
Thanks to Buddybuild for sponsoring this episode of Fragmented! Ship apps faster with BuddyBuild 🚀 Give them a try for free at fragmentedpodcast.com/buddybuild.
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!
Detailed shownotes at fragmentedpodcast.com
#Sponsors
Thanks to Buddybuild for sponsoring this episode of Fragmented! Ship apps faster with BuddyBuild 🚀 Give them a try for free at fragmentedpodcast.com/buddybuild
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.
.. and many many more
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.
In this episode, Donn is at Droidcon NYC 2017. He sits down to chat with Dan Kim about Kotlin, Gabriel Peal about React Native, Scott Alexander-Bown about Android Security, Jose Alcérreca about the Android Architecture Blueprints and Kevin Galligan about the history of Droidcon NYC and his new library - Doppl.
In this episode Florina returns to talk to us about Google's recently announced paging library!
The paging library is a powerful take on implementing paging functionality in general, not necessarily linked to a paritcular technology or library. Florina breaks down the different components and explains what specific function each of them play.
We start off with DataSources, talk about when one would want to use "Tiled" or "Keyed" data sources, and then talk about making them work with RecyclerViews (which is really what 99% of us eventually want). Florina also explains the role of PagedLists, PagedListAdapters and so much more.
If you ever wanted to get an overarching veiw of Google's first take on implementing the paging library, this is a great starting point. Listen on so you can understand, try it out and then give feedback to Google, to participate in the making of this new library.
In this episode, Romain Guy from Google gives us the lowdown on a bunch of Hardware related stuff.
He starts off by explaining how the refresh rates on screens matter, what it would mean to have something like a 120Hz display for Android screens, how things like V-Sync and double buffering work, using different screen technologies, how much work is done by the CPU and GPU and so much more.
This was one of those episodes where we tried so hard to hold back for fear of recording for another 2 more hours. Romain is clearly one of the most knowledgable and interesting engineers to talk to today in the hardware land of Android. What a blast!
In this episode, we talk to Florina from Google about the recently released Database library Room. Room was introduced as part of the Android Architecture components and has been picking up a lot of steam in the community.
Room focuses on being a beautiful api layer to Sqlite. Florina explains to us how we can use Room to create a database, creating entities and how them map to tables, using DAOs to access data and even observe them
Listen on for the details!
A: There's only 1 reflection call (at the time of finding the database implementation, when you call Room.builder). Most of the other stuff is generated code (with compile time verification!).
A: Yes, Room was designed to provide compile-time checks.
Yes ... for all practical purposes. See this post for times when it doesn't.
Nope, at the moment, adb is your friend. Use that to download the file manually from your device.
In this episode of Fragmented, Donn talks about a common problem almost all software engineers face in their career - Design Patternitis.
So, you've read the books on design patterns and now you're applying them everywhere. Just because some code can be put into a pattern doesn't mean you should. Or should you? How can you apply them when needed? Donn shares 5 tips with you that you can use to help combat Design Patternitis.
This episode is made possible by Kobiton - Fragmented.
They're giving listeners a 15-day FREE trial with no credit card required! 🙌
Give them a try at Kobiton.com/fragmented and let them know we sent you.
In this episode of Fragmented, our friend and RxJava paragon of the Android - Dan Lew, returns for a record 3 and 1/2 time.
We've been using RxJava over the years now and have even talked to Dan about it in previous episodes.
How has our understanding of Rx use in Android changed over the years? We know some of the super standard usecases for RxJava in AndroidDev. But the important question to be asking is: when are the times we "shouldn't" be using RxJava? Are we over-complicating our code by shoe-horning it in different places. Concepts like functional programming and reactive state management have picked up steam again, how has this influenced our RxJava use?
This episode is made possible by Kobiton - Fragmented.
They're giving listeners a 15 day FREE trial with no credit card required! 🙌
Give them a try at Kobiton.com/fragmented and let them know we sent you.
In this second episode of our learning Kotlin series, we talk about Kotlin’s support for static members or … lack thereof. Kotlin as a language was designed so that there’s no such thing as a “static member” in a class but there are times when having static members can be useful.
So what do we do in those cases? do we just avoid static members? are there better alternatives? what are the costs with some of these approaches?
Listen on to find out more!
Look at the fragmentedpodcast.com for some code snippets
In this decompress episode, DF and KG kick it off with a brief discussion of the highlights from the recent reddit AMA that the Android Engineering folk conducted. What were the interesting things they learnt or were surprised by etc.? They then go on to briefly discuss two topics they've always chatted about (off-air) packaging by feature (not layer) and most recent thoughts on testing. Listen on to find out more:
At I/O '16 Google announced the super cool new feature Instant Apps. At IO'17 we started to see real world examples and third parties pull off this feature. In this episode, we talk to GDE Zarah Dominguez who's company "Domain" was one of the partners for this program.
What is the Instant Apps feature? What are some usecases where this comes in handy? How does it actually work internally? What does it take for a developer to implement this feature in their own app? Listen on to find out!
In this mini Fragment, KG talks about his journey learning Kotlin as a newb. Given that Kotlin is most likely going to be the de-facto language for most developers, it makes sense to deepen our understanding of the language (as we have strived with Java over the years).
"Properties" in Kotlin are a first class language feature. But what does that actually mean? What are the nifty features we get with properties? How are these resolved from a Java class when there's potential a name clash? What are some other gotchas and learnings from using properties? Listen on to find out:
In this episode of Fragmented we talk to our friend Piwai from Square.
Piwai's a pro at testing and breaking apps (he built LeakCanary - so not terribly unexpected). He teaches us some strategies on debugging app crashes and briefs us on this concept he calls "offensive programming" which has helped him a lot with his Android development.
It's good stuff and we hope you enjoy the show.
In this mini-Fragment episode, Donn talks about Item #16 of the Effective Java series - Favor Composition over Inheritance. You'll learn why using inheritance is not always a great idea and how you can use composition in place of it to make your code more anti-fragile, resilient and clean.
In this mini-Fragment episode, Donn talks about Working Effectively with Legacy Code. He doesn't just talk about the book itself, but he talks about how to approach a legacy code base and start delivering value as soon as possible, yet with confidence. If you've recently started a new job, moved to a new team, started working on an existing code base, then this episode is bound to help you.
In this episode, we talk to Dan Kim about Kotlin. Dan is an Android developer at the company Basecamp and has some great Kotlin posts on the company's famous blog Signal Vs Noise. He was pretty early, on the Kotlin train and has been working with the new language for quite sometime now.
Instead of trying to go into every single detail about Kotlin, the nuances of the language, it's syntax etc. we take a more general approach and talk about starting out on Kotlin, how does on go about migrating an Android codebase to Kotlin, what are things we should watch out for when using the language. This and a whole lot more!
This was truly one of the most memorable IOs Google has ever conducted. In keeping with tradition, Donn and Kaushik talk with a bunch of awesome #AndroidDev and get their opinions/thoughts on IO and Android in general. As always, these are super fun episodes.
RxJava is considered a functional reactive programming library. But the paradigms of functional programming have existed for a very long time. In this episode we talk to Android GDE Anup Cowkur, about his experience experimenting with "pure" functional languages. He breaks down some of the basic concepts, explaining the different terms along the way.
It's pretty awesome, when you use a third party library, love using it and finally get to talk to the person who actually helped build it. In this episode, we talk to Gabriel Peal. Besides having quite the illustrious career in Android development, Gabriel now works at Airbnb and helped build Lottie - an animation library.
What is Lottie, how do you use Lottie? why is so Lottie so cool? how does it actually work under the hood? Listen to this episode and find out.
It is the world of the Internet of Things (IoT) and Google's answer to that is the Android Things. In this episode, we talk to the amazing Rebecca Franks. She explains how Android things works and talks of some of the adventures and examples she's embarked on with Android Things. If you've had that hobby Raspberry Pi or Arduino board lying around and not sure how to put it to use, this episode's for you.
In this episode Donn and Kaushik recommend 10 books on Software programming that they think every Android developer would greatly benefit from reading. These are books that helped them become better programmers and have had the most impact in their daily lives as Android developers.
Have you ever thought about building VR (Virtual Reality) apps? Where do you start? How difficult is it? How similar is to Android development? Do you still code in Java? In this episode, Etienne Caron AndroidDev extraordinaire and expert VR hobbyist gets us up to speed on what you need to know, to start creating VR apps.
In this episode, Donn sits down with fellow Android GDE, Michael Bailey to cover 10 testing strategies to help you get your application under test and to make sure your testing environment is top notch. They start off with the basics and then progress further down the testing rabbit hole eventually covering topics like cloud-based testing labs, hermetic testing and much much more. This episode will help provide you with a blueprint of how to get your Android app under test and get you to a level where you can develop your app with confidence.
Today on Fragmented, we talk to Eyal Lezmy. Eyal works as an Android developer for Genymotion. While working for Genymotion he had to deal with the Android Debug Bridge a whole bunch, so in this episode we dive into the details of ADB, some super slick commands and in general just get a better understanding of this tool we use every single day.
adb shell input text "keyboard text"
adb exec-out run-as package.name cat databases/file > file
adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file"
In this episode Kaushik talks to Kristin of Big Nerd Ranch. You would think that the Android lifecycle is pretty standard and basic stuff. But as Kristin begins to unpack the nuances of the Android lifecycle, we learn there's a world of details that's easy to miss. Listen on, to get an ironclad grip on the Activity lifecycle.
In this mini-Fragment episode, Donn talks about Item #15 of the Effective Java series - Minimize Mutability. You'll learn what mutable and immutable objects are, how and why immutability is a good thing and how you can implement it.
It's almost a given these days that most phones will have Fingerprint APIs. But how does the hardware actually work? How does the Software work? How does an Android developer make use of these APIs? Ben Oberkfell breaks it down for us in great detail. Listen on!
In this mini-Fragment episode, Donn talks about Item #14 of the Effective Java series - In public classes, use accessor methods, not public fields. You'll learn why it's important to use accessors in your public classes and some caveats to this rule.
For example, you may decide that the class is a private inner class or package private. Donn digs into the details in this week's episode. This is a glimpse of what's to come in Item #15, which is coming soon...
In this episode, we talk to Android developer Andrew Orobator. He gives us the lowdown on the new feature App Shortcuts that was introduced in Android. We talk about static and dynamic shortcuts, use cases for other shortcuts and how to implement them for your app. We also cover what the feature lacks and things to watch out for, while implementing them. Listen on!
Fragmented also has spanking new music from the super talented Blueprint: you can find out more at [email protected].
In this episode we change the tune and talk with Raveesh Bhalla; Raveesh is a GDE for design specialized in UI/UX.
He starts off by helping us get a good understanding of what UI/UX involves. He then shares his experiences and learnings from having conducted extensive research specifically for Android. What are some good patterns today, what are anti-patterns, what should we watch out for. Listen on to find out more!
BuddyBuild is a continuous integration and continuous deployment system built specifically for mobile developers. Thousands of development teams love BuddyBuild because it's the fastest way to build, distribute and gather feedback for their apps. Give it a try for FREE at buddybuild.com
In this episode Donn and Kaushik have an honest discussion about Realm (a client side database). Donn has worked pretty extensively with Realm and even consulted for their Android platform previously. But Kaushik has only recently tried it out on a production app.
In this episode they have an honest and frank discussion about using Realm, the advantages, the disadvantages, the gotchas and if it makes sense to use a database like Realm as an Android developer today.
###Sponsor
We're back with part 2 of our Buck episode. We continue our chat with Uber Engineer, Gautam. We dive into the details of how buck is used, how you can use it and how it can help you and your team. Learn about how to use it with Gradle and more with OkBuck.
We kick off 2017 talking to Uber Engineer Gautam. In first part of this 2 part series, Gautam talks to us about the Uber Android app, the complexity in the architecture, the scaling challenges, the pain points Android developers faced working on such a massive app.
He then goes on to explain how his team (Android Developer Experience) at Uber have approached these challenges and come up with elegant solutions.
We then dive head deep into Buck - the build system for Android development, it's advantages and the benefits that the folks at Uber have observed having migrated.
In this episode, Donn talks with Xamarin cofounder on how one can use Xamarin for Android development.
They start off chatting about using Xamarin just for business logic sharing. This Joseph tells us was the original intention for use. They also touch on Xamarin forms which allows you to additionally build UI elements cross platform.
Even if you don't use Xamarin or plan to use Xamarin right away, this was a fantastic insight into the platform, from the creators directly. They touch on advantages, how to really leverage the platform and potential downsides.
In this episode, we talk to our good friend and immutability champ Ryan Harter. We start off talking about the benefits and disadvantages of immutability, then we dive into Value types and the subtle difference with Value types. Finally we close out by talking about AutoValue and how you can extend it using the super nifty auto-value extension system for functionality like Parcelability, Json parsing etc.
In this episode we talk to Ty Smith about all things Developer Platform. Currently a tech lead at Uber, Ty has quite the illustrious career having worked on some of the biggest names you've heard like Uber, Twitter(Fabric), Evernote, Zagat etc.
Unlike regular client app development, Developer Platform spans a variety of interesting topics like building consumable SDKs, building libraries with good APIs, creating Android integrations and App to app communication via components like Content Providers, AIDL Integrations, Intent APIS and deep links.
We ask Ty how he got started in this field, how one should go about thinking about it and the interesting challenges that one would run across in this intriguing field.
In this mini-Fragment episode, Kaushik talks about the process of Garbage collection and how it compares to Reference counting (which is the equivalent process in iOS).
How does each work? What are the differences? Which is better 😁 ? Listen on for all the juicy details...
In this mini-Fragment episode, Donn talks about Item #13 of the Effective Java series - Minimize the accessibility of classes and members. You'll learn why it's important to limit the access on your public API, how it can help you with development and performance. You'll also learn how changing a public API can affect the consumers of your API, for good and bad.
In this mini-Fragment episode, Donn talks about Item #12 of the Effective Java series - Consider Implementing Comparable. You'll learn about how you can use the Comparable interface to give your code the extra sorting boost it needs. Work with Arrays.sort(), Collections utilities and even sorted data structures. Donn breaks down what it takes to implement the compareTo method of the Comparable interface.
The age old question: should I be using an event bus today? What is an event bus? what are still some good use cases for an event bus? Can i replace an event bus with RxJava?
Donn and Kaushik have at it and try to answer this question that gets asked constantly in the AndroidDev circles. Listen on for our take.
We talk with Android UI magician Israel. In this episode, Israel does what magicians are never supposed to do, reveal those exciting magic tricks. He talks about tricks you can use in your Android apps to create a super slick UI, citing examples from Google Photos, Twitter and other apps.
Dazzle your Android users with these UI tricks.
We talk with the all-star multi-talented GDE Chiu-Ki Chan about testing. Specifically, we dive into leveraging Mockito for your testing needs. What is Mocking, what is Stubbing, what are the different test doubles, how does mockito help with this? Listen on to find about that and some more interesting stuff on testing!
In this mini-Fragment, Donn talks about Item #11 of the Effective Java series - Override clone Judiciously. You'll learn about the extralinguistic behavior of clone and the Cloneable interface. Clone and Cloneable are very special, and this episode helps explain the nuances.
In this episode we talk with, Lisa Wray, first of her job title, mother of the Genius Android app and sorceress of Data Binding.
What is Data Binding? How does it work? What can you do with it? ... and what you can really do with it ! Listen on and find out more. Lisa walks us through the basics and then talks to us about how we can really push the envelope with Data Binding and do some really cool things.
talk:title="@{dataBinding}"
- Lisa's lightning talk at Square Android Spring Cleaning [youtube.com]We wind this two part series down with GDE Philippe by chatting about postfix completion, live templates, structural search/replace, integrating with external tools, cool configurations and much more. Prepare to be mind blown.
In this 2 part series, we talk to the illustrious Philippe of Android Studio tinkering fame. He starts off by discussing the intermediate basics that everyone should know about using Android Studio: window configuration, keyboard shortcuts, navigating the code smoothly, debugging etc. Gradually he moves into ninja mode and starts blowing DF & KG's minds with cool tips and configurations.
Donn and Kaushik discuss how they use git for their development workflow. They also touch on semantic versioning and how they rollout new versions of their app in a controlled fashion.
We have Jake Wharton and RxJava in one episode 💥. In this power-packed episode we talk to Jake about the advances in RxJava 1.x since the last time he was on the show and also looking ahead at the advancements coming down with RxJava 2. If you're interested in RxJava, this episode will definitely be a treat!
Watch out for a special guest cameo by the adorable Olive.
In this mini fragment Kaushik talks about some cool Junit 4 tricks using Parameterize, Enclosing test runners. 🤘 #AlwaysBeTesting
We've always wanted to know more about annotation processing, so in this episode we pick GDE Mike Evans' brains on the topic and ask him a whole bunch of questions. If you've thought about diving into Annotation processing but never quite grappled with what it's all about, this is a good episode to listen to.
Friend of the show -and one of the finest gentlemen we know- Mark Allison chats with us about Constraint Layouts, what they are, why you need them, what to watch out for and how you can start using them in your application.
Styling Android - Mark's blog [stylingandroid.com]
Marks' Constraint Layout Series: [stylingandroid.com]
Introducing Constraint Layout [tools.android.com]
Wolfram's post: Some thoughts on Android's new Constraint Layout and Android Studio's new Design Editor [grokkingandroid.com]
ADB episode-50 [androidbackstage.blogspot.com]
Friend of the show Dan Lew makes a return! In this show Kaushik talks to Dan about translating an app for other languages.
2016's first installment of a grand bonanza of tips and tricks for #AndroidDev! Donn and Kaushik talk about all the tips and tricks they've picked up over the first part of this year.
In this episode we talk to Trello Engineer, GDE, Youtuber, Caster IO instructor and View magician Huyen about all things custom View/ViewGroups.
Everyone loves Retrofit & okHttp. But how did they come about? Why ok? What was the need for such libraries? We went knocking on the doors of Square trying to find the answers to these question. We were lucky cause we found probably the nicest most brilliant Android/Java developer of our times - our good friend Jesse Wilson and without surprise, he crushes it!
He gives us the scoop on the origin stories of these amazing libraries and also gives us insight into okio and why it's such a game changer today.
We've always been curious about technology and the software surrounding embedded devices and the like. One such technology that's ubiquitous these days is Bluetooth (LE). In this show we talk with embedded technology expert and all round super smart AndroidDev Dave Smith a.k.a the wonderful devunwired.
We try to get a high level understanding of how Bluetooth works. From a developer's perspective, how does this tech work? Why should we as AndroidDevs be interested in this technology. What boundaries can we push? How can we effectively use this technology? In this episode we pick Dave's brain and try to answer some of these questions.
Use special code "Fragmented" if you're registering for the 360|Andev conference to get a 10% discount on registration.
In this mini-Fragment, Donn talks about Item #10 of the Effective Java series - Always Override toString. You'll learn why it's important for your own sanity, future developers, and overall developer happiness.
This episode is sponsored by Hired.com
In Part 2 of our Google IO special we continue asking some simple questions to the best AndroidDev today. This concludes our IO special for this year. Hope you enjoyed it as much as we did.
By popular demand we added some extra specials at the very end, so make sure to listen all the way through :)
In Part 1 of our Google IO special we talk to a whole bunch of amazing AndroidDev. We go around asking them a few simple questions. Questions, that you probably thought to ask when you saw them in person, but just forgot to.
Oh and you really should listen all the way to the end :)
Stay tuned for Part 2 where we talk to another list of top notch Android developers and get their answers for these questions.
In this mini Fragment, Donn talks about one of his favorite topics, YAGNI. YAGNI is an acronym that stands for "You Arent Going To Need It". Donn explains what it is, why its useful and shares a personal story of how he was introduced to the YAGNI concept back in 2008.
In this mini episode, we talk with the lovely Kelly Shushter about Internal Library Dependency Management. Kelly is a GDE, the Director of Women Who Code (Denver chapter), a developer at Thoughtbot, a mind blowingly good AndroidDev and just an all round boss of everything.
She gives us the rundown explaining different strategies for maintaining and managing internal libraries in your organization/company.
In this episode we chat with our friend an all round amazing AndroidDev Elliott Chenger. Elliot does Android development for Under Armour and knows a thing or two about TextViews. We talk TextViews, font rendering complications in Android, performance optimizations, localization (vs internationalization), ECDC (it's a thing!) and wind the discussion off with some design software tools out there.
In this episode, Donn and Kaushik look at the Android N developer preview. They highlight the biggest changes that you as an Android Developer should keep an eye out for. There are tonne of features in N, so listen to this episode to get the highlights.
In this very first edition of our Decompress episode we talk about life being code as an Android developer, some Xcode hating, Testing woes and the intensly discussed library that Google recently released Agera!
In this mini Fragment we touch on a highly requested topic - working remotely. Donn talks about how to ease into remote working, tools for working remotely, tips and tricks for staying sane and productive while remote and he wraps it up by discussing the benefits employers have when hiring a remote workforce.
In this mini Fragment we touch base on all the things you need to know about Vector drawables for Android development. How one can use it today, the recommended usage for vector drawable and formats, the limitations and everything else you need to know as an Android developer.
In this episode we talk Gradle with the amazing and awesome Annyce Davis. We deal with the basics of Android's build system and dabble with some tips on improving your build times.
Also we released our first ever Fragmented T-shirt in collaboration with another amazing GDE Taylor Ling of AndroidTee fame.
The Android Support library framework is the biggest boon to Android developers. But how does one makes sense of the different versions and revisions available? In this fragment we try to address that question.
./gradlew -q app:dependencies
In this mini Fragment, we introduce Joshua's eighth Item. This one is a doozy, probably one of the longest items in the group of the effective Java series, but most definitely quite important.
This episode is brought to you by Rollbar. Go to rollbar.com/fragmented to get their Bootstrap plan for free for 90 days.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Obey the general contract when overriding equals
In this episode we talk to Material Design Master and Google Developer Expert Mike Wolfson. What does Material design mean to us developers? How does one use the numerous support libraries to help with this? What widgets should and shouldn't we be using? Listen to the show and find out.
If you've been an Android developer in the last 2 years, you must have seen this dreaded exception: dex: method ID not in [0, 0xffff]: 65536
Quick googling would immediately bring up the phrase "65K method count" and the recommended solution "multi-dexing". But if you want to really understand this mysterious number and the reason behind its existence, listen on!
Feast yourselves to a grand bonanza of tips and tricks with this episode! Donn and Kaushik talk about the tips and tricks they've picked up over the course of 2015.
Realm pro and overall genius Christian Melchior joins us in this episode to talk about all things Realm.
In this episode Donn and Kaushik chat with the one and only Israel Ferrer Camacho (@rallat). They discuss a talk Israel gave sometime back on "Android development like a pro", exchanging war stories on patterns like MVP, MVVP clean architecture etc.
In this mini Fragment, we introduce Joshua's seventh Item and a momentous end to the first chapter: Avoid finalizers
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Avoid finalizers
Joshua's sixth Item: Eliminate obsolete object references , in a distinctively croaky voice.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Eliminate obsolete object references
Supplemental reading (for the diligent ones that follow shownotes)
Donn and Kaushik cover the happenings of Google's very first Android Developer conference - "Android Dev Summit". Together, they attended the conference both virtually and physically! Listen on for the highlights.
Contact us:
In this mini Fragment, we introduce Joshua's fifth Item: Avoid creating unnecessary objects.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Avoid creating unnecessary objects
// sum of all positive values
Long sum = 0L;
for (long i=0; i Integer.MAX_VALUE; i++) {
sum+=i;
}
In this episode, Kaushik and Donn dive deep into the Dependency Injection library - Dagger. We have a cameo by Dagger creator Jesse!
Donn's picks:
KG's picks:
A tonne of folks have been asking for a show on Kotlin. We got the best person in the business to take us through what could possibly be our new hope.
Smaller IDES
Sample projects with Kotlin
Singer and Android developer Donn Felker explores Joshua Bloch's fourth Item: Enforce noninstantiability with a private constructor.
Stay tuned, cause we got more of these quick ones coming.
Enforce noninstantiability with a private constructor.
Examples where you don't want class to be instantiated
Considerations
In this mini Fragment, we introduce Joshua's third Item: Enforce the Singleton property with a private constructor or an enum type.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Enforce the Singleton property with a private constructor or an enum type
Approaches
getInstance
Considerations
readResolve
methodSupplemental reading (for the diligent ones that follow shownotes)
In this power packed episode, Donn returns... If that wasn't amazing enough, Andrew and Akshay from Google join us to talk about Nearby.
Awesome picks for the week:
Contact
Soundcloud
shownotes: http://fragmentedpodcast.com/episodes/17
Contact:
In our third Fragment installment, we introduce Josh's second Item: Consider a builder when faced with many constructor parameters.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
[audio src="http://traffic.libsyn.com/fragmented/ep_14_fragmented.mp3" preload="none" autoplay="false"]
[Download][1]
In this episode we talk to Amanda about how she got started as an Android developer, working at Venmo, her path to mastering Java and Android, dabbling with the dark side and Animations in Android!
Guillotine animation
Timely like Animations
We've mentioned the book "Effective Java" by Joshua Bloch quite a few times on previous episodes. At this point, everyone knows they should have read this book (quadruple times). But it's a dense read and everyone could use a reading buddy. Also, what does Effective Java look like through the eyes of an Android developer?
In this second installment of our Fragment (a.k.a mini-episode), we thought we'll do our listeners a favor and help with that reading. We introduce the very first of these venerable "Items": Consider providing static factory methods instead of constructors.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
makeText
for Toast class [androidxref.com]newInstance
when creating Fragments [androiddesignpatterns.com]newIntent
static factory method for creating intents inside the target activity.In this episode we revisit the topic of Testing, looking at it from a TDD perspective. Globetrotter, Kata Queen, TDD practitioner and overall boss of Android development - Corey Latislaw, joins us in this episode with thoughts, tips and tricks on pulling off TDD. She also shares some of her wicked sketchnoting tips and made a very special Sketchnote just for this episode! Have a look at the sketchnote here.
In this episode we're trying something new. Everyone has requested more episodes of the podcast. In short, everyone wants a weekly show. So this week, we're introducing what we call a mini-episode ... or as we like to call them a "Fragment". Fragment episodes will be shorter in length but still packed with goodness. They will range from ~7-25 minutes in length and will showcase either Kaushik, myself (Donn) or both of us.
In the first "Fragment" installment we're going to talk about Continuous Integration (CI) and Collective Code Ownership (CCO). Donn talks about what CI is, why its important and how it benefits you and your team. He then dives right into CCO and how it can be facilitated through testing.
We hope you enjoy these new mini-episodes ... aptly named ... Fragments. :)
In this episode - Donn and Kaushik dive into a topic that is very near and dear their hearts - application architecture. They talk about how Martin Fowler has inspired a lot of their architectural decisions and how they're moving towards defining what a clean architecture means to them and other developers. They talk about Model View Presenter, Model View Controller and many other topics that surround these two common patterns. Take a listen and go for the ride on architecture train ... all aboard!
Donn:
Kaushik:
In this episode Donn and Kaushik talk to the very talented Michael Bailey about core Java principles and practices. Michael has quite the deep and passionate understanding of Java and we thought it would only be perfect to share this episode with a very passionate Java crowd - Android developers. We talk about IntelliJ, Testing, Inheritance, Static Code analysis, Garbage Collection, Data Structures and much more in this episode. If you're looking to learn a thing or two about Java, then this is your episode. We hope you enjoy.
Effective code review technique (WTFs a minute) [cryhavok.org]
Michael:
Kaushik:
Donn:
This is the special Google I/O 2015 episode. In this episode - Kaushik makes the trek to Google I/O and chats with various Android developers about their favorite part of Google IO. I was not able to make it but Kaushik was able to interview of top developers in the industry and I’ll tell you what - this is a great episode - I really wish I was there to join him. I know he had a great time chatting and interacting with everyone. We hope you enjoy the show as much as we enjoyed creating it.
In this episode, we talk to Philip Simpson, one of the rockstar developers of the amazing Pocket Casts Android Application. We learn about how Philip and his partner, Russell, started Shifty Jelly and how they grew their team from a two-person shop to a small staff all while creating one of top apps on Google Play, Pocket Casts. We also talk about some of the tools, tips and tricks that they've used to help them scale, grow and become more effective as indie app developers. We eventually hop into some deep talk about audio software and all kinds of tech in general. If you've always wondered what it takes to be an indie app developer then this is the episode for you - Philip does not let us down.
Philip:
Donn:
Kaushik:
In the final part of this two-part segment, we continue our talk with Jake Wharton. We dive right into the topic of testing. Jake then talks about his approach to testing apps in Android and the different languages that he finds interesting. We then move on to RxJava, NotRxAndroid, SqlBrite and many other libraries and topics to round out this great second episode. Again, we'd love to thank Jake for joining us here on the Fragmented Podcast show; it has been an honor. We hope you enjoy it as much as we did.
StickyListHeaders [github.com]
SQLBrite [github.com]
NotRxAndroid [github.com]
Donn:
Jake:
Kaushik:
In part one of this two-part segment, we talk to the one and only Jake Wharton. He gives us the scoop on how he operates day to day, what he looks for in a good Android developer and how to become a better Android developer. He also touches upon the various sources and non-Java platforms that he draws inspiration from. Finally, he talks about open source and gives tips on leading an open source project.
In this episode of Fragmented, Donn and Kaushik start off by discussing the tips and tricks available for efficiently loading images in an Android app. Good image libraries make use of these techniques and perform all the heavy lifting in the background. So they then discuss the different image library options available for Android developers.
In this episode of Fragmented, Donn and Kaushik continue their conversation with Dan Lew on RxJava. In the final part of this 2 part series, they talk about many useful RxJava operators and other intricacies of using RxJava in Android.
System.setProperty("rx.ring-buffer.size", "128");
Dan Lew:
Donn:
Kaushik:
In this episode of Fragmented, Donn and Kaushik interview Dan Lew - druid of RxJava & RxAndroid! In part 1 of this 2 part series, we find out more about the one they call Dan Lew. We ask Dan how he started off as a developer, how he stays on top of development, where he draws inspiration from for amazing Android development and much more. We then begin disarming the glorious beast that is RxJava touching upon it’s benefits and begin discussion of some common operators.
In this episode of Fragmented, Donn and Kaushik talk about the official IDE for Android development – “Android Studio”. Why should you care about your IDE? Is Android Studio really open source? What are some of the advantages of using Android Studio? How can you customize and tweak Android Studio so you take your android development game to the next level? Listen to this episode and find out. The awesome picks for this episode are particularly awesome too.
Rounded ImageView:
Welcome to the very first episode of Fragmented. Donn and Kaushik talk about why they started the podcast, the structure of the podcast and a little about who they are. The main topic for this episode is Testing! What are the benefits of testing, in general? Why does testing specifically help Android developers? What is the state of testing in Android and how does one test in Android?
Sample Android Testing Projects
En liten tjänst av I'm With Friends. Finns även på engelska.