Log in

goodpods headphones icon

To access all our features

Open the Goodpods app
Close icon
headphones
Gone Mobile

Gone Mobile

Jonathan Dick, Allan Ritchie

All the latest in .NET Mobile & MAUI (formerly Xamarin) developer technologies, covering in-depth topics ranging from Android, iOS, macOS and Windows, to mobile marketing, design and more! Also on YouTube: https://www.youtube.com/@GoneMobilePodcast
Share icon

All episodes

Best episodes

Top 10 Gone Mobile Episodes

Goodpods has curated a list of the 10 best Gone Mobile episodes, ranked by the number of listens and likes each episode have garnered from our listeners. If you are listening to Gone Mobile for the first time, there's no better place to start than with one of these standout episodes. If you are a fan of the show, vote for your favorite Gone Mobile episode by adding your comments to the episode page.

Gone Mobile - 103: Offline Data Sync: Cautionary Tales
play

04/19/24 • 66 min

The conversation revolves around the topic of offline battle tactics in mobile app development. Jon shares his experience with a pool app that required offline data storage and syncing. He initially used Realm, but faced issues with performance and scalability. He had to rewrite the login service and migrate data to a new backend. Allan discusses the challenges of offline data syncing, including handling deletes and updates, resolving conflicts, and ensuring data security. Jon explains his approach of using Cosmos DB and simple record types to handle offline data syncing. They emphasize the importance of considering the specific needs of the business and avoiding over-engineering solutions. The conversation explores the challenges and considerations of implementing offline functionality in mobile apps. The concept of 'end scars' is introduced, referring to the need to delete or reassign child data when the parent data is modified or deleted. The importance of handling offline scenarios gracefully and providing clear feedback to users is emphasized. The conversation also touches on the use of frameworks and abstractions for offline sync, with a discussion of Azure Mobile Apps and the limitations of such solutions. The benefits of using SQLite and the JSON support it offers are highlighted. In this final part of the conversation, Jon and Allan discuss their experiences with SQLite and offline functionality in mobile apps. They talk about the importance of optimizing app startup time and how SQLite can be a bottleneck in this process. They also share their preference for using SQL and the benefits of using SQLite-PCL-NET. The conversation then shifts to offline functionality and device-to-device communication, with Jon sharing his experience with Google's SDK for nearby communication. They briefly touch on the challenges of offline functionality in airplane environments and the limitations of Bluetooth connectivity. The episode concludes with a discussion on the importance of the SQLite raw library and its role in enabling advanced features like geolocation.

Takeaways

  • Offline data syncing in mobile app development can be challenging and requires careful consideration of business needs.
  • Choosing the right technology for offline data storage and syncing is crucial for performance and scalability.
  • Handling deletes, updates, conflicts, and data security are important aspects of offline data syncing.
  • Simplifying the data model and using simple record types can make offline data syncing easier to implement and maintain.
  • Avoid over-engineering solutions and focus on meeting the specific needs of the business. Offline functionality in mobile apps requires careful consideration and handling of data synchronization.
  • Handling 'end scars' is crucial, ensuring that child data is properly managed when parent data is modified or deleted.
  • Providing clear feedback to users about offline status and data synchronization is essential for a good user experience.
  • Using frameworks and abstractions for offline sync may have limitations and can lead to loss of control over data management.
  • SQLite is a reliable and widely-used option for local offline storage, with the added benefit of JSON support for flexible data storage. Optimizing app startup time is crucial, and SQLite can be a bottleneck in this process.
  • Using SQL and libraries like SQLite-PCL-NET can provide more control and flexibility in working with databases.
  • Offline functionality and device-to-device communication are important considerations in mobile app development.
  • The challenges of offline functionality in airplane environments include limited connectivity options and the need for peer-to-peer networks.
  • The SQLite raw library, maintained by Eric Sink, is a foundational piece for many SQLite-based solutions and enables advanced features like geolocation.

People

  • Hosts: Jon Dick, Allan Ritchie
  • Audio Engineer: Jim Heath

Chapters

  • 00:00 Introduction and Setting the Stage
  • 01:43 Offline Battle Tactics and Scars
  • 08:14 Challenges with Realm and Login Service
  • 14:17 Avoiding Over-Engineering and Building Dependencies
  • 25:15 Simplifying the Data Model for Easier Syncing
  • 27:04 Conclusion and Key Takeaways
  • 27:34 Managing 'End Scars' in Data Synchronization
  • 29:23 Importance of Clear Feedback in Offline Scenarios
  • 32:30 Benefits of Using SQLite for Local Offline Storage
  • 37:28 Limitations of Frameworks for Offline Sync
  • 48:57 Optimizing App Startup Time and the Role of SQLite
  • 50:47 The Benefits of Using SQL and SQLite-PCL-NET
  • 51:20 Offline Functionality and Device-to-Device Communication
  • 52:21 Challenges of Offline Functionality in Airplane Environments
  • 55:18 The ...
bookmark
plus icon
share episode
Gone Mobile - 89: Bound for greater Bindings
play

01/12/24 • 53 min

This conversation discusses the concept of bindings in a mobile.NET, Maui world. Bindings are used to integrate native libraries into the.NET ecosystem. The conversation covers the challenges and complexities of creating bindings for Android and iOS platforms. It explores the differences between Android X libraries and platform APIs. The concept of slim bindings is introduced, which involves creating a simplified interface for interacting with native libraries. The conversation also touches on the use of platform channels for message passing between.NET and native code. The future of bindings and the need for improved tools and processes are discussed. The conversation discusses the challenges and considerations when integrating platform channels in Xamarin projects. It explores the difficulties of referencing native frameworks and dependencies in Xcode projects and suggests the need for improved tooling to simplify the process. The conversation also delves into the complexities of handling AndroidX dependencies and the potential issues with duplicate libraries. Additionally, it highlights the concept of platform channels in Maui and the potential for creating a seamless integration experience. The recommended plugin for this episode is Xamarin Binding Helpers.

Plugins, Packages, and Products

This week we're talking about Xamarin.Binding.Helpers which helps make it easier to create slim bindings on Android, as well as Platform Channels which is an experiment for creating a message passing interface between native code and .NET MAUI apps.

People

  • Hosts: Jon Dick, Allan Ritchie
  • Audio Engineer: Jim Heath

Chapters

  • 00:00 Introduction
  • 01:09 Understanding Bindings in a Mobile.NET, Maui World
  • 02:00 Projections of Native APIs into the Managed.NET World
  • 03:41 The Evolution of Bindings
  • 04:06 The Challenge of Android X Libraries
  • 05:00 Dealing with Bindings in Xamarin
  • 06:07 The Complexity of Android Libraries
  • 07:03 Creating Android Bindings
  • 07:30 The Process of Android Binding
  • 08:16 Challenges with Java and Kotlin Libraries
  • 09:08 Handling Complex Inheritance in Java and Kotlin Libraries
  • 10:22 The Sprawl of Android X Libraries
  • 11:31 The Challenges of Binding Android X Libraries
  • 12:09 The Simplicity of Binding Platform APIs
  • 13:16 The Differences Between iOS and Android Bindings
  • 14:22 Creating iOS Bindings
  • 15:48 The Challenges of Objective-C and Swift Libraries
  • 18:36 The Need for Slim Bindings
  • 20:00 The Challenge of Dependency Chains
  • 21:54 The Concept of Slim Bindings
  • 23:46 The Advantages of Slim Bindings
  • 27:11 Determining When to Bind the Whole Library
  • 29:34 Debugging Slim Bindings
  • 34:52 The Concept of Platform Channels
  • 38:58 Performance Considerations of Platform Channels
  • 40:37 The Future of Bindings
  • 40:46 Integration with Xcode Project
  • 42:41 Challenges with Tooling
  • 46:48 Handling AndroidX Dependencies
  • 50:15 Platform Channels in Maui
  • 53:00 Plugin Recommendation: Xamarin Binding Helpers

Links:

bookmark
plus icon
share episode
Gone Mobile - 110: Tales from the Crypt
play

06/14/24 • 70 min

The conversation covers various mobile app development pitfalls and best practices, including the use of assembly scanning, loading large JSON files, and the misuse of dependency injection. The hosts share their experiences and insights on these topics, highlighting common mistakes and potential solutions. The conversation covers topics related to app performance, dependency injection, service management, constructor logic, and the impact of changes from Xamarin Forms to Maui. It delves into the challenges of resolving services, the use of async calls in constructors, and the importance of separating concerns in service management. The discussion emphasizes the need for thoughtful design and the avoidance of unnecessary complexity. In this conversation, Allan and Jon discuss the challenges and misconceptions surrounding observable collections in app development. They explore the performance implications, misuse, and alternative solutions, as well as the complexities of source generators and incremental generators. The conversation also touches on the importance of learning from mistakes and the potential for Roslyn analyzers in XAML. The episode concludes with a discussion about a new plugin package and listener feedback.

Takeaways

  • Mobile app development often involves common pitfalls and best practices that developers should be aware of.
  • Assembly scanning and loading large JSON files can impact app performance and should be approached with caution.
  • Misuse of dependency injection, such as making pages singleton for faster loading, can lead to unexpected issues and should be carefully considered.
  • Source generators can be a valuable tool for optimizing app performance and reducing unnecessary code.
  • Understanding the implications of various development practices is crucial for creating efficient and reliable mobile applications. App performance can be impacted by the management of services and the logic within constructors.
  • Separating concerns in service management is crucial for maintaining code quality and performance.
  • The transition from Xamarin Forms to Maui introduces changes that can affect app performance and behavior.
  • Avoiding unnecessary complexity and thoughtful design are key principles for effective service management and app performance optimization. Observable collections can lead to performance issues and are often misused in app development.
  • Source generators and incremental generators present complexities and challenges in app development.
  • Learning from mistakes is an important part of growth and improvement in software development.
  • Listener feedback and engagement are valuable for shaping future podcast episodes and content.

People

  • Hosts: Jon Dick, Allan Ritchie
  • Audio Engineer: Jim Heath

Chapters

  • 00:00 Introduction and Nostalgic Reflections
  • 02:50 Common Pitfalls in Mobile App Development
  • 24:22 Dependency Injection Best Practices
  • 42:27 The Impact of Xamarin Forms to Maui Transition
  • 48:53 Constructor Logic and Service Resolution Challenges
  • 51:29 Challenges of Observable Collections in App Development
  • 54:14 Learning from Mistakes in Software Development
  • 01:05:30 Engaging with Listener Feedback

Links:

bookmark
plus icon
share episode
Gone Mobile - 120: Buffet Style Show
play

09/23/24 • 66 min

In this episode, Jon and Allan discuss various topics, including listener feedback, using SQLite for local data storage, changes in Android's page size, creating a personalized video for a Disney trip, and working on a marketing app with custom requirements. In this conversation, Jon and Allan discuss the challenges and best practices of using collection views and bindable layouts in mobile app development. They caution against nesting collection views and bindable layouts within each other, as it can lead to performance issues and difficulties with recycling views. They also emphasize the importance of using cancellation tokens to properly handle asynchronous operations and avoid memory leaks. The conversation concludes with a discussion on the EmbedIO plugin, which allows developers to host a local web server within their mobile apps.

Takeaways

  • Listener feedback is important and should be addressed in future episodes
  • Using SQLite for local data storage can be a simple and efficient solution
  • Android's change in page size will require rebuilding native libraries
  • Creating a personalized video for a Disney trip can be a fun and memorable experience
  • Working on a marketing app with custom requirements can be challenging but rewarding Avoid nesting collection views and bindable layouts within each other to prevent performance issues and difficulties with view recycling
  • Use cancellation tokens to properly handle asynchronous operations and avoid memory leaks
  • Consider alternative approaches, such as lazy loading or logical collapsing, when dealing with large datasets or complex UI structures
  • The EmbedIO plugin allows developers to host a local web server within their mobile apps

People

  • Hosts: Jon Dick, Allan Ritchie
  • Audio/Video Engineer: Jim Heath

Chapters

  • 00:00 Introduction and Listener Feedback
  • 03:47 Using SQLite for Local Data Storage
  • 12:11 Android's Change in Page Size
  • 16:17 Creating a Personalized Video for a Disney Trip
  • 20:12 Working on a Marketing App with Custom Requirements
  • 31:11 Authentication Flows and Security
  • 49:03 Challenges with Collection Views and Bindable Layouts
  • 53:11 Avoid Nesting Scrolling Views
  • 01:01:25 Exploring the EmbedIO Plugin

YouTube: https://youtu.be/MH4bwX3JsNY

Links:

bookmark
plus icon
share episode

Summary

In this episode, Jon and Allan discuss the state of .NET Maui, the challenges of mobile development, and the benefits of using Blazor WebView in Maui apps. They also talk about the evolution of the Mono runtime, the use of handlers in Maui, and the transition from custom renders to source generators. Overall, they highlight the improvements and advancements in the .NET Maui framework and its potential for creating cross-platform mobile apps. In this episode, Jon and Allan discuss app profiling and performance optimization, highlighting the use of tools like DS router and DS dotnet trace to profile apps and identify performance issues. They emphasize the importance of measuring and optimizing early in the development process to avoid potential problems. The conversation then shifts to the introduction of a new segment called 'Plugin Package or Product,' where they showcase a library called compiled bindings that enhances the XAML experience by providing additional operators and reducing verbosity. They express their interest in incorporating such concepts into the core product. The episode concludes with a call to action for listeners to subscribe, leave reviews, and provide topic suggestions for future episodes.

Takeaways

The .NET Maui framework has made significant progress, with improvements in tooling, performance, and support for modern mobile app development.
Blazor WebView in Maui allows developers to leverage their existing Blazor skills and codebase to build hybrid mobile apps.
The transition from custom renders to handlers in Maui simplifies the development process and improves performance.
Source generators in Maui enable automatic code generation, reducing the need for manual coding and improving productivity. App profiling and performance optimization are crucial for identifying and resolving performance issues in apps.
Tools like DS router and DS dotnet trace can be used to profile apps and gather trace files and speed scope logs for analysis.
Early measurement and optimization can help prevent performance issues and improve the overall user experience.
Compiled bindings is a library that enhances the XAML experience by providing additional operators and reducing verbosity, making it easier to work with XAML.

Plugins, Packages, and Products

This week we're talking about Compiled Bindings: https://github.com/levitali/CompiledBindings which provides {x:Bind} Markup Extension for WPF, MAUI and Xamarin Forms.

Chapters

  • 00:00 Introduction and Changes to the Podcast
  • 06:17 State of .NET Maui
  • 09:24 Dependency Injection in .NET Maui
  • 11:12 Evolution of the Mono Runtime
  • 13:14 Challenges of Mobile Development
  • 19:22 Long-Term Release of .NET Maui
  • 21:20 Blazor Hybrid App
  • 23:43 Benefits of Blazor WebView
  • 25:49 Mixing Blazor and Maui
  • 31:35 Handlers in .NET Maui
  • 35:13 Porting Custom Renders to Handlers
  • 37:03 Source Generators in .NET Maui
  • 38:56 App Profiling and Performance Optimization
  • 41:29 Plugin Package or Product: Compiled Bindings
  • 47:04 Closing Remarks and Call to Action

Links:

bookmark
plus icon
share episode

Did you know that you can take your .NET code, including Xamarin.iOS and Xamarin.Android views, even Xamarin.Forms, and reference them from native Objective-C or Java applications? In this episode we talk to Jonathan Peppers, an engineer on the team at Microsoft working on this sorcery, and dig into how it works and where it's going. It's a brave new world!

Special Guest: Jonathan Peppers.

Sponsored By:

Links:

bookmark
plus icon
share episode
Gone Mobile - 45: Azure IoT with Amanda Lange
play

03/27/17 • 47 min

Over the last few years the Internet of Things has taken over the world, but what is it and what can you do with it? In this episode we're joined by Amanda Lange to walk through what it is, what kinds of experiences you can enable, and how Azure can help you manage your devices and create applications.

Special Guest: Amanda Lange.

Sponsored By:

Links:

bookmark
plus icon
share episode
Gone Mobile - 111: Configuration & Logging
play

06/24/24 • 58 min

In this episode, Jon and Allan discuss logging and configuration in mobile app development. They talk about their personal experiences with configuration and logging, including using environment variables, embedded resources, and external libraries like Sentry. They also touch on the performance implications of logging and the potential for source generation to improve configuration handling. Overall, they emphasize the importance of considering the specific needs of the app and the trade-offs between convenience and performance. In this conversation, Allan and Jon discuss logging and error handling in mobile app development. They mention the importance of having good logging tools and the drawbacks of using outdated tools like App Center. They also talk about the benefits of using a local logging system for debugging purposes. The conversation concludes with a discussion on the proper use of try-catch blocks and the importance of handling exceptions at the right level.

Takeaways

  • Consider the specific needs of your app when implementing configuration and logging
  • Use environment variables or constants for simple configuration needs
  • Be mindful of the performance implications of logging, especially in mobile apps
  • Explore external libraries like Sentry for crash reporting and error handling
  • Source generation can be a powerful tool for handling configuration Having good logging tools is crucial for effective debugging and error handling in mobile app development.
  • Using outdated tools like App Center for logging can lead to code pollution and limited functionality.
  • Local logging can be useful for debugging purposes, especially in scenarios where cloud logging is not necessary or practical.
  • Try-catch blocks should be used strategically and not excessively. They should be placed at the event triggers or where exceptions can be handled effectively.
  • Proper error handling and logging practices can help improve the overall stability and user experience of mobile apps.

People

  • Hosts: Jon Dick, Allan Ritchie
  • Audio Engineer: Jim Heath

Chapters

  • 00:00 Introduction and Episode Number
  • 06:02 Exploring External Libraries for Error Handling
  • 11:04 Finding the Right Balance: Convenience vs Performance
  • 23:45 Considerations for Configuration and Logging in Mobile Apps
  • 26:11 The Performance Implications of Logging
  • 29:12 Logging and Performance: A Closer Look
  • 32:05 The Drawbacks of Using Outdated Logging Tools
  • 34:12 The Benefits of Local Logging
  • 36:26 Strategic Use of Try-Catch Blocks
  • 41:38 Proper Error Handling and Logging Practices

Links:

bookmark
plus icon
share episode

Show more best episodes

Toggle view more icon

FAQ

How many episodes does Gone Mobile have?

Gone Mobile currently has 120 episodes available.

What topics does Gone Mobile cover?

The podcast is about Ios, Microsoft, How To, Windows, Podcasts, Technology, Education, Mobile, Android and .Net.

What is the most popular episode on Gone Mobile?

The episode title '110: Tales from the Crypt' is the most popular.

What is the average episode length on Gone Mobile?

The average episode length on Gone Mobile is 52 minutes.

How often are episodes of Gone Mobile released?

Episodes of Gone Mobile are typically released every 13 days, 22 hours.

When was the first episode of Gone Mobile?

The first episode of Gone Mobile was released on Sep 2, 2013.

Show more FAQ

Toggle view more icon

Comments