Fragmented - The Software Podcast: Recent Episodes

Spec, Kaushik Gopal, Donn Felker

The Fragmented Podcast is a podcast for Software Developers hosted by Donn Felker and Kaushik Gopal. Our goal is to help you become a better Software Developer. 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 being a Software Developer.

View Details

Mitchell Hashimoto co-founded HashiCorp, built some of the most impressive DevOps tools like Vagrant and Terraform, sold the company to IBM — and then built a terminal. Ghostty is now where a huge chunk of agentic coding actually happens. Mitchell was an AI skeptic. We walk through his six-step adoption framework and the workflows he uses day to day — warm-start research, Hail Mary prompts across twenty GitHub issues, and knowing when to let the agent slam dunk it.

Full shownotes at fragmentedpodcast.com.

Show Notes* HashiCorp + Vagrant + Terraform + IBM acquires Hashicorp

Ghostty* Ghostty - Mitchell's fast, native terminal built for platform integration across Mac and Linux * Terminal shell * SSH - secure shell * PTY - pseudoterminals * Terminal Multiplexers + tmux - most popular open source one * XTGETTCAP by xterm * libghostty - the cross-platform terminal emulation library that powers Ghostty's core * xterm-js - powers terminal for apps like VSCode and the cloud * Jedi Term - Intellij's embedded terminal * Ghostty is now a non-profit * cmux - native macOS terminal
multiplexer built on libghostty — a fork Mitchell champions * Free Software Definition -
the 4 essential freedoms 1. The freedom to run the program as you wish, for any purpose. 2. The freedom to study how the program works, and change it to make it do
what you wish. 3. The freedom to redistribute copies so you can help others. 4. The freedom to distribute copies of your modified versions to others. * Mitchell's tweet on unsolicited PRs and transfer of ownership

The AI Adoption Journey* My AI Adoption Journey -
Mitchell's blog post outlining his five-step framework * Step 1: Drop the Chatbot + Episode 301 - AI Coding ladder - Different stages of AI
adoption * Step 2: Reproduce Your Own Work * Step 3: End-of-Day Agents + OpenAI Deep Research -
kick off research tasks for a "warm start" the next morning + Spine AI research - deep research tool for
longer, hour-long analysis tasks * Step 4: Outsource the Slam Dunks + Claude status hooks - warcraft peons + Conductor * Step 5: Engineer the Harness + Episode 307 - Harness Engineering - Fragmented's deep dive
on harness engineering, heavily inspired by Mitchell's post * Step 6: Always have an Agent running * Peter Steinberger * Codex plugin for Claude Code

Get in touchWe'd love to hear from you. Email is the best way to reach us or you can check our contact page for other ways.

We want to hear all the feedback: what's working, what's not, topics you'd like to hear more on.

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

Andrej Karpathy says the goal is to maximize how long an agent runs without your intervention. But there's a false summit most teams hit first: individual speed goes up while system speed stalls, your laptop roars under four parallel Gradle builds, and review queues back up. Kaushik and Iury trace the full arc — from local multitasking to cloud-hosted async work to fully autonomous agents that fire on repo events and put PRs in your inbox.

Show Notes* Andrej Karpathy on agents and token throughput - NoPriors podcast — maximize agent runtime, not token burn * Cursor Agent Mode - Multiagent interface - introduced the multi-agent board as a new paradigm for local parallel agents * Google Antigravity - Agent Manager interface * Claude Code Agent Teams - spawn
sub-agents from a main orchestrator, with tmux pane integration * Git worktrees - /reddit

Remote Background Agents in the cloud* Google Jules - hosted GitHub-connected agent,
proposes a plan, edits code, runs tests, opens a PR * Cursor Cloud Agents - remote agents
that clone your repo in the cloud and work in parallel * OpenAI Codex - cloud software
engineering agent for parallel tasks * Claude Code on the web - cloud-hosted Claude Code
sessions decoupled from your local machine

Building trust* Episode 307 - Harness Engineering - the earlier episode on
shaping agent environments — and why this ceiling exists

Get in touchWe'd love to hear from you. Email is the best way to reach us or you can check our contact page for other ways.

We want to hear all the feedback: what's working, what's not, topics you'd like to hear more on.

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

You already know how LLMs work from our popular 20-minute explainer. Now we take it to images. What does Michelangelo have to do with stable diffusion? More than you'd think. Walk away knowing how image generation actually works — and what it has in common with the text models you already understand.

Full shownotes at fragmentedpodcast.com.

Show Notes* Episode 303 - How LLMs work in 20 minutes - text generation * VAE -
Variational Autoencoder * RGB Color model - wikipedia * Word2Vec technique - wikipedia + Efficient Estimation of Word Representation -
original Word2Vec paper by Mikolov et al. * High-Resolution Image Synthesis with Latent Diffusion Models -
Rombach et al. (2022) — the paper behind Stable Diffusion * Image Training data + LAION-5B - 5 billion image-text pairs
scraped from the web, used to train many image generation models + WebLI - Google's internal image-text
dataset * Michelangelo

Get in touchWe'd love to hear from you. Email is the
best way to reach us or you can check our contact page for other
ways.

We want to hear all the feedback: what's working, what's not, topics you'd like
to hear more on.

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

The hard part of AI coding isn't generating code — it's controlling quality, safety, and drift. Kaushik and Iury break down harness engineering: the five pillars for shaping an agent's environment and what it looks like when teams build custom harnesses from scratch.

Full shownotes at fragmentedpodcast.com.

Show NotesWhy it matters* Harness Engineering -
OpenAI's post on building their Codex codebase (~1M lines of code, 1,500 PRs
merged, zero manually written)

Shaping the harness* The Feed's Lost and Found -
Iury's newsletter consolidating harness engineering themes 1. Agent legibility 2. Closed feedback loops 3. Persistent memory 4. Entropy control 5. Blast radius controls

Building the harness* Minions: Stripe's one-shot, end-to-end coding agents -
Stripe forked Goose to build custom agents for their codebase * Goose - open-source coding agent from Block * Superpowers by Jesse Vincent - skills
that enforce a proper software engineering process * Open Code - open-source coding agent you can fork and
customize

Other resources* Agent Harness Glossary -
Latent Patterns * Towards self-driving codebases -
Cursor * Agentic Workflows -
GitHub Next * Future of Software Development -
ThoughtWorks

Get in touchWe'd love to hear from you. Email is the
best way to reach us or you can check our contact page for other
ways.

We want to hear all the feedback: what's working, what's not, topics you'd like
to hear more on.

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

AGENTS.md is becoming the common language for AI coding tools, but keeping repo
rules, personal rules, and tool-specific files in sync is still messy. In this
episode, Kaushik and Iury break down the sync problem, compare their own setups,
and unpack what the latest AGENTS.md research actually says.

Full shownotes at fragmentedpodcast.com.

Show NotesThe sync problem* AGENTS.md - Official spec * Custom instructions with AGENTS.md -
Open AI * Keep your AGENTS.md in sync - Kaushik's post * Rulesync - What Iury uses * Tweet by Ryan Carson and Claude frustrations

Other links* Evaluating AGENTS.md: Are Repository-Level Context Files Helpful for Coding Agents? * Harness engineering - Check the section about using AGENTS.md as a table of contents * OpenCode

Get in touchWe'd love to hear from you. Email is the
best way to reach us or you can check our contact page for other
ways.

We want to hear all the feedback: what's working, what's not, topics you'd like
to hear more on.

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

Subagents are becoming a core primitive for serious AI-assisted development. In this episode, Kaushik and Iury disambiguate "agent" terminology, unpack plan mode vs subagents, and explain how parallel, scoped workers improve research quality without polluting the main thread.

Full shownotes at fragmentedpodcast.com.

Show NotesResources & DocumentationOfficial DocumentationAgents, Modes, Subagents: official harness docs

  • Claude Code Subagents
  • Gemini CLI Subagents
  • Opencode Subagents
  • Cursor Subagents
  • Antigravity Agent Modes
  • AOE Scouting

Research Papers & Articles* Introducing Claude Opus 4.5 * Deep-Research Agents Paper * Post: GPT-5 System Card by Alex
Xu * Self-Driving Codebases Blog -
multi-agent systems making 1,000 commits/hour

Get in touchWe'd love to hear from you. Email is the
best way to reach us or you can check our contact page for other
ways.

We want to hear all the feedback: what's working, what's not, topics you'd like
to hear more on.

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

Agent Skills look simple, but they are one of the most powerful building blocks
in modern AI coding workflows. In this episode, Kaushik and Iury break down when
to use skills, how progressive disclosure works, and how skills compare with
commands, instructions, and MCPs.

Full shownotes at fragmentedpodcast.com.

Show NotesMain References* Progressive Disclosure -
how skills are loaded into context * Agent Skills Open Specification * AAIF (Agentic AI Foundation) -
Linux Foundation initiative for AI interoperability * Needle in a Haystack Problem - original
"Lost in the Middle" paper * Agent-Invokable vs User-Invokable -
merging skills and commands in Claude Code

Creating Skills* Skill Creator -
Anthropic's skill for creating new agent skills * Claude Code frontmatter reference + see model: * & context: fork

Using other Skills* Anthropic Skills GitHub Repository -
official collection of Claude skills and examples * Clawdhub - Clawdbot's skill hub. All versions are
archived here * SKILLS.sh - Vercel's skills hub

Warnings before installing random skills

[!warning] Don't install from hubs blindly.

Inspect the repo code before adding anything to your agent.

  • Prompt Injection Attacks -
    OWASP guide to LLM prompt injection vulnerabilities
  • OpenClaw <- MoltBot <- Clawdbot
  • OpenClaw Security Analysis -
    analysis of prompt injection risks in open agent frameworks
  • Malware found in a top-downloaded Clawhub skill -
    incident report thread

Additional resources* Few-Shot Prompting -
improving outputs with examples * .agents/skills - proposal
to standardize the skills folder path * Vercel: AGENTS.md vs Skills -
comparison of agent instruction methods

Get in touchWe'd love to hear from you. Email is the
best way to reach us or you can check our contact page for other
ways.

We want to hear all the feedback: what's working, what's not, topics you'd like
to hear more on.

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

Ever get asked "how do LLMs work?" at a party and freeze? We walk through the full pipeline: tokenization, embeddings, inference — so you understand it well enough to explain it. Walk away with a mental model that you can use for your next dinner party.

_Full shownotes at fragmentedpodcast.com.

Show NotesWords -> Tokens:* OpenAI Tokenizer visualizer -
Visualize how text becomes tokens

Tokens -> Embeddings:* RGB Color model - wikipedia * Word2Vec technique - wikipedia + Efficient Estimation of Word Representation -
original Word2Vec paper by Mikolov et al.

Embeddings -> Inference:* Word embedding * Temperature, Top-k, Top-p samping

Get in touchWe'd love to hear from you. Email is the
best way to reach us or you can check our contact page for other
ways.

We want to hear all the feedback: what's working, what's not, topics you'd like
to hear more on. We want to make the show better for you so let us know!

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

[!fyi] We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

MCPs are everywhere, but are they worth the token cost? We break down what Model Context Protocol actually is, how it differs from just using CLIs, the tradeoffs you should know about, and when MCPs actually make sense for your workflow.

Full shownotes at fragmentedpodcast.com/episodes/302.

Show Notes* MCP - Model Context Protocol * Remote MCP server example - Glean * AAIF -
Agentic AI Foundation setup by Linux foundation * Github MCP * Github gh CLI * Playwright MCP * Context7 MCP * Anthropic's announcement on
Advanced Tool Use

Tips* Iury: use ast-grep to structurally
search code faster * KG: use agent-browser by Vercel to give browsing
power to your agent

Get in touchWe'd love to hear from you. Email is the
best way to reach us or you can check our contact page for other
ways.

We want to hear all the feedback: what's working, what's not, topics you'd like
to hear more on. We want to make the show better for you so let us know!

  • Contact us
  • Newsletter
  • Youtube
  • Website

Co-hosts:* Kaushik Gopal * Iury Souza

We transitioned from Android development to AI starting with
Ep. #300. Listen to that episode for the full story behind
our new direction.

View Details

Most folks reference "AI coding" like it's one thing. It's really not. In this foundational episode Kaushik & Iury walk through (at least) four paradigms — from super autocomplete to agent orchestration — each with different workflows, expectations, and mental models.

What do most developers follow today? Where is the frontier? What's coming in the future?

Listen to the episode and find out!

Full shownotes at fragmentedpodcast.com.

Show NotesGen 1: Super autocomplete* Intellisense - regular autocomplete * Github Copilot * Cursor Tab

Gen 2: Chat Oriented Programming* Cursor IDE * Firebender

Gen 3: Agent* Nvidia's definition of an Agent * ReAct Prompting * Chain of Thought was a prompting hack * DeepSeek + DeepSeek - R1 paper * TUI tools (or Harnesses): + Claude Code + Open Code + Codex Cli + Gemini Cli * IDE style tools + Cursor Agent + Copilot (MS) + Junie - Intellij + Antigravity - Google * Headless Tools: + Jules - Google + Claude Code on the Web + Codex Web

Gen 4: Agent Orchestration* Git worktrees

Tips* Iury: Transfer between agents using your own
compact command * KG: Ask the agent to clarify your prompt

Confirm if my requirements are clear. If you have follow up questions, ask me
first and clarify before executing anything.

Contact us* Newsletter * Website * Contact us * Youtube

Co-hosts:* Kaushik Gopal * Iury Souza

View Details

Fragmented is changing. New direction, new cohost. Kaushik explains the pivot
from Android to AI development and introduces Iury Souza.

From vibe coding to software engineering — one episode at a time.

Full shownotes at fragmentedpodcast.com.

Contact us* Newsletter * Website * Contact us * Youtube

Co-hosts:* Kaushik Gopal * Iury Souza

View Details

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.

Show Notes* Vinay's personal website + Dispatch - Jetpack Compose newsletter + Issue #11 - Future of AndroidDev * Cursor AI IDE * Jetbrains AI assistant * Jetbrains Junie - the coding agent

Pessimists avoid risk, Optimists change the world.

Contact us* fragmentedpodcast.com * Contact us * Youtube

Kaushik:* kau.sh (links to everything) * Threads * Bluesky * Youtube * @kaushikgopal

View Details

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.

Show Notes* Simple scripting + State of Kotlin Scripting 2024 - Jetbrains blog + Kotlin mini-app repo playground-kt + Advent of Code * Web sites + Hugo static site generator + Cloudflare Pages + Slashdot effect + Fragmented Podcast Website powered by Henry (Kaushik's custom theme) * Web apps + Ktor + HTMX - Ajax - CSS Transitions - Server Sent Events + Youtube Video showing Ktor + HTMX * Mobile apps + Episode 252 talking about playground-android + Flutter + Kotlin Multiplatform KMP + React Native * LLM Based apps + Streamlit. - Snowflake acquires Streamlit + Google AI Studio + Kotlin AI * Vibe coding an AirBnb clone

Contact us* fragmentedpodcast.com * Contact us * Youtube

Kaushik:* kau.sh (links to everything) * Threads * Bluesky * Youtube * @kaushikgopal

View Details

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.

Show Notes* [announcement] Fragmented has an email newsletter. * Programming Paradigms + Object Oriented Programming + Functional Programming

Data Oriented Programming (DOP)* UUID + RFC 4122 + Kotlin now includes UUID in the standard lib even for kotlin multiplatform.

Resources* Brian Goetz's seminal article on DOP * Ties Van de Ven Advanced Kotlin Dev Day in 2022 * Data Oriented Programming in Java by Chris Kiehl (by Manning Publications) * Devoxx talk by Nicolai Parlog on youtube

Contact us* fragmentedpodcast.com * Contact us * Youtube

Kaushik:* kau.sh (links to everything) * Threads * Bluesky * Youtube * @kaushikgopal

View Details

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.

Show Notes* Immutable Arrays on github * Immutability episode #66 on Immutability with Ryan Harter * JMH - Java Microbenchmark Harness * Immutable Arrays Benchmarks page for Immutable Arrays (pods4k) * Dan's post - Kotlin avoids entire categories of Java defects * K2 compiler * Dan Rusu + Website + pods4k github discussions

Contact us* fragmentedpodcast.com * Contact us * Youtube

Kaushik:* kau.sh (links to everything) * Threads * Bluesky * Youtube * @kaushikgopal

Disclaimer: Links shared might be affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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.

Show Notes* Timber * logcat + Motivations in README + Compiler plugin issue + Playground android app demonstrating logcat * bitdrift.io * Design of everyday things * Previous episode #191 on logging * Contact Piwai: + Website + Bluesky

ContactYou can find us on a few places:

  • fragmentedpodcast.com
  • Contact us
  • Youtube

Kaushik:* kau.sh (links to everything) * Threads * Bluesky * Youtube * @kaushikgopal

Disclaimer: Links shared might be affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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.

Show Notes Playground Android * The Architecture Templates (blog post) * Inspiration (Other starter templates): + Bloco's starter template what i referenced a lot + Donn's project - Jumpstart Android if you care about quickly getting a Rails app integrated with Android in a hybrid experience + Now in Android too much functionality for my taste + Jake's u2020 for some good times nostalgia* * Playground Android + gradle version catalog - BOM & Bundles (one source of truth) + sharing build logic with gradle convention plugin + Makefile with common cli commands + Custom lint-rules + Multi module setup + dependency injection with kotlin-inject-anvil - Episode 251 - There's a new king in DI town + function-injection demo in @Composable * Amper + logcat lib and injecting multiple loggers + basic networking with ktor #10 + compose-navigation between feature modules * Iury's post on Kotlin Devex * Amper + blog posts on Amper * Feedback on Amper - kotlinlang slack * Contact Márton Braun

ContactYou can find us on a few places:

  • fragmentedpodcast.com
  • Youtube

Kaushik:* kau.sh (links to everything) * Bluesky * @kaushikgopal * Threads * Youtube

Disclaimer: Links shared might be affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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

View Details

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

View Details

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.

Links* Michaely Fragmented Episode 9 (Google IO Special) * Fragmented Episode 10 (core java) * Fragmented Episode 78 (testing strategies) * OpenJDK on GitHub * FooJay * Compile Options Reference * SDK extensions * @Yogurtearl explanation * Jpackage

Find Michael Online

  • @yogurtearl on Twitter

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO 🎉 * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@fragmentedcast on Twitter or our YouTube channel

Donn

  • @donnfelker
  • donnfelker
  • Donn's YouTube
  • Donn's Website

Kaushik

  • kau.sh (has links to all my networks)
  • twitter.kau.sh
  • mastodon.kau.sh
  • youtube.kau.sh (on YouTube)

Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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.

LinksHere are the links mentioned in the document, in markdown format:

  1. Firebase Remote Config
  2. Optimizely
  3. LaunchDarkly
  4. AWS AppConfig for Feature Flags
  5. VWO
  6. Unleash - Open Source Feature Flags
  7. Posthog Feature Flags and A/B Testing
  8. Ishan's Droidcon Berlin Talk
  9. Stuart Frisby's Talk on A/B Testing
  10. Erindoesthings

Contact Ishan1. Ishan on Twitter - @droidchef 2. Ishan on LinkedIn 3. Ishan's Website

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO 🎉 * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@fragmentedcast on Twitter or our YouTube channel

Donn

  • @donnfelker
  • donnfelker
  • Donn's YouTube
  • Donn's Website

Kaushik

  • kau.sh (has links to all my networks)
  • twitter.kau.sh
  • mastodon.kau.sh
  • youtube.kau.sh (on YouTube)

Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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.

LinksSure, here are the links provided in the text, formatted in Markdown:

  • Siggi Jonsson's Droidcon Talk
  • Graph Assert Plugin
  • Dependency Analysis Android Gradle Plugin
  • Graph Untangler Plugin by Siggi Jonsson
  • GraphViz
  • Gephi
  • Driving architectural improvements with dependency metrics
  • Inaki Villar Twitter - Build Engineer Siggi Mentioned

Find Siggi online here:

  • Siggi Jonsson on Twitter
  • Siggi Jonsson on Github
  • Siggi Jonsson's Website
  • Siggi Jonsson on LinkedIn
  • Kindred - Use code SIG.JON to register.

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO 🎉 * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@fragmentedcast on Twitter or our YouTube channel

Donn

  • @donnfelker
  • donnfelker
  • Donn's YouTube
  • Donn's Website

Kaushik

  • kau.sh (has links to all my networks)
  • twitter.kau.sh
  • mastodon.kau.sh
  • youtube.kau.sh (on YouTube)

Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

In this podcast episode, we have the pleasure to host Fred Porciúncula, a Google Developer Expert (GDE) known for his work on 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!

Links* Kotlin Inject Library * Fred's Kotlin Inject Article * Testing with Kotlin Inject * Kotlin Inject Scope Issue * Pulling code out of the platform class * DI vs Service Locators * Dagger KSP Support * Kotlin Inject Anvil Like Features * Making Your Android Application Work on iOS (Touchlab mentioning interfaces over expect) * Moko Resources * Klima Engineering

Find Fred Online Here

  • Twitter - @tfcporciuncula
  • androiddev.social/@fred
  • Klima Engineering Blog

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO 🎉 * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@fragmentedcast on Twitter or our YouTube channel

Donn

  • @donnfelker
  • donnfelker
  • Donn's YouTube
  • Donn's Website

Kaushik

  • kau.sh (has links to all my networks)
  • twitter.kau.sh
  • mastodon.kau.sh
  • youtube.kau.sh (on YouTube)

Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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 ...

Links* Redwood * Zipline * QuickJS * Kotlin Conf Talk on Treehouse * Droicon NY talk - Redwood * Droidcon NY talk - Zipline

Find Colin Online here* Twitter - @colinwhi * Mastodon

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO! * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Contact@fragmentedcast on Twitter or our Youtube channel

Donn

  • @donnfelker (Twitter)
  • donnfelker (Instagram)
  • Donn's YouTube
  • Donn's Website

Kaushik

  • kau.sh
  • @kaushikgopal (Twitter)
  • mastodon.kau.sh
  • kaushikgopal - YouTube

Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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. 🚀

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO 🎉 * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Contact@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.

View Details

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 ...

  • Why Dan decided to leave the Android world
  • The challenges he faced when he moved from one tech stack to another
  • How to prepare for a big change like this (mentally, financially, etc.)
  • How to create the life you want live vi by identifying what's important to you
  • and much more ...

Links* Rheaply

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs every week as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links* ktfmt - website, github * spotless - github * detekt - website * ktlint - website

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links* Donn's 24 Hour Project - EXIFR * Jumpstart Rails Template that Donn Used * Books-AI App by Florian Walther * Open AI

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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:

  1. fun interface (SAM - Single Abstract Method), and they juxtapose them vs function types
  2. type alias
  3. import alias
  4. value class
  5. data object

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.

Links* Kaushik's Blog Post - Important Kotlin Constructs * SAM Interface - Kotlin Docs * Function Types - Kotlin Docs * Type Aliases - Kotlin Docs * Import Alias - Kotlin Docs * Value Class - KEEP * Data Object - KEEP

Enjoy!

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links* CODEOWNERS GitHub Doc * Episode 012 - CI and Collective Code Ownership * GitHub Organization Teams

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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:

  1. Update your LinkedIn Profile and Build a Resume with the LinkedIn Resume Builder
  2. Set your LinkedIn status to "Open to Work" via the "Open to Work" feature on LinkedIn
  3. Directly Reach out to Recruiters you know or have interacted with
  4. Manual Discovery: Visit various companies career pages and job board and apply directly

Ancillary Tips to Boost Your Chances of Landing a Job:

  1. Blog about the technology you’re looking to get a job in
  2. Create a demo app or an app you can use to showcase your talents and put it on GitHub
  3. Record a How To Video and post it to YouTube showing how to do something, such as a tutorial
  4. Record/Start a podcast or reach out to hosts of other podcasts and offer to share some deep knowledge you have, or even talk about soft skills, etc
  5. Speak at local user groups or conferences (where you don’t need to worry about travel and costs, just show up and speak)

Links* LinkedIn Open to Work Feature * LinkedIn Resume Builder * Android Jobs

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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?

Links* TutHub.io * Coding in Flow YouTube * Philip Lackner's Compose Playlist * Episode 231: Learning Jetpack Compose with Vinay Gaba * Episode 171: Jetpack Compose with Leland Richardson from Google

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO. Post your Android Job and get it in front of thousands of Android pros. * Are you an Android Dev? Sign up to get notified of new jobs on a weekly basis. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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!

Links* Pragmatic Programmer * Tweet: Best Android Studio Pair Programming Service * learntopair.com - Tuple's Pair programming guide * Speaking for Hackers * Tuple App - OSS * Ben's talks: + Refactoring from Good to Great by Ben Orenstein + Idea to Validation to Launch - Microconf 2019 + Write code faster: expert-level vim

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

View Details

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!

Links* Pragmatic Programmer * Tweet: Best Android Studio Pair Programming Service * learntopair.com - Tuple's Pair programming guide * Speaking for Hackers * Tuple App - OSS * Ben's talks: + Refactoring from Good to Great by Ben Orenstein + Idea to Validation to Launch - Microconf 2019 + Write code faster: expert-level vim

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

View Details

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!

Links* Pragmatic Programmer * Tweet: Best Android Studio Pair Programming Service * learntopair.com - Tuple's Pair programming guide * Speaking for Hackers * Tuple App - OSS * Ben's talks: + Refactoring from Good to Great by Ben Orenstein + Idea to Validation to Launch - Microconf 2019 + Write code faster: expert-level vim

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

View Details

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!

Links* Pragmatic Programmer * Tweet: Best Android Studio Pair Programming Service * learntopair.com - Tuple's Pair programming guide * Speaking for Hackers * Tuple App - OSS * Ben's talks: + Refactoring from Good to Great by Ben Orenstein + Idea to Validation to Launch - Microconf 2019 + Write code faster: expert-level vim

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

View Details

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

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links* Paparazzi Project website * GitHub Repo * John's Twitter * Cashapp GitHub * TestParameterInjector * Fragmented Episode 52

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links* Vinay's Twitter * Vinays Learning Jetpack Compose by Example Video * JetpackCompose.app (find the Jetpack Compose component you're looking for by typing in the XML equivalent) * ShowKase - A library to organize, discover and visualize your Jetpack Compose Elements * Jetpack Compose Official Docs * Compose Runtime * Inside Jetpack Compose Diagram * Other Jetpack Compose Episodes + EP 172 + EP 196

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links* Hotwired.dev * Stimulus JS * Jumpstart Android * Jumpstart Rails * Jumpstart iOS * Episode 220 with Jay Ohms - Turbo Native for Android * Go Rails Tutorials

Donn's Git CourseNeed 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links from the show* Expo.dev * Konstantin's Twitter * Reactive Native Episode with Gabriel Peal #129 * Reactive Native Episode with Gabriel Peal #130 (Part 2)

StoaStoa 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links from the show* 1st Phorm (Ephraim's current employer)

StoaStoa 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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing* Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links from the show* Monokai Pro Theme + VS Code & Atom + IntelliJ/Android Studio/WebStorm/etc * VS Code Plugins + Beautify + Change Color Format + Fish VS Code + Python + Pylance + Shell Format + Git Lens + ES Lint + Prettier + Rainbow CSV + TailwindCSS Intellisense + Ruby + TypeScript * Caper.AI * Stoa - Community Platform for Creators * Freelance Faction - Donn's Freelance Community

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing * Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

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.

Links from the show* Growth Mindset Book

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Software Freelancing * Donn's Freelance Faction Community * Freelance Tactics Book * Donn's Freelancing Content on YouTube

Contact@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.

View Details

In this episode, Donn and Kaushik talk about some of the books that they're reading and thoughts and recommendations on each.

Links from the showDonn's Books* Designing Data Intensive Applications * Systemology * Who Not How * Skin in the Game * Zero To Sold * Freelance Tactics

Kaushik's Books* Staff Engineer + An Elegant Puzzle: Systems of Engineering Management * Grokking Algorithms * Coders At Work * A Philosophy of Software Design * Androids

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Book on Freelancing Tactics* Freelance Tactics

Contact@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.

View Details

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.

ShownotesIn 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.

Links from the show* Taskwarrior * GTD Book * P.A.R.A. Method * Building a Second Brain Course * Bullet Journal Method * Task Warrior + Wing Task for Task Warrior * Parkinsons Law * Notion * Kanbanflow * Things App for Mac and iOS * Quiver Code Snippet Organizer

AndroidJobs.IO Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well.
m
AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact@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.

View Details

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.

Links from the show Android Enterprise + Terminology + Feature List * Oracle Cloud Free (not a referral link)* + 10 TB of outbound data transfer free (vs 1GB from competitors)

Contact @fragmentedcast or our Youtube channel * Prabhjot on Twitter * Donn + @donnfelker and donnfelker (on Instagram) + Freelancing for Mobile Developers (Donn's YouTube) * Kaushik + @kaushikgopal and kaushikgopal (on Instagram) + kaushikgopal (on YouTube) or Kaushik's Blog*

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Disclaimer: Many of the links we share to products are affiliate links. They help support the production of Fragmented. Thank you for your support.

View Details

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

Links from the show* Working Effectively with Legacy Code

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact@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.

View Details

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.

Links from the show Hotwire.dev * Turbo Native for Android * Turbo Native for iOS * Stimulus * Hey * Basecamp * Basecamp is Hiring an Android Dev - email jay @ basecamp dot com*

Get Ahold of Jays Contact* Jay's Twitter * Email: jay @ basecamp dot com

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact@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.

View Details

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.

Links from the show* Working Effectively with Legacy Code

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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.

Mindset image

Alans Link* Alan Hill Social and Web Links

Links from the show* Can't Hurt Me - David Goggins * Mindset by Carol S. Dweck * Extreme Ownership - Jocko Willink * Tom Bilyeu Instagram

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact@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.

View Details

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.

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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.

Links from the show* Martin Fowlers Blog

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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.

Links from the showDavid and Ross's LinksAndroid Apps by Squeaky Dog Studios on Google Play

  • Photowear
  • Just A Minute
  • Pride Time
  • UnicornWear

Other links by Squeaky Dog Studios

  • Squeaky Dog Studios
  • YouTube
  • Company Twitter
  • LinkedIn
  • Instagram
  • Facebook
  • David's Twitter

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact@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.

View Details

In this episode, Donn talks about the three things that every developer needs to know how to do.

These three things include:

  1. How to identify and stop premature optimization
  2. How to write tests and know the difference between unit, integration and end-to-end tests.
  3. 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.

Links from the showContinuous Integration Server Platforms1. Managed Services 1. Github 2. GitLab 3. Bitbucket 4. Azure Devops 5. CircleCI 6. Bitrise 7. Codemagic 2. Self hosted 1. Jenkins 2. TeamCity

Book* Working Effectively with Legacy Code by Michael Feathers

AndroidJobs.IO* Job postigns are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notififed of new jobs on a weekly basis as well. * AndroidJobs.IO

Donn's Free E-Book on Freelancing Rates* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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.

Links from the show* Startups for the Rest of Us Podcast * Rob Walling

AndroidJobs.IO* Job postings are FREE on AndroidJobs.IO during the early release phase (at the time of this recording). * Sign up to get notified of new jobs on a weekly basis as well. * Post jobs and sign up here: AndroidJobs.IO

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact@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.

View Details

In this episode, Donn talks with Philipp Lackner about growing an online presence within the Software Industry with Instagram and YouTube.

ShownotesYou'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.

Tools that Philipp Mentioned* Canva * Adobe Creative Cloud - Photoshop/After Effects/Illustrator * FreePik - Images and Icons * Camtasia * Later.com - Social Scheduling * ContentRow.com

Find Philipp Lackner online here* Instagram * YouTube * Twitter * LinkedIn * Website

Donn's Free E-Book on Freelancing/Consulting Rates* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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.

Show NotesUnidirectional Data flow Image

How to learn React:

  • Tyler McGinnis Course on React (this is how I learned it)
  • Tyler McGinnis React Hooks Course

How to Learn Flutter

  • Rohan Taneja's Flutter from Zero to Hero Course (Free)
  • Flutter Crash Course

Donn's Free E-Book on Freelancing Rates* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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.

Links from the show* KMM Docs * KMM Getting Started * John O'Reilly Twitter * Diagram from Mitch for KMM clean architecture * SQL Delight * Ktor Library * kotlinx-datetime * kotlinx.serialization * Expect-actual * Hacking with Swift Course * 100 days of SwiftUI * Is KMM ready for production? - A Video by Mitch * D-KMP architecture

Find Mitch online here:* Mitch's Twitter * Mitch's Instagram * Mitch's YouTube * Mitch's Website and Courses * Mitch's KMM Clean Architecture diagram

Donn's Free E-Book on Freelancing Rates* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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

Links from the show* Application Inspector:  GitHub * DevSkim:  GitHub * Attack Surface Analyzer:  GitHub * OSS Gadget:  GitHub * Recursive Extractor:  GitHub * Microsoft SDL: Microsoft Security Development Lifecycle * CodeQL: CodeQL for research | GitHub Security Lab * OWASP:  OWASP Foundation | Open Source Foundation for Application Security * OWASP Top 10: OWASP Top Ten Web Application Security Risks | OWASP * OWASP Web Security Testing Guide: OWASP Web Security Testing Guide * Python basic code analysis:  Pylint - code analysis for Python | www.pylint.org * TypeScript basic code analysis: GitHub - typescript-eslint/typescript-eslint: Monorepo for all the tooling which enables ESLint to support TypeScript

Find Glenn online here* Glenn's LinkedIn * Glenn's Twitter

Donn's Free E-Book on Freelancing* Free E-Book on Freelancing Rates

Contact* @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.

View Details

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

Find Jason online here* Jason's Twitter * Jason's Blog + How I Screwed up My Google Acquisition * Jason's New Project - Math Academy

Contact@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.

View Details

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.

ShownotesIn 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.

Links to Items DiscussedMicrophones

  • Audio-Technica ATR2100x-USB
  • Blue Snowball
  • Blue Yeti
  • Shure MV7
  • Shure SM7B (High End) & CloudLifter
    • Lower Cost Preamp
    • High End Preamp

Boom arms for Mics

  • Rode PSA 1 Boom Arm
  • Heil PL-2T
  • Gator Frameworks Boom (same one used on Joe Rogans podcast)

Webcams

  • Logitech C920x HD
  • Logitech Brio Ultra HD 4k
  • DSLR HDMI Capture Card by Elgato - Camlink 4k

Docking Hub

  • CalDigit TS3 Docking Hub for Mac
  • Brydge Vertical Dock for Mac

Lighting

  • LumeCube Video Conference Lighting Kit
  • LumeCube Suction Cup Mount (indluced in kit above)
  • Benq Desklap (high end)

Headphones

JVC Xtreme-Xplosivs Wired Earbuds - Donn's Go to

Sony MDR-7506 Professional Headphone

Audio Technical M20x

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

  • Herman Miller Aeron - make sure you know your size
  • Herman Miller Mirra
  • Steelcase Leap V2

Standing Desk

  • Autonomous AI Standing Desks
  • IKEA Bekant Standing Desk
  • Jarvis Standing Desks
  • VariDesk Adjustable Standing Desk

Anti-Fatigue Mats

  • ErgoDriven Topo Comfort Mat
  • Cheap Anti-Fatigue Mat

Monitor and Monitor Arms

  • LG 5K Monitor - this thing is amazing
  • Amazon Basics Monitor Arm
  • Ergotron Tall Monitor Mount (this is what I have)

Keyboard

  • Kinesis Advantage 2 (my keyboard)
  • Moonlander Keyboard

Mouse

  • Magic Trackpad
  • Logitech Trackman Marble Ergonomic Mouse
  • Logitech M570 Wireless Trackball Mouse

Air Quality

  • Awair Element
  • DHH Video on Air Quality

Focus Music

  • Brain.fm
  • Coffitivity
  • Freedom.to
  • HeyFocus Mac App
  • Serene Blocker
  • Cold Turkey

Mobility, Desk Ergo, and Back Pain Resources

  • Deskbound Book
  • 8 Steps to a Pain Free Back
  • Foot Rubz
  • Lacrosse Ball
  • Shoulder Pain Protocol
  • Standing Desk Video 1
  • Standing Desk Video 2
  • Standing Desk Video 3

Contact@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.

View Details

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.

ShownotesWill 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.

Find Will Online* DevOps for Developers * Will's Twitter * DevOps for Developers Website

Contact* @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

View Details

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.

ShownotesThe 5 Steps:

  1. Choose a Simple Problem Domain (Note Taking app or Calorie/Protein Tracker)
  2. Do not worry about best practices
  3. Start Small, then go smaller: Super tiny nibbles of work
  4. Build Something Ugly and just "Get it working"
  5. Don't Conflate Technologies if you don't have to. Keep it simple.

Donn's Free 9+ Hour Kotlin CourseWatch the entire course here, for free

Contact* @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

View Details

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. 

Shownotes* What is being "in Flow"? - Learn more

Contact* @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

View Details

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.

Shownotes* How to Run Android Studio on ANY Device With JetBrains Projector * Mirakle Gradle plugin * Jetbrains M1 Macbook updates: + Jetbrains JBR-2526 + IntelliJ IDEA 2020.3.1 Is out with Apple Silicon Support

Jetbrains Projector* Projector-Server: Github * Projector Documentation * Swing UI * Joaquim's Projector Instructions

Contact* @joenrv * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

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!

Shownotes* Anvil for Dagger * Ralf's talk at Droidcon: Android at Scale @Square * Slides for above talk

Contact* @vRallev * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

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!

Shownotes* Espresso Testing with Android * Android Test Orchestrator * Flank : Fragemented Episode * Bluepill : LinkedIn's iOS Testing Framework * Valera's Droidcon Talk - E2E2U: Slack's Journey to Developer-driven End-to-end Testing * Valera's blog post on Slack - Android UI Automation: Part 1, Building Trust * Jake Wharton's Testing Robots

Contact* @valera_zakharov * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

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.

Shownotes* Heroku * Platform as a Service * Donn's gif service gifstagram.com * Flippa : Buy and Sell services online * Founder's Chats: Ep 41 * Options for different services: + AWS Lambda Function + Azure Functions * Postman : The Collaboration Platform for API Development * Vercel

Contact* @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

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.

Shownotes* KG's post - iPhones, Pixels and lazy Android developers * Ben Thompson's tweet * Donn's post - The Three Buckets (The Rule of Thirds) * Garage Band - Apple iPhone app * Reeder 4 - iOS RSS Reader app * CultureCode's Things - iOS Todo app

Contact* @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

We're back and Fragmented is going Indie again. A quick episode on the future of Fragmented.

  • New Artwork! Story on how Swapnil helped with our new artwork

Contact* @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

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.

How to help:* change.org [racial justice]

View Details

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.

Shownotes * Plumbing and Porcelain

commands * git gc vs

prune

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.

  • Git internals by John Britton of GitHub - CS50 Tech

Talk

Sponsors 🙏 Educative.io Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.

Contact * @gmccreight * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

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:

Shownotes * Jetpack Compose with Leland Richardson * Understanding Compose (Android Dev Summit

'19) * Adventures in Compose - The Doom fire

effect * Gap Buffer - Wikipedia * Learning Jetpack Conpose by example

Sponsors 🙏 Educative.io Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.

Contact * @intelligibabble * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

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.

Shownotes * Firebase Crashlytics * Rollbar Integration * Ops Genie * Pager Duty * Statuspage.io * Status.io * Keyboard Maestro

Good resources * What happens when the pager goes off? * Why Your Engineering Teams need Incident Commanders

Steps to handle on-call 1. Triage 2. Coordinate 3. Mitigate 4. Resolve 5. Follow up (Root Cause Analysis or Post Mortem)

Sponsors 🙏 Educative.io Learn and practice Android development from inside your browser. Visit Educative.io/fragmented to get 10% off.

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

What are Polyglot programmers, should you be one? Listen to this episode and find out!

Shownotes * KG's youtube screencast * awk programming language * Smart and Gettings Things Done : Joel

Sposky * Ep #119: Flutter with GDE Eugenio

Marletti * Learning Ruby: Why's poignant GUIDE to Ruby

Sponsors 🙏 Educative.io Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or b.jkl.gg or @kaushikgopal

View Details

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.

Shownotes * Maker's schedule vs Manager's

schedule * git commit --allow-empty -m "todo: listen to fragmented" -m "send KG & DF tweet" * git squash &

merge * Instacart.com * Autonomous AI Smart desk * Android from the

trenches * Jarvis Bamboo Standing

desk * Ergo driven TOPO

footmat

Sponsors 🙏 Educative.io Learn and practice Android development from inside your browser. Visit Educative.io/Fragmented to get 10% off.

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details


Wordpress 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.

Shownotes 3-2-1 Backup Rule * The 3-2-1 Backup Strategy * The 3-2-1 Backup Rule – An Efficient Data Protection Strategy * Why 3-2-1 Backup Sucks

Backup Software * KG's primary Mac:

+ SuperDuper! by Shirt Pocket for bootable backups
+ Arq Backup for versioned backups -> Backblaze B2 Cloud Storage
  • 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

```

Misc * Wirecutter recommends SeaGate drives instead of the Western Digital Kaushik uses 🤷‍♀️

Sponsors 🙏 Square Check out the new Square YouTube channel for developers. Square has SDKs and APIs to make payments and run a business.

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * kaushikgopal (on YouTube) or blog.kaush.co or @kaushikgopal

View Details

Today we talk about logging. When to log, how to log, what to log - our thoughts on the subject.

Shownotes * GDPR * Android Logging priorities * LogDna * [Loggly](https://www.loggly.com/lp-loggly-general/ * Datadog * Papertrail * Android logging: Timber by Jake * JS Logging: Winston * Google - libphonenumber * Fragmented Podcast Episode #145: Tracking Network Requests With x-Request-ID

Sponsors 🙏 Square Check out the new Square YouTube channel for developers. Square has SDKs and APIs to make payments and run a business.

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and blog.kaush.co

View Details

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.

Shownotes * Why Google did Android * KG privacy notes 2019 -> 2020 * DuckDuck Bang syntax

Google Chromium and Ad-blocking * Google to restrict modern ad blocking Chrome extensions to enterprise users * Google saying it isn't killing Ad Blockers. Ad Blockers Disagree

Misc * New Microsoft Edge is based on Chromium * Download Firefox * Firefox Multi-Account Containers add-on + Temporary Containers for the privacy conscious.

Follow up from a previous episode: * Svelte : framework that spawned from New York Times. Thanks Midhun.

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal or blog.kaush.co

View Details

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:

Shownotes * KG's 2020 New Year Resolution blog post * The Year 2000 problem * The Year 2038 problem * The Leap Year as Explained by Neil deGrasse Tyson

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal or blog.kaush.co

View Details

Shownotes 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

Personal website hosting * Donn Felker * Kaushik's website * html-proofer * Wordpress * jekyll static website blogging

Domain checking services * Domainr * Lead Domain Search

Docker * Docker Hub * Circle CI : dockerfile wizard * KG's ruby-node docker container * Docker Compose * RabbitMq * Kubernetes : K8s * Udemy course: Docker & Kubernetes - The complete guide * Vue Js * Dockerizing a Node.JS Server

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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!

Resources * Chris Banes - Suspending over Views Animations & CoRoutines * KotlinConf 2018: Exploring coRoutines in Kotlin * Coroutines Guide * Coroutines test library * Codelab: Kotlin Coroutines * Codelab: Kotlin Advanced Coroutines * Testing Coroutines Talk * Cancellation and Exceptions in Coroutines Talk * Sean’s Coroutines blog series * Manuel's blog post about Flow in the Android Developer Summit app

Contact * Sean McQuillan @objcode * Manuel Vivo @objcode * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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!

Sponsors 🙏 Square 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.

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

  • Application.registerActivityLifecycleCallbacks
  • Android X Lifecycle Component
  • Ep 16: Favor composition over inheritance

Sponsors 🙏 Square 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.

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Links * Ron Jefferies Tweet * Luxman Tweet * Donn Tweet * What is a Spike?

Sponsors 🙏 Square 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.

Flatiron School 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!

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Shownotes Modularization (KG's favorite resources) * Google IO 19 : Build a modular Android app architecture * Jeroen Mols's posts : Modularization - Why you should care * Joe Birch's posts : Modularizing Android Appications * Ep 117 : Multi Module Builds in Gradle * Karan Trehan's post : Writing a modular project on Android

Sponsors 🙏 Vettery 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

--

Flatiron School 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!

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Functional Programming basics * Ep 83 : Learning the basics of functional programing with Anup Cowkur * Ep 120 : Functional Programming with Kotlin Arrow team * Ep 121 : Functional Programming with Kotlin Arrow team (Part 2)

Unidirectional State Flow * Ep 148 and Ep 151 * KG's speakerdeck slide * KG's Movie search apps Android app + iOS app

Resources for FP/IO contention * StackOverflow Q&A * Flying Frog Blog: Functional programming and databases

Sponsors 🙏 Flatiron School 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 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

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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!

Things Mentioned * Commenting Code Post

Sponsors Bitrise 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

Flatiron School 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!

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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!

Things Mentioned * Mobilization conference - KG is about to give a talk at * Post it notes pic1 pic 2 * My Speakerdeck * San Jose Theme * Nick Butcher - speakerdeck * Cyril Motier - speakerdeck

Sponsors Vettery 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

Bitrise 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

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Sponsor 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

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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 ...

Sponsor This episode is sponsored by Instabug -

Understand How Your App is Doing with Real-Time Contextual Insights From Your Users

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Thanks To This Week's Sponsor: Bitrise 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

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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 ...

Thanks to this week's sponsor: Bitrise 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

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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 ...

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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 ...

Shownotes Patters * MVP Pattern * MVVM Pattern * MVI Pattern * MvRx * Clean Arhictecture

Mocking Out the API in Espresso * MockWebServer Course * WireMock Android

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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

Show Notes * Coil library * Colin's Twitter * Colin's Website * Introducing Coil: Kotlin-first image loading on Android

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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 ...

Shownotes * Jetpack Compose First Principels * React, Meet Compose Slides * Jetpack Compose Android Dev Docs

Leland's Contact info: * Twitter * Website

Fragmented Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Shownotes * Fragmented #154 - Developer Growth: Start Writing * The Single Best Thing You Can Do For Your Career

Sponsor 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!

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Shownotes * Caster.IO JUnit 5 Course * JUnit 5 Android Plugin * JUnit5 User Guide * Danny Preussler: The next gen of testing - Droidcon NYC 2018 (YouTube) * Marc Philipp: JUnit 5 Extensions - Joker 2017 (YouTube) * Spek Framework Testing for Kotlin

Get ahold of Marcel:

  • Marcel Schnelle Twitter
  • Marcel Schnelle Website

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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)

```

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Shownotes * Caster.IO Course * [Uncle Bob Clean Arch]https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html * Buffer Clean Architecture BoilerPlate * Chord Assist Guitar

Get ahold of Joe:

  • Joe Birch Twitter
  • Joe Birch Instagram

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Shownotes * objc.io * Kevin Galligan * Alec Strong * Egor Andreevich

Sponsors 🙏 * Instabug

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

Contact * @jessewilson * @chrismlacy * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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...

```

View Details

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.

  • Kotlin Sealed Classes

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

Shownotes * Digital trends: Comparing Pixel 2, 3 and 3A * Google Activity tracking * Google Activity tracking Controls * Flutter for Web * New navigation paradigm in Android Q * What's new in Android Deveopment Tools - Torr's IO talk

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

Sponsors 🙏 * Instabug - Instabug is an SDK that completely takes care of your beta testing and user feedback process so you can debug, fix, and improve your app quality faster. Go to instabug.com/fragmented, signup, install the SDK, and you will get their brand new t-shirt and a 14-day free trial.

View Details

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

Shownotes * What Can Machine Learning Do? * ML Kit * ML Kit Demo Video * ML Kit Quickstart * Image Labeling Example * Custom Models * How Does Prisma Work? * Cucumber Example * Tensorflow Demo Apps * Inside AI Newsletter * TensorFlow Lite * TensorFlow Lite (TF Dev Summit '19) - [VIDEO] * Custom On-Device ML Models with Learn2Compress * Microcontoller Support * Face Generation * DroidCon NYC Applied Tensorflow iN Android Apps

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Contact Dan Jarvis on LinkedIn, Medium or GitHub * Donn Felker - @donnfelker (Twitter) and donnfelker (Instagram) * Kaushik Gopal - @kaushikgopal (Twitter) and kaushikgopal (Instagram) * Fragmented on Twitter: @fragmentedcast * Our YouTube channel * Join thousands of other developers on our free chat server. Ask questions, answer questions, be part of the community at our The Fragmented Discord chat

View Details

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.

Shownotes * Android Q Features

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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

Shownotes * Material.io Website * Android Material Components * Material Components GitHub * Tasks App * Developer Tutorials * AndroidDev Summit Talk * Material Theme Editor

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Contact Cameron and Connit at - GitHub Issues, StackOverflow * Donn Felker - @donnfelker (Twitter) and donnfelker (Instagram) * Kaushik Gopal - @kaushikgopal (Twitter) and kaushikgopal (Instagram) * Fragmented on Twitter: @fragmentedcast * Our YouTube channel * Join thousands of other developers on our free chat server. Ask questions, answer questions, be part of the community at our The Fragmented Discord chat

View Details

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.

Shownotes * Android Midi * Oboe * Intro to Oboe (Video) * Google IO 2019 Talk

Sponsors 🙏 * sentry.io

Contact * Don Turner - @donturner * Donn Felker - @donnfelker (Twitter) and donnfelker (Instagram) * Kaushik Gopal - @kaushikgopal (Twitter) and kaushikgopal (Instagram) * Fragmented on Twitter: @fragmentedcast * Our YouTube channel * Join thousands of other developers on our free chat server. Ask questions, answer questions, be part of the community at our The Fragmented Discord chat

View Details

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.

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

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.

Shownotes * Android Q Features

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

The Android community has come to use Rx pretty heavily but surprisingly there hasn't been any one convention that's won, when it comes to how we name our functions that return Observables. getUser(), user(), userUpdates() ? In this mini-episode dutifully does the yak-shaving for you and discusses what some options are and what the community has been gravitating towards.

Enjoy.

Shownotes * yak-shaving

Upday's convention: * Florina's tweet * Upday's blog post - Reactive Frustrations 1

Options

``` // option 1 fun getUser(): Single // yuck

// option 2 fun user(): Observable // but what does this mean?

// option 3 fun user(): Single fun userUpdates(): Observable // or fun userStream(): Observable // this is looking good

// option 4 (upday style) fun userOnce(): Single fun userStream(): Observable fun userOnceAndStream(): Observable

```

Stay tuned for a future episode, where we discuss more details and more complicated cases to handle (like emitting a list of user, policies for fetching the first user as quickly as possible etc.).

Also #FinishNotation.

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

Growing as a developer is important for you, your career and your future. One of the best ways to grow your career is to start writing.

Donn recommends starting a blog or contributing to a blog. The process of writing will expose your weak points in your comprehension of a topic. Refining your communication skills through writing and putting thoughts out into the universe via a blog will broaden your skills as a developer.

Ultimately, writing is about communication and communication is the cornerstone of success in much of anything. In this episode, Donn walks you through why you should start writing to help you grow as a developer.

Enjoy.

Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/ * Instabug -They're giving a special offer for all listeners, go to instabug.com/fragmented, signup, install the SDK, and you will get a free Instabug t-shirt and a 14-day free trial.

Contact * Discord chat or @fragmentedcast or [our Youtube channel][10] * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

Listen to all star Indie developer and friend of the show Chris Lacy. Chris Lacy created the beloved Action Launcher - arguably one of the best Launcher apps on Android. In this epiisode, he talks to us about what it's like being an indie developer, starting on Action Launcher and of course his newest creation - ActionDash.

Enjoy.

Shownotes * TweetLanes * Action Launcher * On selling Link Bubble * Brave browser

ActionDash * Introducing ActionDash * Download on the play store * Slick graph library MPAndroidChart * Action Launcher is hiring!

Sponsors 🙏 * sentry.io * Nevercode + Nevercode - CI/CD for Android, iOS, React Native & Ionic + Try Codemagic + Join Flutter CI/CD Slack Community

Contact * @chrismlacy or work with him or leave a 5 star reviews on ActionDash :) * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

After you've been working on an app for sometime, the most common quandry one runs into is the need to rewrite the app. We've all been there, there's technical debt, we've improved our understanding, the tools have become better, we've become better. So should you go back and just rewrite the whole app? Jeroen walks us through his thinking.

Shownotes * The big Rewrite - Jeroen's talk + Droidcon Italy + Slides for the talk with notes * Philips Hue * Philips Hue API

Resources * The big rewrite - Chad Fowler * The big rewrite - Jo Van Eyck * Paying technical depth - Jeroen Moons * Things you should never do - Joel Spolsky * Write awesome unit tests - Jeroen Mols * Pro Android Studio - refactoring - Jeroen Mols * Why We Decided to Rewrite Uber’s Driver App - Nandhini Ramaswamy and Adam Gluck * How to Ship an App Rewrite Without Risking Your Entire Business - James Barr, and Zeyu Li

Sponsors 🙏 * sentry.io

Contact * @molsjeroen or his blog or his speakerdeck * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this episode, we continue our discussion from episode 148 on evolving android architectures. We collected some of the questions from the community and try to answer them.

Shownotes * Listen to the recap in episode 148 * LCE: Modeling Data Loading in RxJava * Rx example pull from db then network (from KG's presentation) * Donn's caster.io episode on the amb operator * Akshay's episode on Arch components (specifically Live Data) * Jose's cheatseet on Activity lifecycle * KG's example of using this architecture

Sponsors 🙏 * sentry.io * Nevercode + Try Codemagic - CI/CD for Flutter apps by Nevercode + Join Flutter CI/CD Slack Community

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

Shownotes * Kotlin Returns and Jumps Documentation

Code

``` data class Customer(val isPlatinum: Boolean)

fun main() {

val customer = Customer(false)

println("Number of points customer has: ${calculatePoints(customer)}")

// Break out of the loop once we're over 25
for (i in 1..100) {
    if (i > 25) {
        break
    } else {
        println(i)
    }
}


// Skip all even numbers
for (i in 1..100) {
    if (i % 2 == 0) {
        continue
    } else {
        println(i)
    }
}


// Break out of the outer loop (which breaks out of the inner too) using a label
donn@ for (i in 1..100) {
    for (j in 100..200) {
        if (j > 150) break@donn // This will break out of the inner loop and outer loop
        else println("i: $i, j: $j")
    }
}

// Continue processing the next outer loop value when a condition is met.
donn@ for (i in 1..100) {
    for (j in 100..200) {
        if (j > 150) continue@donn // This will break out of the inner loop and outer loop
        else println("i: $i, j: $j")
    }
}

// returns with label
example1()
example2()

println("I'm done processing!")

}

fun calculatePoints(customer: Customer): Int { if (customer.isPlatinum) { return 100000 } else { return 10 } }

fun example1() { listOf(1, 2, 3, 4, 5, 6, 7, 8, 9).forEach { if (it > 7) { return } else { println(it) } } println("This wont print :( because return exited the bar() function") }

fun example2() { listOf(1, 2, 3, 4, 5, 6, 7, 8, 9).forEach bin@ { if (it > 7) { return@bin } else { println(it) } } println("This will print! :) return exited the forEach!") }

```

Sponsors 🙏 * Nevercode

+ Nevercode is taking Flutter revolution extremely serious and is prepared to offer kick-ass CI/CD for Flutter projects with codemagic.io. Check it out and get started at https://codemagic.io/
  • Sentry.io

    • Sentry tells you about errors in your code before your customers have a chance to encounter them.

    Check them out at: https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this quick fragment, Kaushik talks about the new Kotlin 1.3 experimental feature "inline classes" and how it helps with Type driven design.

Shownotes * Kotlin releases 1.3 * Fragmented episode #116 - inline, noinline & crossinline * Think strong types and simple values + typealias.com blog

Type driven design resources * Type drive approach to Functional design - Michael Feathers * Type driven design in Elm * blog.ploeh - Type driven design

Kotlin KEEP * KEEP proposal - inline classes * KEEP discussion

vs typealias * Fragmented Ep #122 - typealiases * inline classes vs typealiases * How to represent money in programming * Kotlin experimental * Jake Wharton - inline classes make great database ids

Sponsors 🙏 * Nevercode

+ Nevercode is taking Flutter revolution extremely serious and is prepared to offer kick-ass CI/CD for Flutter projects with codemagic.io. Check it out and get started at https://codemagic.io/
  • Sentry.io

    • Sentry tells you about errors in your code before your customers have a chance to encounter them.

    Check them out at: https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this episode, Donn and Kaushik talk about the state of android architectures and how they've stared to evolve. Kaushik recently worked on a project of coming up with an evolved version of an MVVM architecture, very similar to what the Android community now calls MVI.

Special request: if you have follow up questions or clarifications or things you'd like to see specifically with respect to this dicussion, hit us up on the Discord #fragmented-podcast channel with your thoughts and we'll make sure to address them in future parts!

Shownotes * MBLT-Dev talk by KG : Unidirectional state flow patterns - a refactoring story * github sample repo with this pattern

Salient features of the pattern: I. Screens are driven by a single ViewModel

II. Screens listen to a single Observable exposed from the ViewModel

III. Screens listen to a single Observable exposed from the ViewModel

IV. Events are sent into the VM through a single function processInputs

V. Break(ing) the Chain

VI. Testing strategy

Inspiration * The state of managing state with RxJava * MVI patterns with Hannes Dorfmann * MVRx

Sponsors 🙏 * Nevercode

+ Nevercode is taking Flutter revolution extremely serious and is prepared to offer kick-ass CI/CD for Flutter projects with codemagic.io. Check it out and get started at https://codemagic.io/
  • Sentry.io

    • Sentry tells you about errors in your code before your customers have a chance to encounter them.

    Check them out at: https://sentry.io/for/android/

Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this short fragment episode, Donn explains how you can clean up your RxJava 2 streams and ensure no memory leaks are occurring by using the AutoDispose library from Uber.

Shownotes * AutoDispose Library * Tool to help migrate to RxJava 2

CatchUp Library

Code Samples Java

``` myObservable .map(...) .as(AutoDispose.autoDisposable(AndroidLifecycleScopeProvider.from(this))) .subscribe(...)

```

Kotlin

``` myObservable .map(...) .autoDisposable(AndroidLifcycleScopeProvider.from(this)) .subscribe(...)

```

With Scope Event Provided

``` myObservable .map(...) .autoDisposable(AndroidLifcycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)) .subscribe(...)

```

Testing

``` // File: CustomerService.kt class CustomerService @Inject constructor(...) { lateinit var scopeProvider: ScopeProvider }

// Usage in Fragment/Activity/etc val service = CustomerService(...).apply { scopeProvider = AndroidLifecycleScopeProvider.from(this) }

// Usage in Test val service = CustomerService(...).apply { scopeProvider = TestScopeProvider.create() }

```

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram) * Fragmented Chat

View Details

  • Dependency Injection

  • Constructor_setter_method injection

  • Service Locators or other DI frameworks
  • Common Frameworks

  • Dagger

  • Koin

  • Kodein

  • ToothPick

  • How to test

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

    6. KISS principle KISS principle - Wikipedia

    7. Examples
      1. Code Duplication
        1. “Extract this into a method”
      2. Lets create a framework for this
      3. Kaushik’s - 3x rule
        • if something is duplicated 3 or more times, think about extracting it
      4. 3/6 Rule - In 6 months, will I be able to understand this in under 3 minutes?

Contact @fragmentedcast or our Youtube channel

@donnfelker and donnfelker (on Instagram)

@kaushikgopal and kaushikgopal (on Instagram)

View Details

In this short fragment, Kaushik explains how you can trace network requests from your app by adding a special header. Easily trace an HTTP request all the way from a client to your backend web process.

Shownotes * What is the X-Request-ID * HTTP Request IDs improve visibility across the application stack * How HTTP headers work * Where does the X- come from?

Sponsors 🙏 * codemagic.io by NeverCode + Join their Flutter Community here

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this episode, Donn and Kaushik talk about productivity tools for developers. As developers, what are some additional tools and utilities that really up your game. If you wanted to see how they tweak their development environments and workstations in general, this is a good episode to listen. Also introducing a Fragmented Discord Chat server!

Shownotes * Fragmented Discord Chat Server

Productivity tools Keyboard Maestro * Keyboard Maestro - Mac (Referral code with 20% discount) * Sample macros: + Demo: Better auto pairing with BBEdit and Keyboard Maestro + Demo: Autocopy text from one program to another * AutoHotkey - Windows (Windows equivalent of sorts) * DuckDuckGo + Bang Syntax * Muzzle App * Window management tools: + Divvy + Spectacle + Magnet + Moom + Phoenix * VSCode + Night owl theme * OhMyZsh + Spaceship prompt + Auto Suggestions * Fish Shell * Kap - Screen recording tools * Sip - Color Management

Sponsors 🙏 * codemagic.io by nevercode + Join their Flutter Community here

Contact * @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this mini fragment, Donn and Kaushik share some thoughts on real world testing with Android development - a favorite topic of theirs.

Kaushik recently ran into a case where an espresso test fails because the UI stops performing. It's an interesting discussion on figuring out what matters when you write your tests. They dive into strategies and techniques around testing. What makes a good test, what should you be testing?

They then talk about why Hermetic testing is pretty hard on mobile and ideas around a simple solution that could be provided out of the box. They then round it up talking about TDD and it's role in today's world.

Shownotes * Espresso Testing lists (onData) * Espress test swipe action * What is the fold * Hermetic Servers testing * MockWebServer * WireMock

Sponsors 🙏 * American Express Jobs - American Express is hiring Android developers! * NeverCode + Blog post on developing apps 20% faster

Contact * @fragmentedcast or our Youtube channel * @jebstuart * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this episode, we talk to our friend Matt Logan. Matt took some time off and worked on an indie app called Sessions. He built this for both Android and iOS. In this episode we talk to him about his experience building apps on both platforms, techniques, advice and other good stuff.

Shownotes * Sessions Android iOS * Strava * Chris Lacy - Action Launcher * Indie Hacker's podcast * Fragmented Ep #64 - Garbage Collection (Android) vs Reference Counting (iOS) * Matt's blog post on code sharing

Sponsors * Instabug * NeverCode + Blog post on developing apps 20% faster

Contact * @fragmentedcast * @_mattlogan * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this mini fragment, Donn and KG talk about Impostor syndrome. Most of us developers are plagued by this. Does this feeling ever go away? How do we deal with this? Listen to this short episode to find out more.

Shownotes * Karl the Fog (wikipedia page) @KarlTheFog * Matt's twitter post on background process limit 0 * #135 - You can't learn everything * I’m willing to look foolish, if it means I’ll learn something. * Larry page 1996- Java thread * #76: Taming the activity lifecycle with Kristin Marsicano * Jose Alcérreca's lifecycle cheatsheet bookmark

Sponsors * Instabug -

Thousands of companies including Lyft, eBay and T-Mobile rely on Instabug to receive

comprehensive bug reports from users and testers, helping them iterate faster

and enhance their app quality. Signup now, integrate the SDK for free, and get a

special Instabug t-shirt. * Nevercode

-Develop apps 20% faster with the leading CI/CD partner for iOS, Android, Cordova, Ionic, React Native & Flutter projects.

Blog post on developing apps 20% faster

Contact * @fragmentedcast * @preusslerberlin * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

We all know of ProGuard, we want to use it and like it. But let's face it proGuard ain't pretty. In this episode we have Jeb walk us through the magic of ProGuard.

We talk to Jeb Ware of American Express. Jeb works as an Android developer and has given some great talks on ProGuard. He walks us through what ProGuard is, how it works, advancements with R8 and more.

By the end of this episode, you should have a new found appreciation for proGuard and bravely approach adding proGuard to your projects.

Shownotes * How ProGuard works - Jeb at Droidcon Boston * ProGuard Manual * D8/R8 announcement * R8 issue tracker

Sponsors * American Express Jobs - American Express is hiring Android developers!

Contact * @fragmentedcast or our Youtube channel * @jebstuart * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this episode, Donn and Kaushik talk to Uber's Manu Sridharan on static code analysis. Manu's a badass who did his PhD on the subject! He explains how static code analysis works, how Uber leverages these tools in their app development pipeline and how we can use such tools to build high quality Android apps.

Note from Manu: I found the story I was thinking about: Reed Hastings founded the company that built the Purify tool for debugging memory errors in C programs before founding Netflix. But, that's actually not a static analysis tool; it does dynamic analysis by adding extra metadata at runtime.

As far as the history of lint goes, from Wikipedia looks like Kaushik's guess was exactly right as to why it's called lint. Looks like the name goes back to the late 1970s.

Misc * ErrorProne * Improve your code with Android lint checks * checkstyle * RxThreadEffectChecker * The Checker framework * NullAway - Uber * Infer - Facebook * Infer: RacerD - Facebook

Contact * @fragmentedcast (on Twitter) or our Youtube channel * @rakingleaves * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this mini fragment, Donn asks KG about a recent hackathon side project that he worked on with Kotlin scripting.

We go into kotlin scripting (using kscript), pros cons, setting it up and more. We've added links some interesting resources, so you want to make sure you check out the shownotes for this one, so you too can explore kotlin scripting and see if it's a fit for you.

Shownotes Existing solutions for poll/vote tabulation * polleverywhere.com * surveymonkey.com * polldaddy.com

Misc * kscript by holgerbrandl * blog post on the hackathon vote tabulation script * what the csv output from google forms looks like * github repo for script - with installation instructions * Highly recommended - Talking kotlin episode on kscript

```

// slick kotlin usage

override fun onCreate(savedInstanceState: Bundle?) = super.onCreate(savedInstanceState).also {
    setContentView(R.layout.activity_something)
    // ...
}

```

Sponsors * American Express Jobs - American Express is hiring Android developers!

Contact * Youtube channel * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

In this episode, DF and KG decompress. They start off talking about ideas around KISS vs DRY in software engineering. They move on then to talk about a dear topic - functional vs unit testing and then dive into some of the woes of having a testing infrastructure spun up. Also announcing our youtube channel !

  • Fragmented's Youtube channel

Sponsors * American Express Jobs - American Express is hiring Android developers!

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

In this fragment episode, Donn talks about Kotlin extension functions. He discusses what they are, how to build them, why they're useful, how to organize them, visibility and how to call them Java and much more.

Show Notes * Kotlin Extension Functions Docs * Calling Extension Functions from Java * Kotlin KTX View Functions

```

import android.view.View

fun View.gone() {

this.visibility = View.GONE

}

fun View.visible() {

this.visibility = View.VISIBLE

}

```

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

Donn's on a roll again this week and talks to us about his experience having developed Android for a while. In the early days of Android development, as app developers we felt like we had a decent grasp of everything you needed to know to pump out decent apps.

But with the time, and the latest updates, that has become a tricky thing. This is a good problem to have for the ecosystem but it can make it seem very daunting for developers, both new and old.

Donn gives his 2 cents on this subject.

Download

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

In this episode, Donn talks about how you can get effective help with your coding problems with an SSCCE - a Simple, Self-Contained, Correct (Compilable), Example.

Using an SSCCE provides others with a quick, concise way to examine the problem without extraneous libraries, UI toolkits and various other parts of your application that do not matter to the problem at hand.

Donn breaks down each component of the SSCCE so you can wrap your head around what you need to get help quickly.

Links * SSCCE.org

Sponsors * Instabug - Instabug is the simplest yet most comprehensive bug reporting and In-app feedback SDK.

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

A hotly debated topic at the moment is the use of a library like Dagger for dependency injection in the world of Kotlin. In this episode, we talk to Danny Preussler. Danny's a pro who's been around from the Java 1.0 days! He helps trace the history of dependency injection in Java all the way to today, in a Kotlin world where there exists alternatives like Koin and Kodine.

We dive into how some of these use a Service Loader/Locator pattern and the subtle differences with dependency injection. Listen on for an action packed episode.

Show Notes * Danny's slides (DI in a Kotlin world) talk * Koin * Toothpick * how to pronounce reified

Service Locators vs Dependency Injection

Your application is aware it's using a Service Locator, but your application should be totally un-aware that it's using a Dependency Injection Container.

  • SO post on the difference between DI & SL pattern
  • Martin Fowler's post on DI, IOC, SL
  • Caster.IO (paid) course by DF on setting up testing with Dagger 2 and Espresso
  • Mark Seeman on Service Locators being an anti-pattern

Sponsors * Bitrise - Bitrise is your mobile continuous integration and delivery for your whole team, with dozens of integrations for your favorite services.

Contact * @fragmentedcast * @preusslerberlin * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)

View Details

In this mini fragment Kaushik talks about dealing with the Money object. With money we need decimals, but the obvious solution of using a float or double may not work as advertised. Listen to this episode to find out why and how you can go about dealing with this.

Show Notes * The infamous Short - Ep029: All about the infamous 65,536 dex method count * IEEE_754 float storage format * How binary fractions work

Problematic snippet 1:

``` println(1.03-0.42) # prints 0.6100000000000001

```

Problematic snippet 2:

``` var x = 0F (1..100).forEach { i -> x += 0.01F } println(x) # 0.99999934 vs 1

```

Sponsors * Bitrise - Bitrise is your mobile continuous integration and delivery for your whole team, with dozens of integrations for your favorite services.

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

We live in a time of booming AR (and VR). We wanted to talk to someone who’s worked with it and would know a thing or two about the subject. Then we found Yuliya – also known as the walking wizard of ARCore. In this episode, she teaches Kaush and Donn about ARCore, the differences between AR/VR, the fundamental building blocks of ARCore, some of the newer concepts introduced like Sceneform. An action packed episode to say the least. Listen on !

Show Notes * ep 79 - How do i get started with VR Apps * Tango shutting down * ARCore * ARKit * Cloud Anchors: Share AR experiences * ARCore - Geometry detection * Sceneform - 3d view rendering

Resources * Google ARCore github * Yuliya's blog post * Yuliya's talk

Sponsors * Bitrise - Bitrise is your mobile continuous integration and delivery for your whole team, with dozens of integrations for your favorite services.

Contact * @yuliyakaleda * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * The post that kicked it all off * Flow - static type checker for Javascript * Babel -Javascript compiler * Heisenbugs * Bugsnag * RecyclerView : UICollectionView * Facebook blot post: State of React Native 2018 * Kotlin Extensions * Kotlin Delegated properties * Epoxy

Contact * @gpeal8 [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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:

Show Notes * React Native * The post that kicked off this show * Spike Brehm * Leland Richardson * Building a visual language - DLS * Yoga library - cross layout engine * YogaLayout - Android

Sponsors * Bitrise - Bitrise is your mobile continuous integration and delivery for your whole team, with dozens of integrations for your favorite services.

Contact * @gpeal8 [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes * VSCO * Sam's DroidconSF 2017 - Thinking Beyond the REST API: gRPC for Android * Microservices * Go (programming language)

Implementation * Protocol Buffers * protobuf-gradle-plugin * Reactive gRPC * Differences between gRPC & graphQL

Misc * codegen grpc-Java * codegen grpc-Lite * codegen Wire * Curling: grpcurl * envoy

Sponsors * Bitrise.io * Virtual Device Testing: full integration with Firebase Test Lab, run emulators quickly and reliably

Contact * @samwritescode [twitter.com] * @fragmentedcast [twitter.com] * @ryanjsalva * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Caren's "Learning Kotlin in Action" summary blog post series * June Oven * June Oven Video

Apis * Audio Latency * MediaPlayer * SoundPool * ExoPlayer

Resources * Droidcon Boston * Caster.IO - ExoPlayer course

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @calren24 * @fragmentedcast [twitter.com] * @ryanjsalva * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * GraphQL * GraphQL specification

Apollo * Apollo Android - GraphQL Client for Android

Resources * droidcon NYC 2017 - GraphQL on Android is here!

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @friendlymikhail * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Download directly

Show notes * GraphQL

Sample GraphQL servers * Github explorer * Star Wars api GraphQLCMS visualization * Shopify GraphQL Explorer

Resources * React, Relay and GraphQL: Under the hood of the Times website redesign * The New York Times - Now on Apollo

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @friendlymikhail * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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

Show Notes Android Dialogs * Chiuki @chiuki * Huyen Tue Dao @queencodemonkey * Android Dialogs on YouTube

Pocket Casts * Russell Ivanovic @rustyshelf * Phil of PocketCasts @geekygecko * Pocket Casts * Wall Street Journal - Public Radio organizations buy Pocket Casts

io2018 stuff * Google I/O 2018: What's new in Android * Google Duplex announcement at Google IO * Android Jetpack (intro video) * Android Jetpack: manage UI navigation with Navigation Controller (Google I/O '18) * Material theming * Material Theme Editor (Sketch plugin) * Video 1: Guide to the new material.io website * Video 2: Build great Material Design products across platforms * Android App Bundles (iOS App thinning) * Android Jetpack: sweetening Kotlin development with Android KTX (Google I/O '18) * Android Slices: build interactive results for Google Search (Google I/O '18) * Getting started with App Actions (Google I/O '18) * Google is working on bringing Android Studio to Chrome OS

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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!

Shownotes * F**k you Android

layout complaints * Kotlin Android Extensions * Anko layouts (slightly different from Kotlin Android extensions) * Android Studio 3.1 Stable - Build successful but can't resolve error

Navigation & System bar frustrations: * How do I ge the height and width of the android navigation bar

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.

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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

Show Notes * Kotlin Inline functions

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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.

Show Notes Arrow library * Raul: Announcing Arrow for Kotlin * Jorge: Caster.io course - FP in Kotlin with Arrrow * Jorge: Kotlin Conf - Architectures Using Functional Programming Concepts * Paco: Arrow as a companion to Kotlin * Paco: Simple dependency injection in Kotlin (part 1) * Mario: Book on FP * Arrow Library eco system: Ank, Kollect, Helios

Misc * Arrow V 0.7.0 - now available * Higher Kinded types * KEEP - Type classes and Higher Kinded Types proposal * Kotlin Arrow docs

Get help on Arrrow * KotlinLang slack channel #arrow * Gitter: Arrow

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * Paco (website) * Raúλ Raja * Jorge Castillo * Mario Arias (in spirit) * Arrow KT * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Kotlin Arrow team * Paco (website) * Raúλ Raja * Jorge Castillo * Mario Arias (in spirit)

Misc * Arrow KT * 47 degrees * Jorge's caster.io course * Blogs & Presentations on FP - Arrow docs * Raul's presentation on Functional programming patterns

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @fragmentedcast [twitter.com] * Paco * Raúλ Raja * Jorge Castillo * Mario Arias (in spirit) * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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)

Show Notes * RxDart * Dart 2 * Flutter Weekly * Flutter on Gitter * Flutter on Codelab * Flutter on Github

https://play.google.com/store/apps/details?id=io.flutter.gallery&hl=en

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @workingkills [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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.

Show Notes * Clue app * Announcing Flutter beta 1 * Embedding Flutter into an existing app (examples flutter_view & platform_view) * Stepper widget * Getting started on Flutter (docs) * Compiled vs Interpreted languages

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @workingkills [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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.

Show Notes * Instant Apps Episode * Android Library Module vs Feature Module * Implementation vs Compile - A Visual Guide * Writing a Modular app in Android * ButterKnife Woes * Android Studio and Pure Java Modules * Sam Edwards buildSrc and build.gradle Autocomplete Post * Sam Edwards Gradle Ext Video * Sam Edwards Gradle AutoComplete * Phil Breault Renaming Gradle Build Files * Google Arch Samples - versions.gradle

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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.

Show Notes * Kotlin Inline functions

Code Snippets: Look at the official shownotes page for some code snippets

Misc: * PublishedApi annotation * Matt Logan's post on inline keyword * Ben Daniel Medium post - inline, noinline, crossinline — What do they mean?

Sponsors * Microsoft AppCenter – Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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!

Show Notes * Android Architecture Components

Lifecycle * Handling lifecycles with Lifecycle-Aware Components * Lifecycle Owner * Lifecycle Observer * Best practices for lifecycle-aware components * Caveat: handling onStop events

ViewModels * Architecture Guide: ViewModels * View Model

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") } } }

```

LiveData * Live Data * MediatorLiveData

Misc * Android Architecture Components Deep Dive Course on Caster.IO * Fragmented - Room episode with Florina * Fragmented - AAC Paging library with Florina

Sponsors * Microsoft AppCenter - Sign up now on appcenter.ms and spend less time managing your app lifecycle and more time coding.

Contact * @Akshay_Chordiya [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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/

Show Notes * VSTS: https://www.visualstudio.com/team-services/ * Microsoft on GitHub: https://github.com/Microsoft * The App Center CLI: https://github.com/Microsoft/appcenter-cli * Azure function that automatically creates branch configurations for PR's and communicates status back to Github.: https://github.com/pniko/function-appcenter-build- * App Center API: https://docs.microsoft.com/en-us/appcenter/api-docs/ & https://openapi.appcenter.ms/ * Detox fo React Native Native: https://github.com/wix/detox * Azure Server Functions: https://azure.microsoft.com/en-us/services/functions/

Sponsors * Mapbox - Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Contact * @lbcpat [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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.

Show Notes * Google IO episode (#84) for Christina's running story * Pinterest app * Calligraphy by Chris Jenkins * Android 8.0 Custom fonts * Material design guidelines * Brio design system by Pinterest's Lin Wang and Thorben Primke * Pinterest stars you should follow on Twitter -> Mallika & Alice * Christina's code from Kotlintown talk * Christina & Huyen presentation from KotlinConf

Sponsors * Mapbox - Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Show Notes * Google IO episode (#84) for Christina's running story * Pinterest app * Calligraphy by Chris Jenkins * Android 8.0 Custom fonts * Material design guidelines * Brio design system by Pinterest's Lin Wang and Thorben Primke * Pinterest stars you should follow on Twitter -> Mallika & Alice * Christina's code from Kotlintown talk * Christina & Huyen presentation from KotlinConf

Sponsors * Mapbox - Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Contact * @runChristinaRun [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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.

Links * Effective Java (3rd Edition) Book

Sponsors * Mapbox - Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Check them out today at mapbox.com/android

Contact * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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. :)

Links * Effective Java (3rd Edition) Book

Sponsors * Mapbox - Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Check them out today at mapbox.com/android

Contact * @fragmentedcast [twitter.com] * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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:

Download directly

Show Notes * BuddyBuild is now part of Apple * Google buys Sparrow

Differences between CI/CDs services * Good article on CI * Nice infomatic explaining CD vs CD

Options for CI Services * Jenkins * CloudBees - enterprise Jenkins * Bitrise + Bitrise and Firebase test lab * NeverCode + Welcoming Android developers blog post by NeverCode * Microsoft AppCenter + Ep 104 - Donn talks to the Samina from AppCenter * Circle CI + 2.0 docs + Testing with Firebase test lab * Team City - Jetbrains * Code Ship

Sponsors * Mapbox - - Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Check them out today at mapbox.com/android

Contact * @fragmentedcast [twitter.com] * @ryanjsalva * @donnfelker and 📷 donnfelker * @kaushikgopal and 📷 kaushikgopal

View Details

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?

Show Notes * Kotlin Sequence * Java Iterable vs Iterator - stackoverflow.com

Eager/Lazy 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

Intermediate and terminal operations 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

```

Sponsors * Mapbox - Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Check them out today at mapbox.com/android

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes * (Apache) Cordova * React Native * CodePush * CodePush moving to App Center * App Center * Service workers: an Introduction

Misc * Expo JS * nvm * npm

Noteworthy quotes from this episode: * As developers, we are empowered to break things; it's our god given right! * Javascript is a beautiful disaster

Sponsors * Mapbox Android developers don't have to settle for a default same-map-no-matter-what option in their Android app. Mapbox offers complete map design control, allowing you to create beautiful custom maps to meet the needs of your Android users.

Check them out today at mapbox.com/android

Contact * @fragmentedcast [twitter.com] * @ryanjsalva * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Abt Alex Lockwood * Alex's blog - androiddesignpatterns.com * How to Leak a Context: Handlers & Inner Classes * Handling configuration changes with Fragments

Shape Shifter * shapeshifter.design * Blog post on icon animations * An Introduction to Icon Animation Techniques

SVGO * SVGo - optimizer * SVG-OMG - webapp that runs svgo on web by Jake Archibald

Shape Shifting & Icon animations * Alex Lockwood Droidcon SF 2017 Talk - In-depth parth morphing w/Shape Shifter * Building play to pause animation with ShapeShifter [slides] * Animal morph animation * Nick Butcher talk - Learn some new moves * Needleman-Wunsch algorithm * AVDO * github issue: AVDO -> 🥑 * Lottie

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.

Contact * @alexjlockwood [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Ray’s “The Rx Workflow Pattern” talk at Droidcon NYC: droidcon NYC 2017 - The Rx Workflow Pattern - YouTube * Flow Navigation -GitHub - square/flow: Name UI states, navigate between them, remember where you’ve been. * Square Coordinator Library - GitHub - square/coordinators: Simple MVWhatever for Android * Composable State Machine Pattern - A composable pattern for pure state machines with effects (draft v3) · GitHub

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @rjrjr [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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:

Show Notes The style guides * Android Kotlin Guides * official github repo for Android Kotlin guides * Google Java Style Guide * Jetbrains Coding conventions * Jetbrains collection of Kotlin idioms (also very useful)

Building the style guide * Jekyll * Android Testing support library website (inspiration for how to set it up) (github)

Android Kotlin Guides * Annotation use-site targets with Kotlin * guide on interop and file-names for use-site targets * logical ordering explanation for ordering companion object * I am the reason for Hungarian notation - Cedric Beust blog post

Mockito when problems: * Kotlin reserved keywords * Mockito Kotlin library (aliases when -> whenever)

Misc * Where to break lines * Immutable collection prototypes for Kotlin * @Kotlin tweet on immutable collections * @JvmOverloads (we love this!)

Contributing * Contribute to github issues on Android Kotlin Guides

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @JakeWharton [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show notes * Microsoft Connect

Miguel * MiguelDeIcaza (Wikipedia) * Wine * Midnight Commander * Gnumeric speedsheet * Evolution - Outlook clone for linux

Cross platform development * Mono project * Xamarin * Xamarin Live Player * Xamarin Workbooks

Misc * Scott Hanselman on using Visual Studio * Download Visual Studio * F# (programming language) * Bret Victor - The Future of Programming (youtube)

Simina Pasat * HockeyApp platform * Visual Studio App Center * Introducing App Center: Build, Test, Distribute and Monitor Apps in the Cloud * How to upload an Espresso Test to Visual Studio App Center * @vsappcenter

Contact * @MiguelDeIcaza * @SiminaPasat * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes About Hannes * hannesdorfmann.com blog * Mosby * Tickaroo * Freeletics * The Context podcast

MV* patterns * cyclejs * André "Staltz" Medeiros * MVVM pattern * MVP pattern * KG - What i learnt using Presenter patterns * MVC by Trygve Reenskaug

MVI like patterns Hannes series on MVI for Android (must read!) :

  • Reactive apps with MVI Part 1 - Model
  • Reactive apps with MVI Part 2 - View and Intent
  • Reactive apps with MVI Part 3 - State Reducer
  • Reactive apps with MVI Part 4 - Independent UI components
  • Reactive apps with MVI Part 5 - Debugging with Ease
  • Reactive apps with MVI Part 6 - Restoring state
  • Reactive apps with MVI Part 7 - Timing (Single live event problem)

Misc * Kategory - (Jorge) * Redux * Redux Saga - alternative side effect model for Redux apps * Redux Observable - AirBnB * Groupon Grux * Instacart LCE * The Journey of Android Engineers: Redux-ing UI Bugs by Christina Lee * Managing State with RxJava by Jake Wharton

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days * Rollbar open source library (alpha)

Contact * @sockeqwe [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Pixel 2 * Google Store - Pixel 2 * dbrand skins * Amanda's tweet on Samsung being annoying

KotlinConf * KotlinConf 2017 page * Pier 27 photo

Meeting folks * Erik Meijer * Talking Kotlin podcast - Hadi Harriri

Talks at KotlinConf * Amanda Hill - View state machine for network calls on Android (slides) * Roman Elizarov - Introduction to Coroutines (slides from another conference) * Jorge Costillo: Architectures Using Functional Programming Concepts (slides) + Jorge's medium blog

Coroutine introduction * Antonio Levia's post - A first walk into Kotlin coroutines on Android * Book - Kotlin for Android developers

Other interesting stuff * Kotlin Style Guide - courtesy Jake Wharton * Google Java Style Guide * google-java-format * now for google-kotlin-format * github isse (+1 this :D) * @JvmOverloads overloads generation

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.

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Shownotes: * Visibility modifiers * Effective Java Item #13 - Ep 63 * discussion: Why the default should be internal * Scopes in programming language (white paper) * Scopes in programming language (wikipedia) * Image visualizing differences between the protected modifier in Java and Kotli * Excellent resource explaining visibility modifiers in Kotlin

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

View Details

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.

Shownotes * Android from the trenches (first talk KG saw of Donn's) * No “yes.” Either “HELL YEAH!” or “no.” * Google Pixel 2 store

Setup KG * Shure Beta 87A * USB Pre 2 * LG 34UC87C 34 ultra wide display * Headphones (KG has too many - ping em if you're curious)

Donn * Shure Beta 87A * Heil PR 40 * Focusrite Scarlett 2i2 * Mackie Onyx Blackjack * Dell E2715H monitor

Android Resources * Android Weekly * Android dev digest * Android resources (curated) one where we point people to * Awesome android github

.. and many many more

  • Android View class
  • Android Canvas class
  • RxJava
  • Dagger
  • Roboguice
  • Donn Felker - make the most of your time
  • Robinhood
  • Square Cash app
  • Google Play music app
  • Android niceties
  • Caster io - MVP series
  • RxJava Android samples
  • TrueTime Android

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days * Rollbar open source library (alpha)

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Links * Fragmented - Effective Java Fragments

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

  • 2:07 - Dan Kim (Kotlin)
  • 10:07 - Gabriel Peal (React Native)
  • 23:43 - Scott Alexander-Bown (Android Security)
  • 33:32 - Jose Alcérreca (Android Architecture Blueprints)
  • 43:09 - Kevin Galligan (Droidcon & Doppl)

Show Links * 082: Airbnb’s Gabriel tells us how to animate with Lottie – Fragmented * 085: Casual Kotlin conversation with Dan Kim – Fragmented * GitHub - googlesamples/android-architecture: A collection of samples to discuss and showcase different architectural tools and patterns for Android apps. * doppl by touchlab — touchlab

Sponsors * BuddyBuild - fragmentedpodcast.com/buddybuild

Contact * Dan Kim (@dankim) | Twitter * Gabriel Peal (@gpeal8) | Twitter * Scott Alexander-Bown (@scottyab) | Twitter * Jose Alcérreca (@ppvi) | Twitter * Kevin Galligan (@kpgalligan) | Twitter * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Google Developer Days - Florina's segment on paging * Paging library - developer docs + DataSources + PagedList + PagedListAdapter + LivePagedListProvider

Sponsors * Kobiton - 15-day Free trial with no credit card required 🙌

Contact * @fmuntenescu [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes Photography * Romain on Instagram * Romain on Flicker * Leica M10 * Canon EOS 5DS R

Screens, refreshing/rednering Color * Fragmented 91 - Reddit AMA * Romain on Reddit being spoiled by 120Hz * What is V-Sync (pcworld.com) and Screen tearing (Wikipedia) * Three-two pull down technique (filmaking) (wikipedia) * OLED vs AMOLED (quora.com) * OLED vs LCD (quora.com) * Romain Guy's 2017 IO Talk on Colors fundamentals YOU OWE IT TO YOURSELF TO WATCH THIS!!

Sponsors * Kobiton - 15-day Free trial with no credit card required 🙌

Contact * @romainguy [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes Official docs * Android Architecture Components * Room migration docs * runInTransaction api (which Florina recommended if you're executing more than one SQL statement and don't want multiple event fired) * Google Samples - Android Architecutre Components

Florina's posts * Florina's Medium blog posts + Room & RxJava + 7 steps to Room + Understanding migrations with Room + Testing Room migrations

360|AnDev talks * Room - Behind the scenes (Yigit Boyar) * Data Persistence in Android: Room for Improvement

Micellaneous questions about Room (that we chopped off for lack of time) Q: Does Room use reflection? 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!).

Q: Does Room provide compile-time SQL checks A: Yes, Room was designed to provide compile-time checks.

Q: Does Room handle SQL injection attacks (security) Yes ... for all practical purposes. See this post for times when it doesn't.

Q: Do we have tools to access the sqlite database file directly? Nope, at the moment, adb is your friend. Use that to download the file manually from your device.

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @fmuntenescu [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Head First Design Patterns * Design Patterns - GoF Book * Patterns of Enterprise Application Archicture - Fowloer * Code Review StackExchange * Code Mentor

Sponsors 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.

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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?

Show Notes * Fragmented Ep.3 Dan Lew - The RxJava show (Part 1) * Fragmented Ep.4 Dan Lew - The RxJava show (Part 2) * Futures in Java (7) * SqlBrite - lighteweight Rx wrapper for SQLiteOpenHelper * Error handling with RxJava - Dan Lew * OrmLite - Android * Why not RxLifecycle * Tweet quote - boilerplate is ok * Introduction to Functional Reactive Programming

Sponsors 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.

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes Static alternatives * Package level functions (Kotlin docs) * Static constants in Kotlin * Object declarations * Objects vs companion objects

Cost of approaches * Where do i put my constants in Kotlin * Exploring Kotlin's hidden costs - Part 1 * Kotlin discussion - best practices for top level declarations

Look at the fragmentedpodcast.com for some code snippets

Misc: * Ep.89 - Learning Kotlin: Properties a first class language feature * Kotlin in Action – Manning Publications

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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:

Show Notes 360 | AnDev * 360|AnDev * 045: Bluetooth (LE) with Dave (devunwired) Smith * 059: Chiu-Ki Chan explains Mocking and Stubbing with Mockito

AMA Reddit * AMA - complete reddit thread * Alarm Manager or JobScheduler thread - reddit thread + Android Priority Job Queue - Yigit + Android Job (Evernote) + JobScheduler - Android * Fragment backstack manager thread - reddit thread + DF Tweet thread on using Fragments * Soft keyboard API shortcomings - reddit thread + SO question 1 + SO question 2 + SO question 3 + SO question 4 * Night light on Nexus 6P - reddit thread + Flux software * Sharp device: 120hz refresh rate- reddit thread + iPad demo 1 + iPad demo 2 + Sharp Aquos 120Hz Android phone

Package by feature not layer * Alt F1 keyboard shortcut - Select in... Project View * 068: Talking Buck with Uber engineer Gautam Korlam * 090: Make your apps instant with Zarah Dominguez * Instrumentation Testing Robots - Jake Wharton talk + okHttp Mock WebServer + Wiremock

Sponsors * Kobiton - start your 15 day free trial

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes * Instant apps - official page * Domain (Zarah's company) * Making the Domain Android app "Instant" * Android Instant Apps, step-by-step: how Vimeo went about it * IO'17 Fireside chat with 3rd party partner who implemented Instant Apps * Google samples repository

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @zarahjutz [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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:

Direct download

Shownotes: * Kotlin docs - Properties and Fields * Kotlin in Action - Manning Publications * java.util.Calendar * Mutable vals in Kotlin - Dan Lew

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Defensive programming

Py's libraries: * AndroidAnnotations * LeakCanary

Misc resources: * Luhn check - algorithm * Debouncing in general * Debounce operator in RxJava * Advocating against Android Fragments

Pending touches and UI event: * Cancel pending touches * DebouncingOnClickListener (RxBindings) * Py's talk - All apps shall crash

Contact * @piwai [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Effective Java Book

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Working Effectively with Legacy Code Book

Sponsor * Rollbar

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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!

Show Notes * Basecamp blog - Signal vs. Noise * Jake Wharton - Using project Kotlin for Android * Fragmented - Ep 20 with Hadi (spl. mention shownotes) * Dan Lew - Mutable vals in Kotlin * Kotlin idioms * Kotlin - coding conventions * kapt - Annotation processing for Kotlin * Kotlin website * Kotlin website (source)

Kotlin view (binding) libs * Kotlin Android extensions * Kotterknife * Anko * Synthetic properties

Resources * Jake's youtube video * Dan's blog posts: + How we made Basecamp 3’s Android app 100% Kotlin + Some of my favorite Kotlin features * Android development with Kotlin - Jake Wharton (video) * Introduction to Kotlin - Google I/O 17 (video)

Contact * @fragmentedcast [twitter.com] * @dankim or email Dan * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Dan Kim (Basecamp) + @dankim or dan@basecamp.com + Vysor app + Mark Allison - being brave with the O preview * Patryk Poborca (Kozio Digital) + @patrykpoborca + Trello app * Jerrell Mardis (Salesforce) + @jerrellmardis + Robinhood app + Android architecture components talk * Annyce Davis (Offgrid Electric) + @brwngrldev + Forest app + React Native: Building Mobile apps * Zac Sweers (Uber) + @pandanomic + YouTube TV app + Slack app * Matt Kranzler (Salesforce) + @mattkranzler + Flamingo app * Roberto Orgiu (Caster) + @_tiwiz * Christina Lee (Pinterest) + @RunChristinaRun + Christina's Fundraiser - Running across America + Robinhood app + Talk at IO - Life is Great and Everything Will Be Ok, Kotlin is Here * Hugo Visser (Little Robots) + @botteaap or +HugoVisser + Android APT * Raveesh Bhalla + @raveeshbhalla + Enki app * Etienne Caron (Shopify) + @kanawish + Safari Queue app * Chris Jenkins (Owlr) + @chrisjenx + Calligraphy font lib by Chris + Waze app * Brenda Cook (Seesaw) + @kenodoggy + Mint app + Memrise app * Joaquim (Twitch) + @joenrv + The Making of Falcon Pro 3 + Falcon Pro (Joaquim's app) + Strafe Esports app

Previous Google IO Episodes * Ep 43 - Google IO 2016 (part 2) * Ep 42 - Google IO 2016 (part 1) * Ep 9 - Google IO 2015

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Download directly

Show Notes * Gordon Moore & Moore's law * Rich Hickey on Clojure's Features and Implementation * PCollections - persistent Java collections library

Functional languages: * Elixir * Elm * Scala * Lisp * Haskell * Erlang

Resources * Anup's multi part series on functional programming * The Context podcast - Functional programming with Paco Estevez * Anjana Vakil: Learning Functional Programming with JavaScript - JSUnconf 2016 * Learning functional programming and compositional software techniques in JavaScript - Eric Elliot

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @anupcowkur [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Lottie for Android (github) * Bodymovin (github) + Install via Adobe cloud extensions * lottiefiles.com - sample Lottie animations * Using lottie - example snippets * Lotte Reiniger- the animator

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @gpeal8 or lottie@airbnb * @fragmentedcast * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Ep 42 - Google IO episode * Rebecca's blog posts: + Distributed Piano with Android Things + Electricity Monitoring app with Android Things + Hardware basics for the Software Engineer * Android Things Developer Kits * Arduino Starter Kit (includes the h/w book she recommends) * Android Things - official github repo * Android things Contrib drivers - (e.g. button gradle dependency)

Sponsors * Kobiton

Contact * @riggaroo and riggaroo.co.za * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes 1. Effective Java - Joshua Bloch

  • Effective Java Items (Fragmented fragments)

  • Working effectively with legacy code - Michael Feathers

  • Head first Design Patterns
  • Don't make me think - Steve Krug, 3rd edition
  • Java Concurrency in Practice
  • XUnit testing patterns

  • Website xunitpatterns.com

  • Patterns of Enterprise Application Architecture - Martin Fowler

  • Javascript the good parts - Douglas Crockford

  • Gary Bernhardt - WAT

  • Clean Code - Robert.C.Martin

  • Clean Code: Writing code for humans (Puralsight)

  • Coders at Work - Peter Seibel

Honorable mentions * Release it * Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four) * Pragmatic Programmer * CODE - The Hidden Language of Computer Hardware and Software * Soft Skills - John Sonmez * Deskbound - Kelly Starett + 8 steps to a pain free back - Esther Gokhale

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Shopify Engineering Blog (VR) * Demoscene * Save a cat from a skyscraper (VR game) * Rajawali - Android OpenGL engine * Build your first Google VR app in 10 minutes : caster.io course * developer docs on Google VR * Unity game engine * Vulkan API (open GL) * Project Rider - C# IDE * Shadertoy.com * OpenGL ES Apple docs * Learn OpenGL ES.com

Contact * @kanawish [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

The Ten Tips 1. Use Espresso for functional/integration testing 2. Mock data and API endpoints to keep tests hermetic 3. Utilize JUnit JVM Tests and patterns for a fast dev cycle 4. Utilize a git branching strategy and utilize pull requests (PR's) for code reviews 5. Use CI to run the tests and provide constant feedback 6. Speed up testing and ease of testing with shell helpers and helper classes for testing 7. Cloud Testing Services 8. Mutation Testing 9. Thoughts on code coverage & value based testing 10. Don't let flaky tests linger

Show Notes * Espresso * Wiremock * MockWebServer * MockWebServer Course on Caster.IO * Git Branching Strategies Fragmented Episode * Firebase Test Lab * Xamarin Test Cloud * Amazon Device Farm * Genymotion Cloud * Mutation Testing * Pit Mutation Library * Michaels Podcast - Native Wheel House

Contact * @yogurtearl [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Genymotion * ADB - Android Debug Bridge * Droidcon NYC - ADB, Break On Through To the Other Side * HTC Sooner (juicy non-developer article alert) * pidcat (adb logcat tool) * Phillipe's ADB IDEA plugin * Caster IO - Enabling Fingerprint on the Android emulator

helpful commands

``` 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"

```

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @eyal_lezmy [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Android programming : The Big Nerd Ranch Guide * Activities in the Wild: Kristin at 360AnDev * Kristin's Lifecycle diagram (and slides) * Notes on opportune moments to do "stuff" in the Android lifecycle * Kristin's follow up blog post to the Activity

lifecycle

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @kristinmars [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Ryan Harter's Intro to AutoValue * Caster.IO Course on AutoValue * Effective Java Book

Sponsor * Rollbar

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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!

Show Notes * NY Times Crossword app * Chicken Wing test - ADB Ep 38 * Android CDD - Compatibility Definition Document * Explaining public/private encryptino * Android vs iOS fingerprint * Ben's fingerprint demo app * Ben's Droidcon NYC 2016 presentation * Android hardware keystore * Apple's security whitepaper * Whorlwind - Reactive fingerprint library courtesy Square

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @benlikestocode [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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...

Show Notes * Java Access Control * Effective Java Book

Sponsor * Rollbar

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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 info@printmatic.net.

Download directly

Show Notes Andrew's Medium posts * Introducing Auracle: A queue based music player: Andrew's new music player * Implementing Android App shortcuts * Andrew's medium posts * Best productivity tools for Android developers (another article Andrew wrote)

Misc * App shortcuts design guidelines * Konstellation (Kotlin demo app using App Shortcuts)

Sponsors * Rollbar - special offer: Bootstrap plan free

Contact * @fragmentedcast [twitter.com] * @aorobator [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes Apps with interesting designs * Todoist (Karma points) * Swarm * Enki * Fastfilmz

Misc * Facebook research medium post: Embarking on international research * Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems * UC Mobile browser app * Google Ventures : The design sprint

Sponsor 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

Contact * @raveeshbhalla [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Fragmented episode with Realm Android developer Christian Melchior * Sqlbrite by Square (Reactive SQLiteOpenHelper wrapper) * StorIO: wrapper for SQLite or ContentResolver

Sponsor

  • 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

Misc * Feature: auto updating objects * Fragmented episode on GC vs Reference counting * Realm RxExample * The problem with Threads - Edward Lee

Sync stuff * Realm Mobile platform * Building a sync engine (Vesper Sync diary)

Github issues tracked on Realm * Request: Compound primary key support * Request: Value object support * Request: Custom column names * Feature: Copy from Realm

Resources * Latest Realm docs * Caster.io series for Realm

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Build systems * Buck overview (Facebook/Uber) * Bazel (Google) * Pants (Twitter) * Android test app comparing different build systems [github.com]

Misc * okBuck (adopting Buck easily) [github.com] * Buck - Exopackage * Watchman

Resources * What makes Buck so fast * Gautam's talk on okBuck at Droidcon NYC (Slides)

Contact * @kageiit [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Build systems * Buck overview (Facebook/Uber) * Bazel (Google) * Pants (Twitter) * Android test app comparing different build systems [github.com]

Misc * okBuck (adopting Buck easily) [github.com] * Buck - Exopackage * Watchman

Resources * What makes Buck so fast * Gautam's talk on okBuck at Droidcon NYC (Slides)

Contact * @kageiit [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Xamarin * Developer guides (Joseph mentioned they're particularly proud of this one) * Xamarin University * Download Visual Studio * Xamarin Forms

Apps using Xamarin for Code sharing * Alaska Airlines * Outback steakhouse

Notable alternatives: * Cordova * React Native

Contact * @josephhill and jhill@microsoft * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes About Ryan * Pigment (coloring for adults) * Fragment (prismatic photography art) (His blog post on the same) * Fragmented: Google IO special (Ryan was one of our guests)

References * Martin Fowler's updated article on ValueObjects * Effective Java Fragments: + Ep 14: Consider providing static factory methods instead of constructors + Ep 31: Obey the general contract when overriding equals + Ep 34: Always Override hashcode when overriding equals * Methods Count (check number of methods for a library)

AutoValue * AutoValue * AutoValue Builders * AutoValue Factory (different from AutoValue Builders) * Difference between Builder and Factory patterns [stackoverflow.com]

AutoValue extensions * Ryan's blog post * AutoValue Parcel [github.com/rharter] * AutoValue Cursor [github.com/gabrielittner] * AutoValue Redacted [github.com/square] * AutoValue Moshi [github.com/rharter] * AutoValue Gson [github.com/rharter] * AutoValue Firebase [github.com/mattlogan]

Misc * Project Lombok * Google's Auto Libraries (code generating helpers) * Ryan's Blog * Ryan's Caster.io series [caster.io] * Chicago Roboto 2017

Contact * @rharter [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Ty's all star Dallas crew * Chris Banes [@chrisbanes] previously on FriendCaster * Chris Arvin [@ChrisArvinSF] previously on BaconReader * Dan Lew [@danlew42] previously on Expedia * Matt Wear [parallelcross.com] prevoiusly on Evernote * Juan Gomez [@_juandg] on Netflix

Developer Platform * Tests? Ain't Nobody Got Time For That! by Ty Smith * Content providers [developer.android.com] * AIDL (Andorid Interface Definition Language) [developer.android.com] + TransactionTooLargeException [developer.android.com]

Contact * @tsmith [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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...

Show Notes Garbage collection (Android) * Garbage collection [wikipedia.org] * How GC works in Dalvik [medium.com] * How GC works with circular references [stackoverflow.com]

Reference counting (iOS) * Reference counting [wikipedia.org] * An in-depth look at manual memory management in Objective C [tomdalling.com] * Memory management in Objective C [rypress.com] * Weak, strong, unowned, oh my! (references in Swift) [krakendev.io]

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View 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.

Show Notes * Java Access Control * Effective Java Book

Sponsor * BuddyBuild

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Comparable Interface * Effective Java Book

Sponsor * BuddyBuild

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes What's an event bus * Donn's blog post on event aggregators (event buses) [donnfelker.com] * KG's blog post on implementing an event bus with Rx [blog.kaush.co]

Libraries * Otto - Square's Event Bus library [github.com] * EventBus - greenrobot [github.com]

Misc * Handling GCM messages in the foreground and background by Mark Hudnall [markhudnall.comm] * KISS [wikipedia.org] * Ep 53: Jake on RxJava 2 [fragmentedpodcast.com] * RxRelays [github.com/JakeWharton] * Diff change set for converting RxBus to an RxRelay [github.com/kaushikgopal] * Caster.io EventBus course - Annyce Davis [caster.io]

Sponsors * BuddyBuild

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Israel's last appearance on Fragmented (Ep 26) [fragmentedpodcast.com]

Smoke and Mirros * Israel's sample app [github.com] * Slides (with animation demos) [photos.google.com] * Google Photos Recycler View pinch to expand/shrink [photos.google.com] * ClipChildren demo [photos.google.com] * Utils method - traverse hierarchy and clip [photos.google.com] * Tap image to show full screen [photos.google.com]

Misc * Nick Butcher's Plaid app [github.com] * Android-Job library by Evernote [github.com]

Contact * @fragmentedcast [twitter.com] * @rallat [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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!

Show Notes * Introducing Pixel [blog.google] * Static Gateway Pattern [codebetter.com]

About Chiu-Ki: * Android Dialogs | youtube * 360|AnDev co-organizer | conference [360andev.com] * Technically Speaking| newsletter [tinyletter.com]

fake SharedPreferences implementations from AOSP * FakeSharedPreferences | fake in-memory SharedPreferences implementation [github.com] * BridgeSharedPreferences | empty SharedPreferences that does nothing implementation [github.com] * Testing SharedPreferences [gumroad.com]

Different kinds of Test doubles * Know your test doubles [testing.googleblog.com] * [Test Doubles: Mocks, Stubs, and More](https://www.objc.io/issues/15-testing/mocking-stubbing/

http://www.javaworld.com/article/2074508/core-java/mocks-and-stubs---understanding-test-doubles-with-mockito.html) [objc.io] * Mocks aren't Stubs [martinfowler.com]

Mockito * Mockito library [github.com] * Stubbing consecutive calls [mockito.org] * Argument Captor [mockito.org] * PowerMock [github.com]

Resources * friendspell | Chiu-Ki’s example project with a variety of testing strategies [github.com] * Mock Application in Espresso for Dependency Injection [sqisland.com] * Chiu-Ki's caster.io courses on Testing | MockWebServer

Contact * @fragmentedcast [twitter.com] * @chiuki and +ChiuKiChan * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Object#clone * Effective Java Book

Sponsor * Hired - special offer: double the signing bonus!

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes About Lisa Wray * xwray.com * Genius [genius.com] * Fragmented Ep 042 - Google IO 2016 special [fragmentedpodcast.com]

Data Binding Resources * Data Binding Library [developer.android.com] * Data Binding - Writing Apps Faster (Android Dev Summit 2015) * Data Binding Techniques - Jacob Tabak's Droidcon NYC 2015 talk * talk:title="@{dataBinding}" - Lisa's lightning talk at Square Android Spring Cleaning * Descent into Data Binding - Bill Phillips at Big Nerd Ranch [bignerdranch.com] * Advanced Data Binding - Google I/O 2016 * ADB Ep 35 - Data Bound [androidbackstage.com]

Sponsor * Hired - special offer: double the signing bonus!

Contact * @fragmentedcast [twitter.com] * @lisawrayz and +LisaWrayZeitouni * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Ep 55 - Fragmented: Part 1 of this series * Phil's talk at 360Andev talk (coming soon): Android Studio like a boss [twitter.com] * Phil's Android Studio Tip of the day series [plus.google.com] * Timber logging : courtesy JakeWharton [github.com] * ADB Idea plugin by Phil [github.com] * Caster.io AS stuff: + Lesson 3: Android Studio Productivity – Custom Shortcuts + Lesson 47: Integrating Robolectric 3 with Android Studio 2 + Lesson 66: Android Studio – Applying Logcat Filters

Contact * @fragmentedcast [twitter.com] * @pbreault and developerphil.com * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * JetBrains Toolbox subscription * Phil's Android Studio Tip of the day series [plus.google.com] * DroidCon Montreal 2015 [droidcon.ca] * No tabs in IntelliJ - Hadi Hariri [hadihariri.com] * Ep 20 - Fragmented : One with Hadi Hariri * Facebook Stetho [github.io]

Sponsor * Hired - special offer: double the signing bonus!

Contact * @fragmentedcast [twitter.com] * @pbreault and developerphil.com * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Follow up * Ep 052: Junit tricks with Parameterized and Enclosing tests * Jose Alcerecca showing some Stephan Linzer love * Burst : Better Parameterized testing by Square

Misc * TortoiseSVN * A successful git branching model * DiffMerge by SourceGear * realm-java open source repo (shows branch naming convention) * Semantic versioning spec

Sponsor * Hired - special offer: double the signing bonus!

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Fragmented Episode 6: with Jake [fragmentedpodcast.com] * Fragmented Episode 7: with Jake [fragmentedpodcast.com] * Looking ahead to RxJava 2 [droidcon.nyc] - Jake’s upcoming talk at DroidCon 2016 * Retrolambda usage [github.com] * Single + Documentation [reactivex.io] + Origin github issue discussion [github.com] * Libraries used: + RxRelay [github.com/JakeWharton] + RxReplayingShare [github.com/JakeWharton] + SqlBrite [github.com] + RxBindings [github.com] + Note about the warmth of the share operator [blog.kaush.co]

Looking ahead * Reactive Streams specification [reactive-streams.org] * Using Observable fromAsync [stackoverflow.com/documentation] (released with 1.1.7) * RxJava2 release schedule [github.com] * Completable * RxJava 2.0 Design: Naming [github.com] * Backpressure types - buffer, latest, drop

Sponsors * BuddyBuild

Contact * @JakeWharton and jakewharton.com * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

In this mini fragment Kaushik talks about some cool Junit 4 tricks using Parameterize, Enclosing test runners. 🤘 #AlwaysBeTesting

Show Notes * Junit4 introduced with Android Studio 1.1 [tools.android.com] * Junit4 Parameterized tests [github.com] * Calculator example from googlesamples [github.com] * Sample template code for Enclosed.class [gist.github.com]

Sponsors * BuddyBuild

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Mike's DroidCon NYC 2015 * AirBnB's deep link dispatch [github.com] * ButterKnife from Jake Wharton [github.io] * Improving your code with Android Support Annotations [michaelevans.org] * Jake Wharton and Jesse Wilson - Annotation Processing Boilerplate Destruction * 021: Fragmented - Jesse Wilson on Linker [fragmentedpodcast.com] * @Target Element Types [docs.oracle.com] * JavaPoet by Square [github.com] * AutoService library by Google * kapt - Annotation processing for Kotlin [blog.jetbrains.com] * Annotation processing 101 [hannesdorfmann.com] * Aftermath by Michael Evans [github.com]

Sponsors * BuddyBuild

Contact * @m_evans10 and +MichaelEvans * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Styling Android - Mark's blog [stylingandroid.com] * Marks' Constraint Layout Series: [stylingandroid.com]

+ Part 1
+ Part 2
+ Part 3
+ Part 4
+ Part 5
+ Part 6
+ Part 7
+ Part 8
  • 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]

Sponsor * Hired - special offer: double the signing bonus!

Contact * @MarkIAllison and Styling Android * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

Friend of the show Dan Lew makes a return! In this show Kaushik talks to Dan about translating an app for other languages.

Show Notes * Ep 39: Elliot Chenger [fragmentedpodcast.com] * AutoFitting TextViews [github.com] * Transifex - service for helping with translations * Pseudo localization [danlew.net] * Xliff [wikipedia.org] * Phrase lib by Square [github.com] * Ahmed's Droidcon SF talk: From Right to Left and Back * Internationalis(z)ing Code - Computerphile * What your emojis actually look like

Sponsor * Hired - special offer: double the signing bonus!

Contact * @fragmentedcast [twitter.com] * @danlew42 [twitter.com] and Dan's website [danlew.net] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes * Orthogonal podcast]

Sponsor * Hired - special offer: double the signing bonus!

Contact * @fragmentedcast [twitter.com] * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

In this episode we talk to Trello Engineer, GDE, Youtuber, Caster IO instructor and View magician Huyen about all things custom View/ViewGroups.

Show Notes * Android Dialogs * Huyen's Custom Views/View Groups Part 1 [caster.io] * How Android draws views [developer.android.com]

Resources * Huyen's caster.io series [caster.io] * New Circle - Enhancing Android UI with Custom Views * Loving Lean Layouts - DroidCon SF 2016 * Custom Layouts on Android - Lucas Rocha [lucasr.org] * Taming Android UI's - Erik Burke - Square * Android Performance Patterns - Custom Views and Performance

Contact * @queencodemonkey or randomlytyping.com * @fragmentedcast or Contact form * @donnfelker or +DonnFelker * @kaushikgopal or +KaushikGopalIsMe

View Details

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.

Show Notes * Guice - DI lib [github.com] * Fragmented 21 : Diving Deep with Dagger (Cameo by Jesse Wilson) [fragmentedpodcast.com] * Android's HTTP Clients + Apache Http Client [developer.android.com] + Http URL Connection [developer.android.com] + Jesse's blog post on the subject [android-developers.blogspot.com]

Okio * Announcing okio [squareup.com] * okio source [okio.com]

Retrofit github throwback * Retrofit very first commit - crazybob [github.com] * ShakeDetector in Retrofit [github.com]

Moshi * Moshi - json parsing [github.com] * Gson [github.com]

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @fragmentedcast [twitter.com] * @jessewilson and +JesseWilson * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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.

Show Notes Dave's talks on Bluetooth * Android Lollipop: Bluetooth LE Matures * Developing Bluetooth Smart Applications for Android Tutorial * Dave's talk: Google Beacons - AnDevCon

Other resources: * Bluetooth Classic [developer.android.com] * Bluetooth LE [developer.android.com] * Apple docs - Bluetooth for Developers [developer.apple.com] * Bluetooth specification [bluetooth.org] + check Advertisements: Volume 3, Part C, Section 11 + check GATT: Volume 3, Part G

360|Andev Use special code "Fragmented" if you're registering for the 360|Andev conference to get a 10% discount on registration.

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @fragmentedcast [twitter.com] * @devunwired and +DaveSmithDev * @donnfelker and +DonnFelker * @kaushikgopal and +KaushikGopalIsMe

View Details

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

Show Notes * Object#toString * Effective Java Book

Sponsor * Hired.com

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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

Show Notes * Pierre-Yves Ricau (Square) + @Piwai + Fragnums + Penny - Conversational Finance app * Israel @rallat Ferrer Camacho (Square) + @rallat + Fragmented 026: the show with Israel + Pocket Casts * Tor Norbye + @tornorbye + The Java Posse + Android Developers Backstage * Kelly Shushter + @kellyshuster + Fragmented 40: Episode with Kelly + Clue * Eugenio Marletti (Clue) + @workingkills + Life without fragments * Sebastiano Poggi (Novoda) + @seebrock3r + What the Fragment - Google IO session + Google Photos + Fragmented 20: Episode with Hadi Harriri * Mike Evans + @m_evans10 + Robinhood * Zarah Dominguez + @zarahjutz + Pocket Casts

Contact us: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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

Show Notes * Annyce Davis (Offgrid Electric) + @brwngrldev + Fragmented episode 33 : talking Gradle with GDE Annyce Davis + Fitbit Android app * Mark Allison (Freelancer currently contracting for AMEX) + @MarkIAllison + Styling Android * Wiebe Elsinga + @welsinga * Jake Wharton (Square) + @JakeWharton + Kotlin Night in SF * Ryan Harter + @rharter + Pocket Casts * Lisa Wray (Genius) + @lisawrayz * Rebecca + @riggaroo + 22Seven * Erik Hellman + @ErikHellman + Fabulous - Motivate Me

Contact us: * Contact form * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

Stay tuned for Part 2 where we talk to another list of top notch Android developers and get their answers for these questions.

View Details

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.

Show Notes * YAGNI * YAGNI on Wikipedia * MarketWatch

Sponsor * Caster.IO Use the coupon code "fragmented" to receive 15% off any monthly subscription.

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Women Who Code [womenwhocode.com] * Droidcon SF 2015 - Android Internal Library Dependency Management * Fixing a bug later is costly? [programmers.stackexchange.com]

Solutions * Git submodules [git-scm.com] * Repo by Google [source.android.com] * Artifactory - Jfrog [jfrog.com] * Jitpack [jitpack.io] * Kelly's hack to toggle between maven lib dependency and local source [github.com]

Sponsors * Caster.io [Coupon code: Fragmented]

Contact * @kellyshuster [twitter.com] * kiodev.com * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Under Armour : Health box [underarmour.com] * Droidcon NYC 2015 - TextView how to turn design into reality for multiple languages * Android’s Font Renderer : Efficient text rendering with OpenGL ES Romain Guy [medium.com] * DÖnn Fëlker * TextView packages : Slide from Elliott's talk [speakerdeck.com] * Static Layout [developer.android.com] * Boring Layout [developer.android.com]

Performance * Traceview in Android Studio [tools.android.com] * Profile GPU rendering * Static Layout : for text that will not be edited after it is laid out * Dynamic Layout : text layout that updates itself as the text is edited * Improving comment rendering on Android [instagram-engineering.tumblr.com] * Sample implementation of technique Instagram describes [stackoverflow.com] * Simple trick explaining TextView wrap_content vs fixed height * Energy glitches with Apple music app * Google Localization Checklist [developer.android.com]

Design tools * Zeplin * Red Pen * Sketch 3 For Android Developers (Big Android BBQ 2015) * Sketch app

Sponsor * The Nerdery [nrdryjobs.com/fragmented]

Contact * @Echenger [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * First preview of Android N: Developer API & Tools [android-developers.blogspot.com] * Instruction for setting up your dev environment for the N preview (~=> Lambda support) [developer.android.com] * Java 8 Language features [developer.android.com] * ADB episode : 45 State of the Art * Lambdas do not retain enclosing reference (unless really needed) + commit note on Jack toolchain [android.googlesource.com] + JacklrBuilder source createMethodInfoforLambda [android.googlesource.com] + RxJava Android Samples using lambdas [github.com] + javap - The Java class file Disassembler [docs.oracle.com] * Issue tracking Annotation processing options in Jack [code.google.com] * Other Java 8 language features for N [developer.android.com] * Android MultiWindow features [developer.android.com] * GCM Network Manager a.k.a Job Scheduler [developers.google.com] * Android Notification styles [developer.android.com]

Resources * What’s new in Android N: Ian Lake + Joanna smith * 5 tips for preparing for multi window in Android N: Ian Lake [medium.com] * DroidCon SF keynote: Chet and Romain * Random musing on the N developer preview [commonsware.com]

Sponsor * Hired - special offer: double your accepting bonus $2000

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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!

Shownotes: * Agera

Sponsor * Hired - special offer: double your accepting bonus $2000

View Details

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.

Show Notes * Remote work is best suited for information workers (programmers, designers, engineers, etc) * Read Remote by DHH and Jason Fried + Great book that echoes what I feel about working remote. + Tip: Listen to it on Audible, it's faster to consume. * How to ease into remote work at your current job + Convince manager to allow a 1 day trial for one - three months. + Remote day should be on Friday (fewer critical things happen on Friday, on average) + After trial, if success, aim for 2-3 days of remote work. (Again, do this at the end of the week. Wed,Thu, Fri) + Once successful, rally for full week of remote with an occasional in office visit (a day every week work two)

Staying sane while working remote * Donn's blog post on this topic * Create a work day schedule (5am-2pm, 8am-5pm, 10am-7pm, etc) + When you're done, you're done. Leave work (your office/etc). * Schedule. Schedule. Schedule. Stick to a schedule. + Get up at the same time + Get dressed for work (no PJ's etc) + Do your hair. + Be presentable + This is all mental * Prepare for the day + Get coffee/tea/water and snacks + Try to limit the opportunity of distractions * During the day + Take a lunch, away from your desk. + Go out for lunch with someone (significant other, friend, etc) at one to two times a week. + Work out of the house a couple times a week, this increases our creativity. * Outside of Work + You need social interaction, Cabin Fever is a real thing. + Exercise 3-4 times a week if possible. + Group classes are perfect for this. - CrossFit - Martial Arts - Yoga - Pilates - etc * Communication When Remote + Put 3x-4x more effort into communicating than previous. You're not visible seen so you need to be more vocal. - Call - SMS - Blow up the Slack/Hipchat channel/etc - Objective - Clear your own path

Tools * For remote to work effectively, everything should be considered remote. If one employee is remote, then all meetings should occur as if the team is remote. This ensures that everyone can work effectively without missing anything. * Communication + Group Chat - Slack - HipChat + Video Chat - Google Hangouts - Skype - Join.me - Zoom.us + Task Management - Trello - Jira - Asana - GitHub

Remote for Employers * Benefits from Remote workforce + Much larger talent pool than the exhausted pool (or non-existent one that local). Higher quality employees/contractors/consultants for the same overhead. + Remote creates much more loyal employees. You're giving them their life back and this is reciprocated. + Your company becomes anti-fragile as you're able to adapt with the industry faster. You can hire in areas others cannot. + On average, remote employees work harder and are more productive than their office counterparts. + Less overhead! No need to pay for additional office space.

Sponsor * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Vector Drawable [developer.android.com] * Trello's Victor [github.com] + What's our Vector Victor * Android Studio 1.4 release (with Vector Asset Studio announcement) [android-developers.blogspot.com]

Support library announcements * Android Support Library v23.2 [android-developers.blogspot.com] + Vector Drawable backported + Ian Lake also gives us the instructions in this post * 9% of AAR saved on AppCompat [chris.banes.me] * Android Support v23.3.1 announced [plus.google.com] * Vector Asset Studio [developer.android.com]

Animated Vector Drawable * AnimatedVectorDrawable [developer.android.com] * Chiuki on Animated Vector Drawables [sqisland.com] * Road Runner library [github.com] + see youtube demo

Problems: * Dan Lew's SVG test project [github.com] * bug report on no gradient support for vectors [code.google.com] * Vector format restrictions : Vector Asset Studio [developer.android.com] * Better conversation tool svg2android - Juraj Novák [inloop.github.io]

Other references: * Mark Allison - Vector Drawable Part 1 [stylingandroid.com] * Mark Allison - Vectors for all (Almost) [stylingandroid.com] * Using Android Vector Drawable [code.tutsplus]

Sponsor * Rollbar - special offer: Bootstrap plan free for 90 days

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Annyce's talk where she mentions Cyclomatic complexity * OffGrid Electric * Corey Latislaw on TDD and Testing [fragmentedpodcast.com] * Annyce Davis' Caster.io videos * DAG: Directed Acyclic Graph [wikipedia.org] * DAG discussion on Fragmented - Seek to 18:35 * What commands does Andorid Studio's gradle aware make perform? [stackoverflow.com] + MakeBeforeRunTaskProvider source [android.googlesource.com] * Creating a Gradle Plugin * Use apply from in gradle to include external files * Learn Groovy * Gradle dry run flag [docs.gradle.org] * Madis Pink - Optimizing gradle build time : Droidcon Paris

Annyce's talks & videos: * Be a good citizen: Develop Maintainable apps * Caster.io videos

Fragmented T-shirt * Blog post * Purchase here

Contact * Annyce @brwngrldev [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Introducing AppCompat V21 [android-developers.blogspot.com]

[android-developers.blogspot.com] * Prev episode with Mike Wolfson [fragmentedpodcast.com] * Android Support Library - "Revision" changelog [developer.android.com] * Revision vs Version [stackoverflow.com] * Introducing Design Support Library * Command to see dependency graph: ./gradlew -q app:dependencies * Seinfeld Auditions

Contact * Fragmented Spec channel (sign up at the bottom) * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com] * Contact email form

View Details

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.

Show Notes * Effective Java (2nd Edition) - Joshua Bloch

Obey the general contract when overriding equals

When to not override equals: * Each instance of the class is inherently unique. * You don't care whether the class provides a "logical equality" test. * A superclass has already overridden equals, and the superclass behavior is appropriate for this class.

The equals method implement an equivalence relation which states it must be: * Reflexive * Symmetric * Transitive * Consistent * For any non-null reference x, x.equals(null) must return false.

A recipe for a high-quality equals method is as such: * Use the == operator to check for references to this object. * Use the instanceof operator to check if the argument has the correct type * Cast to the correct type. * Check all field types and corresponding field types. * Finally, when done, ask yourself - is this method symmetric, transitive and consistent?

Caveats * Always override hashcode when you override equals * Don't be too clever! * Don't substitute another type for Object in the equals declaration.

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Material Design - Official site * Material Design - The Specification * Google Color Palette - list of "approved" colors * Google Color Palette Library - picking colors from an image * Android Support Lib 23.2 video [twitter.com] * Resource for getting better at Material Design: + Materialdoc.com - curated blog post for developers + Android Historian - Mike's Material Design demo + PSD resources - Up Labs [materialup.com] + Official PSD layout templates + Official Material Design Icons + DroidconNYC 2015: Material design everywhere using the Android Support Libraries - Mike's talk

Sponsors * Rollbar - special offer: Bootstrap plan free for 90 days [rollbar.com/fragmented]

Contact * Mike Wolfson: Twitter Google+ mikewolfson.com * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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!

Show Notes * Official Dalvik specification [source.android.com] (look for invoke- prefix methods) * Android and the Dex limit (great post) * ADB Ep 11 : ART, pART 2 (Trash Talk) (discussion on ART) * MultiDexing [developer.android.com] (solution to your 65K method count woes)

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

  • Android Dev Summit demo - Structural replace
  • Software Design patterns [wikipedia.org]
  • Reformatting code:
    • Reformatting Source code [jetbrains.com]
    • Reformat dialog [jetbrains.com] (only VCS changed text)
  • Library dependency management:
    • JitPack (publishing jvm and android libraries)
    • Internal library dependency managment - Kelly Shushter
  • Hadi Hariri on Fragmented Ep 20 talking Intellij shortcuts
  • Using UiAutomatorViewer to help write espresso tests - Ep. 23: Caster.io [caster.io]
  • git pre-commit hook [gist]
  • Intellij - work with embedded Terminal [jetbrains.com] (yes, you can customize btw zsh/bash)
  • KG's Update script - morning ritual [gist]
  • Cyril on Grid Spacing on Android [cyrilmottier.com] (showdividers/divider)
  • Tor's issue on maven vs jcenter [code.google.com]

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

Realm pro and overall genius Christian Melchior joins us in this episode to talk about all things Realm.

Show Notes * Realm.io for Java/Android * Martin fowler on schema-less * github issue on extending Realm Object * Caster.io video tutorial - Intro to Realm for Android Devs * Christian's talk at Droidcon NYC 2015

Contact * @chrmelchior [twitter.com] * @realm [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Rallat's slides [pdf] * Rallat's sample repo using different patterns [github] * Burrito Design Pattern [twitter.com] * Working Effectively with Legacy Code [amazon.com] * The Clean architecture [blog.8thlight.com] * Uncle Bob's talk on Vimeo

Awesome Picks: Rallat: * Rallat's tweet on Dagger 2 & Scope Provider * Music for the week! The Weeknd * Cmd Shift A - one shortcut to rule them all

Donn: * Philly ETE (April 11/12) (Donn's giving a talk) * Life is Short [paulgraham.com] * 7 videos on UI Testing and TDD with Espresso : Caster.IO

Kaushik: * Create a pared-down "lite" version of the app * Pancakes library - alternative to Fragment Manager for views

Contact * @rallat [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Effective Java (2nd Edition) - Joshua Bloch

Avoid finalizers

  • If you don't know what they are, ignorance is bliss. If you know what they are, avoid them!
  • Finalizers in Java != destructors in C++ (C++ counterparts to constructors).
  • In C++ destructors
    • you reclaim resources here (Java has GC)
    • you also reclaim non-memory resources (use the try-finally block in Java)
  • (unpredicatable amt of time between object becoming unreachable and finalizer being executed) Never do anything time critical in finalizer!
    • System.gc + System.runFinalization increase chances - no guarantee
    • System.runFinalizersOnExit + Runtime.runFinalizersOnExit are the ones that do - but they are fatally flawed
  • Java 7 has try with resources, which is also interesting and auto-closeables. [Android] devs can only dream of these.
  • If an uncaught exception is thrown in a finalizer, it is ignored, and the finalization abruptly terminates.
  • Severe performance penalty for using finalizers - (one e.g.) time to create and destroy simple object goes from 5.6ns -> 2400ns
  • Only valid use: as a safety net or to terminate noncritical native resources.
  • [Android] you're probably better off using Android's lifecycle methods.

Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Effective Java (2nd Edition) - Joshua Bloch

Eliminate obsolete object references

Supplemental reading (for the diligent ones that follow shownotes)

  • Do click listeners leak memory? [stackoverflow.com]
  • Square's LeakCanary
  • How to leak a context - Handlers and inner classes [androiddesignpatterns.com]
  • Avoiding Memory leaks [android-developers.blogspot.com]

Contact: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

  • Android Dev Summit Schedule
  • AndroidDev Twitter account

Sessions * Android Dev Summit 2015 Keynote * Android Studio for Experts * Android Testing * Firechat - Framework team * Firechat - Android Tools and Testing team

Sample projects * Android Topeka [github] * Android Bootstrap [github] * u2020 [github] * Google code labs + github link

Contact us:

  • @fragmentedcast [twitter.com]
  • @donnfelker [twitter.com]
  • @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Effective Java (2nd Edition) - Joshua Bloch

Avoid creating unnecessary objects

  • Google says - Avoiding creating unnecessary objects too
  • Episode 10 with Michael Bailey - String optimization

Snippet to demonstrate AutoBoxing problems

``` // sum of all positive values Long sum = 0L; for (long i=0; i Integer.MAX_VALUE; i++) { sum+=i; }

```

Contact: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

In this episode, Kaushik and Donn dive deep into the Dependency Injection library - Dagger. We have a cameo by Dagger creator Jesse!

Show Notes In other news * Donn in a Banana Suit * KG as a Storm Trooper * AndoridTO * 020 – Talking Kotlin with Hadi Hariri * Google entering podcast scene and we're on it

Dagger * Topological Sort

Jesse Wilson Cameo * Dagger Linker class * Jesse's MiniGuice proof of concept * Avoiding injects with library * Assisted Injection for Dagger * AutoFactory * caster.io * Activity Test Rule

Other great references * Jake Wharton - Architecting Android Applications with Dagger

Awesome picks: Donn's picks:

  • Dagger 1 [caster.io]
  • Intro to RxJava for Android Developers [caster.io]
  • Intro to Realm for Android Developers [caster.io]
  • Custom Silicone earbuds [howtogeek.com]
  • DHH - Reconsider [medium.com]

KG's picks:

  • Cold start illusion [github.com]
  • Song Exploder - House of Cards [songexploder.net]
  • Song Exploder - Game of Thrones [songexploder.net]

Contact us: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * No tabs in Intellij [hadihariri.com]

Jetbrains products * Java - IntelliJ * .Net - ReSharper * CI server - TeamCity * Issue tracking - YouTrack

Smaller IDES

  • Web/Node.js - WebStorm
  • Python/Django - PyCharm
  • Ruby/Rails - RubyMine
  • C++ - CLion
  • ObjectiveC - AppCode

Hadi's 3 tips for Intellij 1. Don't use the Mouse! Mouseless driven development 2. Cmd Shift A - look up other commands 3. Don't use the Find box to find things: Prefer shortcuts like Cmd O/Cmd Shift O

Kotlin * Kotlin - An open source JVM targeted language * Jake's doc on Using Project Kotlin for Android [docs.google.com] * Execution in the kingdom of nouns [blogspot.com] * Kotlin : a new hope - talk by Michael Pardo [realm.io] * Tony Hoare saying Null is his Billion dollar mistake [wikipedia.org]

Getting started with Kotlin * Kotlin Tutorials [kotlinlang.org] * Kotlin Koans [kotlinlang.org] * Try Kotlin online : online & interactive [kotlinlang.org] * Kotlin in two minutes * Kotlin Slack channel [slack.com] * Books: + Antonio's book on Kotlin [leanpub.com] + Kotlin in Action [manning.com]

Kotlin tools * Anko [github.com] * Kotlin Android extensions [kotlinlang.org]

Sample projects with Kotlin

  • Palette Helper [github.com]
  • Cinesapp Android Kotlin [github.com]
  • Kotlin demo [github.com]

Misc * Killing off Wasabi: Part 1 [fogcreek.com] * Killing off Wasabi: Part 2 [fogcreek.com]

Awesome picks: Hadi Hariri * The collapse of the US-EU Safe Harbor: Solving the new privacy Rubik’s Cube [http://blogs.microsoft.com/] * JavaOne Conference [oracle.com]

Kaushik Gopal * When looking for solutions to a problem, search the source code first before StackOverflow * When working on a feature, change your launcher activity (temporarily) to the one you're working on

Donn Felker * git - assume unchanged [stackoverflow.com] * The Martian Audio Book [amazon.com] * Antonio's book on Kotlin [leanpub.com] * Also check out his blog [antonioleiva.com]

Contact us: * @hhariri [twitter.com] * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

  • Effective Java (2nd Edition) - Joshua Bloch

Enforce noninstantiability with a private constructor.

Examples where you don't want class to be instantiated

  1. class that groups static methods and static fields (Util like classes think java.lang.Math/java.util.Arrays)
  2. class that groups static methods (including factory methods) for objects implementing specific interfaces (think java.util.Collections)
  3. class that group methods on a final class (vs. extending the class)

Considerations

  • Makes no sense to instantiate such "Util" classes
  • Private constructors prevent instantiation
  • Important side effect: prevents subclassing

Contact us: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * Effective Java (2nd Edition) - Joshua Bloch

Enforce the Singleton property with a private constructor or an enum type

Approaches

  1. Create a public static final INSTANCE variable and privatize constructor
  2. Same as 1 but privatize variable and expose access with provide factory method getInstance
  3. Single element Enums

Considerations

  • First two approaches are open to Serialization attacks (deserializing creates new instance)
  • To protect from those declare the fields transient + provide readResolve method
  • Enums are concise, provide free serialization and ironclad Singleton guarantees and are functionally equivalent to first approach

Supplemental reading (for the diligent ones that follow shownotes)

  • Dianne Hackborn regretting exposing the base Application class
  • DH again saying Application is a Singleton with crappier semantics
  • Elvis sightings

Contact us: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

In this power packed episode, Donn returns... If that wasn't amazing enough, Andrew and Akshay from Google join us to talk about Nearby.

Show Notes Follow up * Fragmented is on SoundCloud * ViewPropertyAnimator has better performance [twitter.com] * Droid Inspector [sriramramani.com] * Jake Wharton's Scalpel [github.com]

Nearby * 100 days of Google Dev, Episode 47/100 - Andrew on Nearby [plus.google.com] * Chromecast Guest mode when Nearby [support.google.com]

Examples/Documentation * google sample for Nearby [github.com] * Nearby official docs [developers.google.com]

Awesome picks for the week:

Andrew: * svg-android [github] and its various forks * inkscape tutorials by Derek Banas

Akshay * Xiaomi mi band [engadget.com]

DF: * Karma Wifi (donnfelker.com) * Working Remote (modess.io)

KG: * Google Tone - Chrome extension (chrome.google.com)

Contact

Fragmented * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com] * @andrewbunner [twitter.com] * Akshay's email

Soundcloud

shownotes: http://fragmentedpodcast.com/episodes/17

Contact:

  • Fragmented: https://twitter.com/fragmentedcast
  • Donn Felker : https://twitter.com/donnfelker
  • Kaushik Gopal : https://twitter.com/kaushikgopal
  • Andrew : https://twitter.com/andrewbunner
  • Akshay: akshayk@google.com

View Details

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]

Show Notes * Effective Java (2nd Edition) - Joshua Bloch

Consider a builder when faced with many constructor parameters Patterns available for constructing object with parameters: * Telescoping Constructor Pattern - Provideconstructor with only required parameters, another with a single optional param, a third with 2 optional params... and so on. + Advantage: Works well for small number of parameters + Disadvantage: Does NOT scale well * JavaBeans Pattern - Callparameterless constructor to create the object; then call setter methods to set required parameter and each optional param of interest. + Advantage: Scales well, easy (but wordy) to read resulting code + Disadvantage: Allows inconsistency (if all required params not called); impossible to make classes immutable if using this pattern. * Builder pattern - winner! + Advantage: Simulates named optional parameters; allows immutable objects to be constructed; flexible + Disadvantage: more ceremony to actually construct the Builder Class and finally use.

Example usage from Android source: * AlertDialog Builder [androidxref.com]

Tip: * Use IntelliJ to generate your Builders easily

Contact us: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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!

Show Notes Learning Java and Android * Java for Dummies [amazon.com] * Effective Java (2nd Edition) - Joshua Bloch [amazon.com] * Android programming: The Big Nerd Ranch Guide [bignerdranch.com]

Computer Science * CS50 by Harvard University: David Malan * CS61B by UCBerkely: Jonathan Shewchuk * MIT 6.00 by MIT Opencourseware

Venmo * Venmo: The Musical 2015 (lip dub) * Hack Week at Venmo [venmo.com]

Swift/iOS and other languages * Kotlin [kotlinlang.org]

Animations * Snowdream github repo [github.com] * DevBytes youtube playlist * Chet Haase on Animations in Honeycomb [blogspot.com] * Droid Inspector [sriramramani.com] * Android ObservableScrollView [github.com]

Awesome picks for the week: Amanda * On being a senior engineer [kitchensoap.com]

KG: Guillotine animation

  • how we developed the guillotine menu animation for Android [yalantis.com]
  • how we developed the guillotine menu animation for iOS [yalantis.com]

Timely like Animations

  • Visualizing the Timely number tweening animation
  • Implementing Timely's tweening animation [sriramramani.wordpress.com]

Contact Amanda * @mandybess [twitter.com]

Fragmented * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes: * Effective Java (2nd Edition) - Joshua Bloch

Consider providing static factory methods instead of constructors * static factory method makeText for Toast class [androidxref.com] * ObjectAnimator [androidxref.com]: + .ofInt [androidxref.com] + .ofArgb [androidxref.com] + .ofFloat [androidxref.com]

Advantages: 1. You can control the name and thus give it much more meaningful names 2. You are not required to create a "new" object each time they are invoked 3. You can even return an object that's a subtype of the return type (unlike constructors which only return class type)

  • e.g. Java Collections framework [grepcode.com]

Disadvantages: 1. Classes without public or protected constructors cannot be subclassed 2. Static factory methods are not readily distinguishable from other static methods

Takeaways 1. "Consider" using static factory methods (not always) 2. Use newInstance when creating Fragments [androiddesignpatterns.com] 3. Use newIntent static factory method for creating intents inside the target activity.

Contact us: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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.

Show Notes * GDG [developers.google.com] * GDE [developers.google.com] + GDE Android - Ms.Latislaw [developers.google.com] + GDE Android - Mr.Felker [developers.google.com]

Sketchnoting * The Sketchnote Handbook - Mike Rohde [amazon.com] * Sketchnoting for Techies [coreylatislaw.com] * Corey's Google I/O Sketchnotes [coreylatislaw.com] * Corey's live sketchnoting (with videos) [coreylatislaw.com] * Kids on Computers [kidsoncomputers.org]

Corey's books * Android Activity Book [gumroad.com] (coupon “fragmented” for $5 off) * Android Theory Book [gumroad.com] (coupon “fragmented” for $5 off) * Running Code Coverage in Android Studio [stackoverflow.com]

Katas * Video workshop [gum.co] (coupon “fragmented” for $5 off) * Simple Android app [coreylatistlaw.com] * Robolectric Integration [coreylatistlaw.com]

Awesome picks for the week: DF: * Stop Using General CTA’s Text - be specific * Founder’s Journey Podcast * Baremetrics - Episode - Build vs. Buy: How to blow $100,000 saving money

KG: * ANTI PATTERNS every programmer should be aware of [sahandsaba.com]

Contact Corey * @corey_latislaw [twitter.com] * coreylatislaw.com

Fragmented * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]

View Details

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. :)

Show Notes * Thoughtworks - Continuous Integration [thoughtworks.com] * Working Effectively with Legacy Code - Michael Feathers [amazon.com]

Continuous Integration solutions: * Jenkins CI [jenkins-ci.org] + Cloud solution- Cloudbees [cloudbees.com] * TeamCity [jetbrains.com] * CircleCI [circleci.com] + Setting up CI for Android [caster.io] * Ship.IO [ship.io] * TravisCI + (open source) Travis CI org [travis-ci.org] + (commercial) Travis CI com [travis-ci.com]

Continuous Delivery: * Deploybot (previously) Dploy.io [deploybot.com] * Codeship [codeship.com]

Contact Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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!

Show Notes Chit-chat: * Exponential backoff with RxJava [github.com] * RxJs - ReactiveExtensions for Javascript [github.com]

Follow up: * Moving GC only applicable when app goes into background: + A closer look at ART in Android L (see last paragraph) [anandtech.com] + Google I/O 2014: The ART Runtime

The road to a clean architecture: * Bad practices: + Cargo cult programming [wikipedia.org] + God objects [wikipedia.org] * Martin Fowler’s articles on Patterns of Enterprise Application Architecture: + Supervising Controller [martinfowler.com] + Presentation Model [martinfowler.com] + Passive View [martinfowler.com] + Martin Fowler’s Book P of EAA [amazon.com] * Decoupling the presenter [mattlogan.me]

Other approaches to clean architectures: * MVVM on Android - what you need to know [willowtreeapps.com] * Model View ViewModel for iOS [teehanlax.com] * VIPER architecture on iOS [objc.io] * VIPER inspired Clean Android architecture [speakerdeck] * Architecting Android the clean way [fernandocejas.com] * MVP Android [antonioleiva.com]

Awesome picks: Donn:

  • Learning RxJava for Android by example - Kaushik’s talk
  • Loading data from multiple source [danlew.net]
  • StorIO [engineering.pushtoreresh.com]
  • Mocks aren’t Stubs [martinfowler.com]

Kaushik:

  • Rebound animation library [facebook.github.io]
    • Will Bailey (creator of Rebound):
      • OrigamiActivity.java [gist.github.com]
      • Under the hood [code.facebook.com]
      • Example 1
      • Example 2
      • Example 3
      • Example 4
    • Springy animations with Rebound [parallelcross.com]

Contact Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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.

Show Notes * elapsedRealtimeNanos for getting wall time [developer.android.com] * Android Pay announcement [officialandroid.blogpost.co.uk]

Intellij information: * Curated list of IDE plugings by Jetbrains [blog.jetbrains.com] * Key promoter plugin [plugins.jetbrains.com] * Productivity Guide [jetbrains.com/help] * Extending + Shrinking selection [jetbrains.com/help]

Testing talk: * Google acquires Appurify [techcrunch.com] * Cloud Test Lab (erstwhile Appurify) [developers.google.com/cloud-test-lab]

Great books on improving your Java skills: * Gang of Four [amazon.com] * Effective Java (2nd Edition)- Joshua Bloch [amazon.com]

Effective code review technique (WTFs a minute) [cryhavok.org]

On inheritance: * Item 15 : Design and document for inheritance or else prohibit it * Item 16 : Favor composition over inheritance * Chris Banes on using AppCompatDelegate [twitter.com]

Static code analyzers: * Checkstyle, PMD, Findbugs [github.com] * Android Lint [developer.android.com] * Findbugs [sourceforge.net] * PMD [sourceforge.net] * blog post setup static code analysis tools [vincentbrison.com] * Infer by Facebook [code.facebook.com] * John Carmack In-Depth: static code analysis [gamasutra.com]

Garbage collection: * Google IO 2011 talk * Medium article - Garbage Collection[medium.com] * LeakCanary by Square [github.com] * What is meant by immutable [stackoverflow.com]

Data structures for Android * ArrayMap (Android alt. to HashMap) [developer.android.com] * SimpleArrayMap [developer.android.com] * SparseArray (Android alt. to mapping int -> Objects) [developer.android.com]

Benchmarking DS: * Caliper [github.com] * Vogar examples [code.google.com] * ADB Ep. 27 (forEach quirks) ( minute 9:07) [androidbackstage.blogpost.com] * Coding for performance blog post [devahead.com] * See Item 21 in Effective Java (Ed. 1) about typesafe enum patterns (this was before enums existed) * Null safety in Kotlin [kotlinlang.org] * Mondegreen [wikipedia.org] * Mad Gab

Awesome picks: Michael:

  • Learn how to file high quality bug report for Android tools [tools.android.com]
  • List of Android conferences [androidstudygroup.github.io]
  • GTAC 2015 conference [googletesting.blogpost.com]
  • Developing for Android - blog post series by Google developers [medium.com]

Kaushik:

  • library: Android-ReactiveLocation [github.com]
  • Google App for Donation OneToday [onetoday.google.com]
  • An article discussing the case between Oracle vs Google [techdirt.com]

Donn:

  • Vote for my android talks at DroidCon NYC! :)
  • Anker Charging Station [amazon.com]
  • 22$ Standing Desk [iamnotaprogrammer.com]

Contact Michael Bailey * @yogurtearl [twitter.com]

Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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.

Show Notes * Dan Lew (Trello) + @danlew42 -  twitter.com + Dan's Blog -  danlew.net * Ty Smith (Twitter) + @tsmith -  twitter * Eric Cochran (IFTTT) + NightlyNexus -  github + +EricCochranNightlyNexus -  plus.google.com * Cyril Mottier (Capitaine Train) + @cyrilmottier -  twitter + About page -  cyrilmottier.com * Shifty Jelly Team + Pocket Casts -  pocketcasts.com + Philip Simpson + @geekygecko -  twitter.com + Russell Ivanovic + @rustyshelf -  twitter.com * Amanda Hill (Venmo) + @mandybess -  twitter.com * Dave Smith (New Circle) + @devunwired -  twitter.com + +DaveSmithDev -  plus.google.com * Corey Latislaw (CapitalOne) + @corey_latislaw -  twitter.com + coreylatislaw.com * Chet Haase + @chethaase -  twitter.com + Android Backstaage -  blogspot.com * Chiu-ki Chan + @chiuki -  twitter.com * Elliott Chenger (Under Armour) + @echenger -  twitter.com + blog -  omitneedlesscode.com * Maria Neumayer (Citymapper) + @marianeum -  twitter.com * Danny Roa (Foursquare) + @dannyroa -  twitter.com * Michael Bailey + @yogurtearl -  twitter.com * Donn Felker + @donnfelker -  twitter.com + donnfelker.com * Kaushik Gopal + @kaushikgopal -  twitter.com + kaush.co

View Details

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.

Show Notes * Pocket Casts * Pocket Weather (for Australia) [play.google.com] * Phil’s stuff + LG 34” Ultrawide curved monitor (that Phil uses) [amazon.com] + device test lab [twitter.com] + Android cheatsheet [gist.github.com] + Audio effects and features in Pocket Casts [blog.shiftyjelly.com] * Marco Arment + Accidental Tech Podcast [minute 1:10 he talks of using Go for podcast feed parsing] [atp.fm] + Build and Analyze podcast (now retired) [5by5.tv] * Pocket Cast Web client [play.pocketcasts.com] * Pocket cast gets sync [lifehacker.com] * Pocket Casts supporting service: + Pingdom (monitoring uptime)[pingdom.com] + MySql + Mongo + MariaDb + HockeyApp * Android latency: + Android latency problem [superpowered.com] * The Tonight show starring Jimmy Fallon (with Billy Joel) + Looper app (iOS only :( ) * Pocket Casts 3rd party libs + Butter Knife + Android Universal Image Loader > Picasso + Material Dialog library [github.com] + SnackBar [github.com] + Mr.Vector (now deprecated) [github.com] - Victor by Trello [github.com] (Friend of the show - Dan’s library that we also talked about) * StartUp podcast (by Gimlet media) [gimletmedia.com] * Android Device Dashboard (showing OS breakup)

Awesome picks: Philip:

  • Android tool for mac [github.com]
    • Makes it easy to take screenshots, videos, run scripts, bug reports..
  • 37 Signals - Getting Real [37signals.com]
    • A book Phil read when we were starting Shifty Jelly

Donn:

  • Sidekick By HubSpot [getsidekick.com]
    • Allows you to see when someone has opened your email etc.
  • Tim Ferriss Show with Noah Kagan [fourhourworkweek.com]
    • Great productivity hacks for everything and overall great show
  • Grammarly Chrome Extension [chrome.google.com]
    • Fix your grammatical errors before the internet fixes them for you.
  • 10 Lessons from 4 Years Working Remotely [whenihavetime.com]

Kaushik:

  • Custom View Groups- engineer at Facebook [wordpress.com]
  • LeakCanary by Square

Contact Philip Simpson * @geekygecko [twitter.com] * shiftyjelly.com * pocketcasts.com

Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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.

Show Notes * u2020 Demo App by Jake [github.com] + Real Intent Factory [github.com] + Fake Intent Factory [github.com] + Slides on Real/Fake Intent Factory [speakerdeck.com - DroidCon Presentation]

Server side frameworks with Java * Jersey [jersey.java.net] * Jax-rs [jax-rs-spec.java.net] * Go [golang.org]

Other languages * Jake on using Kotlin for Android [plug.google.com] * Kotlin (by JetBrains) [kotlinlang.org] * Anko [github.com] * Kotlin Android Extensions [kotlinlang.org] * Annotation processing for Groovy code [gradle.org]

Non-Square libraries that Jake uses * RxJava [github.com] * AutoParcel [github.com]

StickyListHeaders [github.com]

SQLBrite [github.com]

NotRxAndroid [github.com]

Awesome picks: Donn:

  • Android Testing is ten years behind http://philosophicalhacker.com/2015/04/17/why-android-unit-testing-is-so-hard-pt-1/
  • SquiDB is Yahoo’s new SQLite layer for Android: https://github.com/yahoo/squidb

Jake:

  • Diversify Your Learning
    • Rust - http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html
    • Internals of Git - https://codewords.recurse.com/issues/two/git-from-the-inside-out
    • GZip Encoding - http://jvns.ca/blog/2015/02/22/how-gzip-uses-huffman-coding/
    • Java 10 value objects - http://cr.openjdk.java.net/~briangoetz/valhalla/specialization.html

Kaushik:

  • 27” IPS LCD Monitors for Korean eBay vendors
  • New FIRST FSM-270YG 27" LED 2560x1440
  • The new DareDevil show on Netflix!

Contact Jake Wharton * @jakewharton [twitter.com] * jakewharton.com

Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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.

Show Notes Follow up: * Michel Panzer on UIL [plus.google.com]

Episode topics: * ActionBar Sherlock [github.com] * Jake’s working environment + Square Github Styles [github.com] + No tabs in Intellij [hadihariri.com] * Android source code browsing: + Android SDK Search by Roman Nurik [chrome.google.com] + Download the Android AOSP Source [source.android.com] + AndroidXref [androidxref.com] + Grepcode Android [grepcode.com] * Device Platform Versions [developer.android.com] * non-Java languages and platforms to draw inspiration from: + Go [golang.org] + Rust [rust-lang.org] + CycleJs [github.com] * Droidcon Montreal keynote by JW and JW

Contact Jake Wharton * @jakewharton [twitter.com] * jakewharton.com

Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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.

Show Notes Techniques/tips on effective image rendering in Android: Bitmap sizes and allocation: * Displaying bitmaps efficiently [developer.android.com] * RGB_565, ARGB_888 and other different bitmap configurations[developer.android.com] * Android Camera2 apis [developer.android.com] * Chet Haase DevByte : Bitmap allocation (bitmaps managed in Dalvik heap post 3.0; so large bitmaps implies large heap implies GC could happen more often)

Reuse bitmaps: * inBitmap option for Android 3.0 and later [developer.android.com] * before Android 4.4 only equal sized bitmaps with inSampleSize 1 supported[developer.android.com] * Reusing bitmap objects on Android[booking.com]

Downsample bitmaps * Load a scaled down version into memory [developer.android.com] + see code for calculateInSampleSize

Caching * Cache Algorithms - see LruCache [wikipedia.org] * LruCache object in Android [developer.android.com] * JakeWharton DiskLruCache [github.com] * Don’t use Soft or Weak References for your Caches [developer.android.com] * Android Performance Pattern DevByte - why 60fps

Image libraries for Android: * Picasso by Square [github.com] + fetch introduced in V 2.5.0 (Changelog) [github.com] + Picasso doesn’t do bitmap recycling + Jake Wharton’s thoughts on Picasso not having a bitmap pool [github.com] * Glide [github.com] + github issue where author explains tags being used to store metadata[github.com] + Glide does bitmap recycling * Ion + DeepZoom with Ion + Uses BitmapRegionDecoder to implement DeepZoom[developer.android.com] * Volley + Ficus Kirkpatrick introduces Volley in Google.IO + Doesn’t come with an image caching mechansim out of the box[stackoverflow.com] * Fresco + Introducing Fresco [code.facebook.com] + Romain Guy concern over native api call [twitter.com] * Other noteworthies that we did not discuss: + Universal Image Loader Library comparisons by others: * Picasso vs Glide [inthecheesefactory.com]

Image library comparisons: * JesseWilson on Picasso vs Fresco :P [twitter.com] * JesseWilson Picasso:Glide :: Coke:Pepsi [twitter.com] * Image comparisons by Koushik Dutta [plus.google.com] * Volley vs Picasso [bignerdranch.com]

Awesome picks: * Donn + Moshi - A new modern JSON library for Android and Java from the Square guys + JsonSchemaToPojo: Take json or a json schema and turn it into POJOs. + Parcelabler: Generate Parcelable implementations with a click of a button + Parceler: Android parcels created through Code generation * KG: + Not your father's Java: 3 part blog post series An opinionated guide to modern Java development + Stetho caster.io screencast: Debugging Android with Stetho - Donn’sscreencast + Cleartones : professional ringtones!

Contact Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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.

Show Notes RxJava Operators: * Observable.just [reactivex.io] * Observable.from [reactivex.io] * Observable.defer [reactivex.io] + Using defer to handle “Old, Slow Code” [blog.danlew.net] * Observable.map [reactivex.io] * Observable.flatmap [reactivex.io] + map vs flatmap (alchemist and cheese shredding analogy [reddit]) * Observable.zip [reactivex.io] * Observable.combineLatest [reactivex.io] * Observable. switchMap [reactivex.io] * Observable.distinctUntilChanged [reactivex.io] * Observable.lift explanation [reactivex.io] * Observable.compose + Don’t break the chain (using compose) [blog.danlew.net] * Observable.filter [reactivex.io] * Observable.take [reactivex.io] * subscribeOn vs observeOn [stackoverflow.com] * Understanding debounce, buffer, debouncedBuffer [nerds.weddingpartyapp.com]

RxJava Components: * Subjects: when is it appropriate to use [.net but still applies] [[davesexton.com] 19] * Implementing an event bus using RxJava [nerds.weddingpartyapp.com] * RxJava plugins [github.com] + RxJavaDebug plugin - for hooking to start/end/error [github.com] * .toBlocking() [reactivx.io] * Composite Subscriptions [reactivex.io]

Retrolambda * Retrolambda library [github.com] * Retrolambda gradle plugin [github.com] * Common Issue with Retrolambda (NoClassDefFoundError) [github.com]

Hot vs Cold observables - From the RxJs wiki [github.com] * uses js instead of java, but concepts are the same and this is the best explanation I’ve found so far.

RxJava wiki on Backpressure [github.com]: * Ring buffer size: System.setProperty("rx.ring-buffer.size", "128"); * Issue with changing buffer ring size [github.com] * It’s 16 on Android, down from 1024 originally. :P So it’s actually 64x smaller.

Awesome picks: Dan Lew:

  • Simple Made Easy (talk by Rich Hickey creator of Clojure) [infohq]
  • Victor by Trello (SVG assets) [github.com]

Donn:

  • Realm Object Database [realm.io]

Kaushik:

  • Therapeutic Refactoring (talk by Katrina Owen) [youtube.com]

Contact Dan Lew * @danlew42 [twitter.com] * Dan Lew’s blog [danlew.net]

Donn Felker * @donnfelker [twitter.com] * donnfelker.com

Kaushik Gopal * @kaushikgopal [twitter.com] * kaush.co

View Details

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.

Show Notes Dan’s open source contributions: * Joda-Time Android [github] + Why developers hate Timezones * Gfycat [github] * Victor by Trello [github]

Staying on top of Android Development: * Android Weekly * Android Dev Digest * Google RSS reader app - gReader * androiddev [reddit] * Best Book on learning Java [Effective Java: Joshua Bloch]

Dan’s favorite apps: * Timely * Pocket Casts * Reddit News * Muzei * gReader * Link Bubble * For more inspiration: Android Niceties

Android Games that Dan plays * Threes! * Hoplite * Wordiest

Working Remotely: * Trello * Slack * Notes by Eran Hammer [hueniverse.com]

Getting started with RxJava: * Dan Lews RxJava Series * Learning RxJava with Android by example [nerds.weddingpartyapp.com] * Android-RxJava [github.com/kaushikgopal] * Intro to Rx you’ve been missing [gist]

Rx * Rx - Reactive Extensions by Microsoft * ReactiveX [official page for Reactive Extensions] * RxAndroid

View Details

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.

Shownotes Android Studio (official IDE): * Google announces Android Studio [Google I/O 2013] * Developer frontpage – Android Studio is the official editor [developer.android.com]

“Open source-ness” of Android Studio: * IntelliJ open source platform for building IDEs [jetbrains.org] * Eclipse plugin ADT [developer.android.com] * Build Android Studio from command line [tools.android.com] * Jake Wharton’s u2020 Demo App

Environment customizations: * Kaushik’s Android studio environment (codestyle, livetemplates, keymap etc) [github.com] * Chris Kempson – original theme [chriskempson.com]

Annotation Magic: * A look at Android support animations [anupcowkur.com] * Support Annotations [tools.android.com] * Contract Annotations [blog.jetbrains.com] * Tools prefix: Tools of the trade by Sebastiano Poggi

Learning Android Studio resources: * Donn Felker Android Studio Tips: + Screencasts on Android Studio + Android Tools Book – Android Studio Chapter (FREE) * Philippe Breault [developerphil.com]: + Android studio tips roundup #1 + Android studio tips roundup #2 + Android studio tips roundup #3 + Android studio tips roundup #4 + Android studio tips roundup #5

The most important things on the internet: * Llamas in Arizona * Blue Black White Gold dresses

Awesome picks: * Stetho

Dan Lew’s RxJava Series

Rounded ImageView:

  • Rounded Bitmap drawable usage[gist]
  • Evelio blog post on different approaches to creating rounded image views
  • Chris Banes For questions, comments or suggestions you can reach us at

@donnfelker and @kaushikgopal

View Details

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?

Shownotes * Free Getting Started with Espresso 2.0 Screencast * Unit testing support – Android Tools site * Donn – Android from the trenches * Michael Bailey – (yogurtearl) – espresso, spoon and wiremock * Matt Logan – decoupling the presenter * KG – interested in an android developer podcast? * UiAutomator – Junit and Monkeyrunner got drunk and hooked up * Working Effectively With Legacy Code * Kent Beck talking about TDD – * Espresso 2.0 Cheat Sheet * Jake Wharton – ActivityRule * AssertJ / AssertJ-Android * XKCD – Compiling Comic * Mocks Aren’t Stubs – Martin Fowler * ClassNotFoundExceptoin – Espresso 2.0 Dagger Issue

Testing Links * Testing fundamentals * Espresso * Robolectric * Mockito * Spoon * Robotium * Android Dev Digest * AndroidJobs.IO

Sample Android Testing Projects

  • Google Samples

Awesome picks: * Device Lab * Inconsolata-dz font for development * Consolas font for development For questions, you can reach us at

@donnfelker and @kaushikgopal