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
bookmark
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 - 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
Gone Mobile - 109: Dependency Injection - Beyond the Basics
play

06/07/24 • 60 min

The conversation delves into the topic of dependency injection (DI) and its evolution over the years. It covers the history of DI, different DI libraries, considerations for mobile development, and the future of DI with source generation. The discussion also touches on performance optimizations and the impact of DI on app startup time. The conversation covers topics related to dependency injection, scoping mechanisms, and the challenges of managing scopes in Maui apps. It also delves into the use of Prism and the need for out-of-the-box conventions for handling life cycles and navigation services in Maui. The conversation covers a deep dive into dependency injection, scope boundaries, and the challenges of managing dependencies in the context of mobile app development. It also delves into the nuances of using different DI containers and the impact on app performance. The hosts share their experiences, insights, and recommendations for handling these complexities effectively.

Takeaways

  • Dependency injection has evolved over the years and has become a crucial part of app development, especially in the mobile space.
  • Different DI libraries have their own strengths and considerations, and the choice of library depends on the specific use case and performance requirements.
  • The future of DI may involve source generation, which could lead to significant improvements in performance and reduce complexity in the registration process.
  • Considerations for mobile development include the impact of DI on app startup time and the need for performance optimizations.
  • Property injection and constructor injection are both relevant approaches in DI, and the choice between them depends on the specific requirements of the application. Understanding the challenges of managing scopes in Maui apps
  • The need for out-of-the-box conventions for handling life cycles and navigation services in Maui
  • Insights into the use of Prism and its impact on dependency injection in Maui apps Understanding scope boundaries is crucial for effective dependency injection in mobile app development.
  • Choosing the right DI container can significantly impact app performance and memory management.
  • Managing dependencies and understanding scope lifetimes is essential for avoiding memory leaks and performance issues in mobile apps.

People

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

Chapter

  • 00:00 The Evolution of Dependency Injection
  • 07:18 Considerations for Mobile Development
  • 13:47 The Future of Dependency Injection
  • 23:23 Understanding Scoping Mechanisms and Life Cycles
  • 26:34 The Need for Out-of-the-Box Conventions in Maui
  • 29:04 Dependency Injection and Prism in Maui Apps
  • 41:28 Understanding Scope Boundaries in Dependency Injection
  • 43:21 Common Misconceptions about Dependency Injection
  • 45:23 Impact of Dependency Injection in Prism and Maui Apps
  • 47:11 Debugging and Validation in Dependency Injection
  • 53:45 Audio Quality and Listener Engagement

Links:

  • .NET MAUI Micro MVVM — A small MVVM framework with navigation services & lifecycle built around .NET MAUI Shell by the great Dan Siegel
  • DryIoc — DryIoc is fast, small, full-featured IoC Container for .NET
bookmark
plus icon
share episode
Gone Mobile - 108: Architecture Patterns
play

05/31/24 • 68 min

In this conversation, Jon and Allan discuss various topics related to architecture and performance in mobile app development. They touch on the challenges of implementing the MVVM pattern and the potential for excessive property changed notifications. They also discuss the use of observable collections and the importance of using them only when necessary. Additionally, they express their dislike for messaging services and suggest using events or actions instead. Overall, the conversation emphasizes the need for thoughtful architecture and optimization in mobile app development. The conversation explores the use of mediator pattern in mobile and app development. The mediator pattern is seen as a solution to prevent service overrun and to provide logical separation in the app. It allows for vertical slicing of concerns and prevents the need for injecting multiple services. The conversation also discusses the challenges of messaging services and the benefits of using a mediator pattern in terms of scalability, error handling, and unit testing. The potential application of the mediator pattern in Xamarin and .NET Maui apps is explored. In this conversation, Allan and Jon discuss the concept of using a mediator pattern in mobile app development. They explore the benefits of using a mediator to handle communication between different components of an app, such as view models and services. They also discuss existing implementations of the mediator pattern, such as MediatR, and potential future developments in this area. Overall, they highlight the potential value of using a mediator pattern in mobile app architecture.

Takeaways

  • Implementing the MVVM pattern can lead to excessive property changed notifications, which may impact performance.
  • Observable collections should be used only when data is constantly changing, such as in real-time applications.
  • Consider using events or actions instead of messaging services for better control and clarity in event handling.
  • Thoughtful architecture and optimization are crucial for improving performance in mobile app development. The mediator pattern can be a solution to prevent service overrun and provide logical separation in mobile and app development.
  • Using a mediator pattern allows for vertical slicing of concerns and prevents the need for injecting multiple services.
  • The mediator pattern offers benefits such as scalability, error handling, and ease of unit testing.
  • The potential application of the mediator pattern in Xamarin and .NET Maui apps is worth exploring. The mediator pattern can be a valuable tool for handling communication between different components of a mobile app.
  • Using a mediator can simplify unit testing by allowing developers to focus on testing individual components rather than the entire app.
  • Existing implementations of the mediator pattern, such as MediatR, can provide a solid foundation for incorporating this pattern into mobile app development.
  • The mediator pattern can help clean up code and improve the organization and separation of concerns in mobile app architecture.

People

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

Chapters

  • 00:00 Introduction and Personal Updates
  • 03:00 Challenges of Implementing the MVVM Pattern
  • 09:04 Optimizing the Use of Observable Collections
  • 14:57 Avoiding Excessive Messaging Services
  • 22:18 Challenges with Messaging Services
  • 24:02 Exploring the Mediator Pattern
  • 27:07 The Role of Mediators in Routing
  • 30:17 Separation of Concerns and Dependency Injection
  • 33:30 Handling Events in Temporary View Models
  • 36:00 Benefits of the Mediator Pattern
  • 40:08 Scaling and Breaking Down Hotspots
  • 44:20 Command Handlers and Mediator Interaction
  • 46:27 Focusing on the Action with Mediators
  • 49:28 Simplifying Unit Testing with a Mediator
  • 52:17 Existing Implementations of the Mediator Pattern
  • 55:11 Handling Unsolicited Notifications with a Mediator
  • 57:24 Mediator Libraries and Best Practices
  • 01:00:57 Challenges and Considerations for Mediator Implementation
  • 01:03:49 Future Developments and Feedback

Links:

bookmark
plus icon
share episode
Gone Mobile - 107: IoT and Small Devices
play

05/24/24 • 67 min

In this conversation, Jonathan discusses his experience with building automation control systems for his swimming pool using microcontrollers and IoT devices. He talks about controlling the pool temperature, pool pumps, and a saltwater generator. He also explores the challenges and considerations of using different microcontrollers, such as the ESP8266 and the Meadow board, which runs .NET. Jonathan shares his passion for building IoT projects and the potential for using favorite programming languages in these environments. The conversation covers various topics related to IoT platforms, including the evolution of hardware into software-as-a-service (SaaS) platforms, the expansion of Meadow's ecosystem, the integration of Raspberry Pi with Meadow, the challenges of running web servers on microcontrollers, and personal projects involving IoT devices. The conversation also touches on the use of Meadow in pool automation and coffee brewing, as well as the ingenuity of building custom solutions using sensors and Raspberry Pi.

Takeaways

  • Building automation control systems for swimming pools using microcontrollers and IoT devices is a fascinating and practical application of technology.
  • Controlling the pool temperature, pool pumps, and other aspects of pool maintenance can be automated using microcontrollers and relays.
  • Different microcontrollers, such as the ESP8266 and the Meadow board, offer various capabilities and programming options for building IoT projects.
  • The Meadow board, which runs .NET, provides a more familiar programming environment for developers and offers the potential for using favorite programming languages in IoT - projects. IoT platforms often evolve from hardware devices to full-fledged software-as-a-service (SaaS) platforms.
  • Meadow is building an ecosystem around its platform, expanding its libraries and compatibility with devices like Raspberry Pi.
  • Running web servers on microcontrollers like Meadow can be challenging, but Meadow provides solutions like BLE servers and basic web server functionality.
  • Personal projects involving IoT devices can range from pool automation to coffee brewing, and can be built using sensors and Raspberry Pi.
  • Building custom solutions using sensors and Raspberry Pi can be a creative and practical way to solve real-world problems.

People

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

Chapters

  • 00:00 Introduction and Background
  • 02:26 Interest in IoT and Microcontrollers
  • 03:50 Comparing IoT to Early Xamarin Days
  • 08:11 Controlling Pool Temperature with Microcontrollers
  • 09:37 Automating Pool Pumps and Saltwater Generator
  • 28:27 Exploring the Meadow Board and .NET in IoT
  • 33:19 The Evolution of IoT Platforms
  • 34:41 Building an Ecosystem and Extending Compatibility
  • 35:10 Challenges of Running Web Servers on Microcontrollers
  • 39:23 Personal Projects: Pool Automation and Coffee Brewing
  • 52:59 Meadow Desktop: Coding Against APIs and Simulating Graphics
  • 01:03:38 Building Custom Solutions with Sensors and Raspberry Pi

Links:

bookmark
plus icon
share episode
Gone Mobile - 106: Structuring Apps
play

05/10/24 • 64 min

The conversation discusses the importance of structuring apps in terms of business requirements and how to make them easier to navigate and understand. It emphasizes the need to focus on translating business requirements into technology and suggests organizing projects based on business logic rather than technology layers. The conversation also touches on the use of services and the benefits of grouping them by section or feature. Additionally, the conversation explores the challenges of using IL manipulators and the limitations of certain frameworks in the context of C# hot reload. It concludes with a discussion on the need for base implementations and templates that provide guidance on structuring apps and implementing MVVM patterns. In this conversation, Jonathan and John discuss the importance of structuring services in mobile app development. They explore the use of MVVM frameworks like Prism and the challenges of writing technical code on top of existing tech services. They also discuss the benefits of using events and observables in services, as well as the use of dependency injection and the Microsoft implementation. The conversation concludes with a recommendation for the Refit library as the plugin packager product of the week.

Takeaways

  • Organize projects based on business logic rather than technology layers
  • Group services by section or feature to improve discoverability
  • Be cautious when using IL manipulators in mobile apps
  • Consider the limitations of certain frameworks in the context of C# hot reload
  • Provide base implementations and templates to guide app structure and MVVM implementation Structuring services in mobile app development is crucial for maintaining code organization and scalability.
  • MVVM frameworks like Prism provide a comprehensive structure for building full-featured apps.
  • Writing technical code on top of existing tech services can lead to complexity and bugs.
  • Using events and observables in services can simplify communication between components and reduce code duplication.
  • Dependency injection is a powerful tool for managing service dependencies and improving testability.
  • The Refit library is a recommended tool for generating HTTP clients from interfaces in a clean and efficient way.

People

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

Chapters

  • 00:00 Introduction
  • 00:59 Challenges of App Layout
  • 01:27 Discoverability of Business Logic
  • 03:18 Organizing Projects by Business Logic
  • 04:47 Grouping Services by Section
  • 06:44 Considerations for Global Services
  • 08:42 Moving Services to Relevant Folders
  • 10:03 Multiple Implementations of Services
  • 13:18 Challenges of IL Manipulators and C# Hot Reload
  • 19:07 Importance of Base Implementations and Templates
  • 00:12 Introduction
  • 00:29 Structuring Services in Mobile App Development
  • 34:20 The Benefits of Using Events and Observables in Services
  • 39:43 Dependency Injection and the Microsoft Implementation
  • 53:07 Plugin Packager Product of the Week: Refit
  • 01:03:36 Conclusion

Links:

  • Refit — The automatic type-safe REST library
  • Refitter — Refitter is a tool for generating a C# REST API Client using the Refit library. Refitter can generate the Refit interface and contracts from OpenAPI specifications.
bookmark
plus icon
share episode
Gone Mobile - 105: Our Android and iOS Wish Lists
play

05/03/24 • 64 min

Jon and Allan discuss their experiences and excitement surrounding tech conferences like WWDC and Google IO. They reminisce about attending conferences in the past and the thrill of new announcements and hardware giveaways. They also speculate on what they hope to see at upcoming conferences, such as immersive movies and a foldable iPhone. The conversation touches on the evolution of UI design and the convenience of using smartphones as cameras. The conversation covers topics such as foldable phones, APIs, UI changes, app stores, and permissions. The hosts discuss their preferences for foldable phones and the potential impact on UI design. They also explore the idea of integrating AI and context awareness into app development. The conversation touches on the App Store fees and the review process. They express their frustrations with Android permissions and suggest improvements for a more streamlined process. The conversation covers various topics including the challenges of changing APIs, the user experience of notifications on different platforms, the potential for new features in Apple TV, the power of Apple's M-series chips, the future of gaming on ARM-based devices, and a shout-out to Gerald Versluis and his packages.

Takeaways

  • Tech conferences like WWDC and Google IO are exciting events for developers and tech enthusiasts.
  • Attending conferences provides opportunities to learn about new announcements and interact with engineers.
  • The early days of conferences were filled with groundbreaking announcements and new hardware.
  • The current conference landscape is less surprising, but still offers valuable insights and updates.
  • The hosts express their hopes for future conferences, including immersive movies and a foldable iPhone.
  • The convenience and quality of smartphone cameras have made dedicated cameras less necessary.
  • Foldable phones have advantages in terms of screen size and potential for improved UI experiences.
  • APIs can be used to integrate AI and context awareness into app development.
  • The App Store fees are a topic of debate, but the convenience and services provided by the platform are valuable.
  • Android permissions can be complex and could benefit from a more unified and streamlined approach. - Changing APIs can be challenging, especially when they are frequently updated.
  • The user experience of notifications varies between platforms, with Android offering more customization options.
  • Apple TV could benefit from new features and updates.
  • Apple's M-series chips are powerful and efficient, but their graphics capabilities for gaming are still uncertain.
  • Gaming on ARM-based devices may require cloud streaming to achieve AAA game performance.
  • Gerald Versluis has developed useful packages, such as a screenshot API and an audio plugin, that fill gaps in functionality.
  • New features and APIs may be introduced through plugins before being integrated into cross-platform frameworks like Maui.

People

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

Chapters

  • 00:00 Introduction and Discussion of Fun Topics
  • 07:30 The Excitement of Early Conferences
  • 26:38 App Store Fees and Review Process
  • 45:08 Navigating the Challenges of Changing APIs
  • 52:05 The Power and Uncertainty of Apple's M-series Chips
  • 59:59 Shout-out to Gerald Versluis and His Useful Packages
bookmark
plus icon
share episode
Gone Mobile - 104: The one about XAML!
play

04/26/24 • 70 min

The conversation covers topics related to coffee-making methods and the use of XAML in app development. The hosts discuss their preferences for coffee machines and the process of making coffee. They also delve into the use of converters in XAML and the debate between putting logic in the view model or the view. The conversation explores the use of converters, extensions, and behaviors in XAML and their potential drawbacks. It also discusses the benefits of using compiled bindings and the importance of declaring data types in XAML for improved performance. The conversation touches on the use of XAML in Blazor and the potential future of XAML in web development. In this conversation, Jon and Allan discuss various optimization techniques for Xamarin.Forms and .NET MAUI apps. They cover topics such as compiled bindings, the performance impact of converters in collection views, optimizing XAML layouts, and the use of third-party libraries like Sharpnado CollectionView. They also touch on the challenges of building responsive layouts and the importance of considering platform-specific optimizations. Overall, the conversation provides valuable insights into improving the performance of Xamarin.Forms and .NET MAUI apps.

Takeaways

  • There are different preferences for coffee-making methods, from simple machines like Keurig to more complex ones like Chemex.
  • XAML can be verbose, and there is a debate about whether to put logic in the view model or the view.
  • Converters in XAML can be useful for transforming data, but it's important to avoid excessive use and keep business logic separate.
  • Localization in XAML can be done using dictionary strings and bindings, without the need for extensions.
  • The use of AI for auto-localization and translation is an interesting possibility.
  • In some cases, it may be beneficial to handle certain UI-related tasks in the view, even if it goes against the purist approach of separating concerns. Converters, extensions, and behaviors in XAML can be powerful but should be used judiciously and not overused.
  • Compiled bindings and X-bind can be alternatives to converters and provide better performance.
  • Declaring data types in XAML can improve performance and enable better IntelliSense.
  • XAML can be used in Blazor, but the heavier the reliance on XAML, the more challenging it may be to migrate to Blazor.
  • The future of XAML in web development is uncertain, with the web being the dominant platform. Compiled bindings can significantly improve the performance of Xamarin.Forms and .NET MAUI apps by eliminating the need for runtime reflection.
  • Converters in collection views can introduce performance overhead, especially when used extensively. It's important to minimize their usage and consider alternative approaches.
  • Optimizing XAML layouts involves avoiding unnecessary nesting of controls, using bindable grids instead of content views, and being mindful of the performance implications of stack layouts and scroll views.
  • Third-party libraries like Sharpnado CollectionView can provide additional performance optimizations and features for collection views in Xamarin.Forms and .NET MAUI apps.
  • Building responsive layouts can be challenging, and platform-specific optimizations may be necessary to achieve optimal performance.
  • Consider leaving a review on Apple Podcasts and checking out the Gone Mobile YouTube channel for more content.

People

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

Chapters

  • 00:00 The Art of Coffee-Making: From Keurig to Chemex
  • 09:39 The Power and Pitfalls of Converters in XAML
  • 35:28 The Power of Compiled Bindings and X-bind in XAML
  • 45:21 Challenges of Migrating XAML-heavy Apps to Blazor
  • 55:17 Challenges of Building Responsive Layouts
  • 01:04:59 Leaving Reviews and Exploring the Gone Mobile YouTube Channel

Links:

bookmark
plus icon
share episode
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 - 102: You should learn some MSBuild
play

04/12/24 • 58 min

The conversation covers various topics related to MSBuild and project files. It starts with an introduction and a discussion about the weather. The hosts then delve into the history and evolution of MSBuild, including the transition to SDK style projects. They explain the structure of new project files and highlight the benefits of using CS Proj for managing NuGet packages and CI. The conversation also covers customizing project files for platform-specific assets and the use of conditions in project files. The hosts discuss the importance of workloads and the rationale behind different SDKs. They also touch on the future of workloads and the challenges associated with them. This conversation explores various aspects of MSBuild, including workloads, importing MSBuild from NuGet packages, building custom entitlements, adding items to build from NuGet packages, customizing build props and targets, writing custom MSBuild tasks, using custom tasks and source generators, incremental source generation, and Michaela's MSBuild Editor Extension. The hosts emphasize the importance of understanding MSBuild and encourage listeners to explore and experiment with CSProj files to optimize their build processes.

Takeaways

  • MSBuild is a powerful tool for managing project files and building applications.
  • SDK style projects provide a more streamlined and approachable format for project files.
  • CS Proj files can be customized to include platform-specific assets and configurations.
  • Using CS Proj for managing NuGet packages and CI can simplify the development process.
  • Workloads in MSBuild provide a way to manage and organize project dependencies and configurations. MSBuild is a powerful build system that allows for customization and automation of the build process.
  • Importing MSBuild from NuGet packages provides an easier way to test nightly builds and service releases.
  • Customizing build props and targets allows for fine-grained control over the build process and the inclusion of specific assets.
  • Writing custom MSBuild tasks in C# can be a powerful way to extend the build system and perform complex build operations.
  • Using custom tasks and source generators can enhance the build process and improve performance.
  • Mikayla's MSBuild Editor Extension provides helpful features like IntelliSense and package version management for CSProj files.

People

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

Chapters

  • 00:00 Introduction and Weather
  • 00:20 Introduction to MSBuild
  • 01:12 Acquiring Taste for MSBuild
  • 03:17 Slim CS Proj
  • 04:03 Structure of New Project Files
  • 05:12 Default Maui Project Template
  • 06:36 Using CS Proj for NuGet Packages
  • 07:56 Benefits of Using CS Proj for CI
  • 08:26 Customizing Project Files for Platform-Specific Assets
  • 09:53 Leveraging MSBuild for Customization
  • 10:57 Command Line vs. CS Proj
  • 11:33 Importing Files and Directory Build Props
  • 12:37 Multiple SDK Imports
  • 13:15 Properties and Item Groups in Project Files
  • 14:05 Conditions in Project Files
  • 19:48 Rationale for Different SDKs
  • 22:19 Directory Build Props for Performance
  • 24:07 Workloads and SDK Imports
  • 26:17 Future of Workloads
  • 29:08 Challenges with Workloads
  • 31:09 MSBuild and Workloads
  • 32:03 Importing MSBuild from NuGet Packages
  • 33:12 Custom Entitlements and Build Props
  • 34:09 Building Custom Entitlements
  • 36:29 Adding Items to Build from NuGet Packages
  • 37:38 Automatically Making Apps Work with Libraries
  • 38:36 Customizing Build Props and Targets
  • 39:40 Doing Build-Related Tasks in MSBuild
  • 42:10 Writing Custom MSBuild Tasks
  • 44:23 Using Custom Tasks and Source Generators
  • 46:19 Incremental Source Generation
  • 49:46 Michaela's MSBuild Editor Extension
  • 56:19 Getting Started with MSBuild

Links:

bookmark
plus icon
share episode
Gone Mobile - 118: Mediator for Mobile
play

08/20/24 • 65 min

In this episode, Jon and Allan discuss various topics, including office renovations, phone migrations, and the use of mediator patterns in app development. They explore the concept of vertical slicing in architecture and the benefits of using a mediator to route messages. Allan shares his experience with mediator patterns in server architecture and highlights the need for a mediator pattern in app development. They also touch on the scalability of mediator patterns and the potential challenges of using them in certain scenarios. The conversation explores the concept of using a mediator pattern to handle services in an app. The mediator pattern allows for loose coupling and easier unit testing. It also simplifies the management of common services and reduces the need for multiple service injections. The conversation also touches on the use of events and requests with responses in the mediator pattern. The implementation of the mediator pattern in the context of a Maui app is discussed, including handling events and requests, offline mode, caching, and resiliency. In this conversation, Jon and Allan discuss the benefits and use cases of using MediatR in mobile app development. They explore the concept of middleware and how it can be used to handle various aspects of app functionality. They also discuss the challenges of finding and managing dependencies in a loosely coupled architecture. Allan introduces his MediatR library and explains how it simplifies the implementation of Mediator patterns in mobile apps. They also touch on topics like offline caching, resiliency, and event handling.

Takeaways

  • Mediator patterns can be used to vertically slice business domains in app development.
  • Mediators act as traffic cops, directing messages to the appropriate services.
  • Mediator patterns can improve code organization and reduce the need for injecting multiple services.
  • Using a mediator pattern can make testing and maintaining code easier.
  • Mediator patterns may not be suitable for high-frequency messaging or performance-critical scenarios. The mediator pattern can be used to handle services in an app, providing loose coupling and easier unit testing.
  • Using a mediator pattern simplifies the management of common services and reduces the need for multiple service injections.
  • Events and requests with responses are key components of the mediator pattern.
  • The mediator pattern can be implemented in a Maui app to handle events and requests, enable offline mode, caching, and resiliency.
  • Attributes can be used to customize the behavior of the mediator pattern, such as handling offline mode, caching, and user notifications. MediatR is a powerful library that simplifies the implementation of Mediator patterns in mobile app development.
  • Middleware can be used to handle various aspects of app functionality, such as offline caching, resiliency, and event handling.
  • Loosely coupled architectures can be challenging to manage, but tools like MediatR can help alleviate some of the complexity.
  • Finding and managing dependencies in a messaging-based architecture can be difficult, but there are strategies like namespacing and code navigation that can help.
  • MediatR provides a flexible and extensible solution for handling requests and events in mobile apps.

People

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

Chapters

  • 00:00 Introduction and Office Renovations
  • 09:07 Phone Migrations and Mediator Patterns
  • 14:21 Understanding Mediator Patterns
  • 17:13 Challenges of Scaling Mediator Patterns
  • 23:04 Implementing the Mediator Pattern in a Maui App
  • 27:59 Enabling Offline Mode, Caching, and Resiliency
  • 41:42 Source Generation and Runtime Lookup
  • 43:24 Replay: Handling Async Enumerables
  • 46:04 Mediator as a Stepping Stone
  • 48:26 Removing Attributes and Changing Behavior
  • 52:05 Improving Developer Experience
  • 55:11 Using Essentials API for Main Thread Handling
  • 57:20 Offline Caching with MediatR
  • 01:00:18 Using Middleware for Request Handling
  • 01:02:34 Considering Dependencies and Library Usage

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