<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" encoding="UTF-8" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:atom="http://www.w3.org/2005/Atom/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:fireside="http://fireside.fm/modules/rss/fireside">
  <channel>
    <fireside:hostname>web02.fireside.fm</fireside:hostname>
    <fireside:genDate>Sat, 11 Apr 2026 11:55:04 -0500</fireside:genDate>
    <generator>Fireside (https://fireside.fm)</generator>
    <title>GoneDotNet - Episodes Tagged with “Dotnet”</title>
    <link>https://www.gonedotnet.io/tags/dotnet</link>
    <pubDate>Mon, 30 Sep 2024 12:00:00 -0400</pubDate>
    <description>All the latest in .NET Development ranging from Mobile to Server
YouTube: https://www.youtube.com/@GoneDotNet
</description>
    <language>en-us</language>
    <itunes:type>episodic</itunes:type>
    <itunes:subtitle>Your input and output for all things .NET</itunes:subtitle>
    <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
    <itunes:summary>All the latest in .NET Development ranging from Mobile to Server
YouTube: https://www.youtube.com/@GoneDotNet
</itunes:summary>
    <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
    <itunes:explicit>no</itunes:explicit>
    <itunes:keywords>MAUI, dotnet, .NET, C#, Microsoft, Aspire, Orleans</itunes:keywords>
    <itunes:owner>
      <itunes:name>Jonathan Dick, Allan Ritchie</itunes:name>
      <itunes:email>jondick@gmail.com</itunes:email>
    </itunes:owner>
<itunes:category text="Technology"/>
<itunes:category text="Education">
  <itunes:category text="How To"/>
</itunes:category>
<itunes:category text="Technology"/>
<item>
  <title>121: Jon tries Mediator!  Copilot != Autopilot, and the Best iPhone ever!</title>
  <link>https://www.gonedotnet.io/121</link>
  <guid isPermaLink="false">6df6f435-bdeb-4da2-9162-51acd1949ef5</guid>
  <pubDate>Mon, 30 Sep 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/6df6f435-bdeb-4da2-9162-51acd1949ef5.mp3" length="31367436" type="audio/mpeg"/>
  <itunes:episode>121</itunes:episode>
  <itunes:title>Jon tries Mediator!  Copilot != Autopilot, and the Best iPhone ever!</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>This week Jon and Allan talk about a variety of things from Copilot on Autopilot, building a Snack App for Disney, iOS and Xcode updates, the new iPhone, and building a ContentButton for .NET MAUI.</itunes:subtitle>
  <itunes:duration>1:05:20</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode of Gone Mobile, Jon and Allan discuss a variety of topics ranging from sports team loyalty to the intricacies of app development. They delve into listener feedback about coding with AI tools like ChatGPT and Copilot, share insights on navigating iOS and Xcode updates, and explore new features in the iPhone 16. The conversation also covers updates in Maui and .NET, the importance of staying current with technology, and Jon's personal project of creating a snack app for Disney World. They conclude with a discussion on building a content button in Maui and the challenges of cross-platform development.
Takeaways
Listener feedback is crucial for app development.
AI tools can enhance coding but require understanding.
Staying updated with iOS and Xcode is essential for developers.
Maui and .NET updates bring new features and improvements.
Creating a snack app can be a fun personal project.
Cross-platform button development presents unique challenges.
Documentation is key for using libraries effectively.
Unit testing is important for ensuring code quality.
Engaging with listeners can lead to interesting discussions.
Future content may include coding demonstrations.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Sports and Team Loyalty
02:57 Listener Feedback and App Development
06:02 The Role of AI in Coding
08:58 Using ChatGPT and Copilot Effectively
11:58 Navigating iOS and Xcode Updates
15:04 Exploring New Features in iPhone 16
17:58 Maui and .NET Updates
20:55 Understanding Workload Management in .NET
24:03 The Importance of Staying Updated
27:02 Building a Snack App for Disney World
30:05 Creating a Content Button in Maui
32:48 Final Thoughts and Future Plans
YouTube
YouTube: https://youtu.be/f9rAV9lW9tk
</description>
  <itunes:keywords>dotnet, dotnet-maui, copilot, iphone, Keywords  sports, app development, AI in coding, iOS updates, Maui, .NET, listener feedback, snack app, content button, technology</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode of Gone Mobile, Jon and Allan discuss a variety of topics ranging from sports team loyalty to the intricacies of app development. They delve into listener feedback about coding with AI tools like ChatGPT and Copilot, share insights on navigating iOS and Xcode updates, and explore new features in the iPhone 16. The conversation also covers updates in Maui and .NET, the importance of staying current with technology, and Jon&#39;s personal project of creating a snack app for Disney World. They conclude with a discussion on building a content button in Maui and the challenges of cross-platform development.</p>

<h3>Takeaways</h3>

<ul>
<li>Listener feedback is crucial for app development.</li>
<li>AI tools can enhance coding but require understanding.</li>
<li>Staying updated with iOS and Xcode is essential for developers.</li>
<li>Maui and .NET updates bring new features and improvements.</li>
<li>Creating a snack app can be a fun personal project.</li>
<li>Cross-platform button development presents unique challenges.</li>
<li>Documentation is key for using libraries effectively.</li>
<li>Unit testing is important for ensuring code quality.</li>
<li>Engaging with listeners can lead to interesting discussions.</li>
<li>Future content may include coding demonstrations.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Sports and Team Loyalty</li>
<li>02:57 Listener Feedback and App Development</li>
<li>06:02 The Role of AI in Coding</li>
<li>08:58 Using ChatGPT and Copilot Effectively</li>
<li>11:58 Navigating iOS and Xcode Updates</li>
<li>15:04 Exploring New Features in iPhone 16</li>
<li>17:58 Maui and .NET Updates</li>
<li>20:55 Understanding Workload Management in .NET</li>
<li>24:03 The Importance of Staying Updated</li>
<li>27:02 Building a Snack App for Disney World</li>
<li>30:05 Creating a Content Button in Maui</li>
<li>32:48 Final Thoughts and Future Plans</li>
</ul>

<h3>YouTube</h3>

<p>YouTube: <a href="https://youtu.be/f9rAV9lW9tk" rel="nofollow">https://youtu.be/f9rAV9lW9tk</a></p><p>Links:</p><ul><li><a title="YouTube" rel="nofollow" href="https://youtu.be/f9rAV9lW9tk">YouTube</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode of Gone Mobile, Jon and Allan discuss a variety of topics ranging from sports team loyalty to the intricacies of app development. They delve into listener feedback about coding with AI tools like ChatGPT and Copilot, share insights on navigating iOS and Xcode updates, and explore new features in the iPhone 16. The conversation also covers updates in Maui and .NET, the importance of staying current with technology, and Jon&#39;s personal project of creating a snack app for Disney World. They conclude with a discussion on building a content button in Maui and the challenges of cross-platform development.</p>

<h3>Takeaways</h3>

<ul>
<li>Listener feedback is crucial for app development.</li>
<li>AI tools can enhance coding but require understanding.</li>
<li>Staying updated with iOS and Xcode is essential for developers.</li>
<li>Maui and .NET updates bring new features and improvements.</li>
<li>Creating a snack app can be a fun personal project.</li>
<li>Cross-platform button development presents unique challenges.</li>
<li>Documentation is key for using libraries effectively.</li>
<li>Unit testing is important for ensuring code quality.</li>
<li>Engaging with listeners can lead to interesting discussions.</li>
<li>Future content may include coding demonstrations.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Sports and Team Loyalty</li>
<li>02:57 Listener Feedback and App Development</li>
<li>06:02 The Role of AI in Coding</li>
<li>08:58 Using ChatGPT and Copilot Effectively</li>
<li>11:58 Navigating iOS and Xcode Updates</li>
<li>15:04 Exploring New Features in iPhone 16</li>
<li>17:58 Maui and .NET Updates</li>
<li>20:55 Understanding Workload Management in .NET</li>
<li>24:03 The Importance of Staying Updated</li>
<li>27:02 Building a Snack App for Disney World</li>
<li>30:05 Creating a Content Button in Maui</li>
<li>32:48 Final Thoughts and Future Plans</li>
</ul>

<h3>YouTube</h3>

<p>YouTube: <a href="https://youtu.be/f9rAV9lW9tk" rel="nofollow">https://youtu.be/f9rAV9lW9tk</a></p><p>Links:</p><ul><li><a title="YouTube" rel="nofollow" href="https://youtu.be/f9rAV9lW9tk">YouTube</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>120: Buffet Style Show</title>
  <link>https://www.gonedotnet.io/120</link>
  <guid isPermaLink="false">ac7f620e-1249-4dfd-9c49-ea8be0b155ef</guid>
  <pubDate>Mon, 23 Sep 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/ac7f620e-1249-4dfd-9c49-ea8be0b155ef.mp3" length="90743624" type="audio/mpeg"/>
  <itunes:episode>120</itunes:episode>
  <itunes:title>Buffet Style Show</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>From listener feedback, AI videos, cool things being worked on, to more tales from the crypt, this little bit of everything episode has it all!</itunes:subtitle>
  <itunes:duration>1:06:37</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  listener feedback, SQLite, Android, page size, personalized video, marketing app, collection views, bindable layouts, cancellation tokens, mobile app development, performance issues, recycling views, EmbedIO plugin</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss various topics, including listener feedback, using SQLite for local data storage, changes in Android&#39;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.</p>

<h3>Takeaways</h3>

<ul>
<li>Listener feedback is important and should be addressed in future episodes</li>
<li>Using SQLite for local data storage can be a simple and efficient solution</li>
<li>Android&#39;s change in page size will require rebuilding native libraries</li>
<li>Creating a personalized video for a Disney trip can be a fun and memorable experience</li>
<li>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</li>
<li>Use cancellation tokens to properly handle asynchronous operations and avoid memory leaks</li>
<li>Consider alternative approaches, such as lazy loading or logical collapsing, when dealing with large datasets or complex UI structures</li>
<li>The EmbedIO plugin allows developers to host a local web server within their mobile apps</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio/Video Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

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

<p>YouTube: <a href="https://youtu.be/MH4bwX3JsNY" rel="nofollow">https://youtu.be/MH4bwX3JsNY</a></p><p>Links:</p><ul><li><a title="unosquare/embedio: A tiny, cross-platform, module based web server for .NET" rel="nofollow" href="https://github.com/unosquare/embedio">unosquare/embedio: A tiny, cross-platform, module based web server for .NET</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss various topics, including listener feedback, using SQLite for local data storage, changes in Android&#39;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.</p>

<h3>Takeaways</h3>

<ul>
<li>Listener feedback is important and should be addressed in future episodes</li>
<li>Using SQLite for local data storage can be a simple and efficient solution</li>
<li>Android&#39;s change in page size will require rebuilding native libraries</li>
<li>Creating a personalized video for a Disney trip can be a fun and memorable experience</li>
<li>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</li>
<li>Use cancellation tokens to properly handle asynchronous operations and avoid memory leaks</li>
<li>Consider alternative approaches, such as lazy loading or logical collapsing, when dealing with large datasets or complex UI structures</li>
<li>The EmbedIO plugin allows developers to host a local web server within their mobile apps</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio/Video Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

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

<p>YouTube: <a href="https://youtu.be/MH4bwX3JsNY" rel="nofollow">https://youtu.be/MH4bwX3JsNY</a></p><p>Links:</p><ul><li><a title="unosquare/embedio: A tiny, cross-platform, module based web server for .NET" rel="nofollow" href="https://github.com/unosquare/embedio">unosquare/embedio: A tiny, cross-platform, module based web server for .NET</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>119: In App Purchasing Pain</title>
  <link>https://www.gonedotnet.io/119</link>
  <guid isPermaLink="false">91ff2146-7440-43e2-a6aa-346b8f8ef4ac</guid>
  <pubDate>Mon, 16 Sep 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/91ff2146-7440-43e2-a6aa-346b8f8ef4ac.mp3" length="88895738" type="audio/mpeg"/>
  <itunes:episode>119</itunes:episode>
  <itunes:title>In App Purchasing Pain</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>In this episode turned therapy session, Jon vents about In App Purchases and why they are so hard, too hard.  Why are they so hard?!</itunes:subtitle>
  <itunes:duration>1:04:38</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>The conversation revolves around the challenges and complexities of implementing in-app purchases in mobile apps, specifically focusing on the iOS and Android platforms. The hosts discuss the history of in-app purchases, the revenue cut taken by app stores, the introduction of subscriptions, and the implementation details and testing process involved. They also touch on the limitations and changes in the APIs provided by Apple and Google, as well as the importance of proper testing to ensure a smooth user experience. The conversation discusses the challenges and frustrations of dealing with payment processors, specifically in the context of mobile app development. The hosts express their dissatisfaction with the complexity and lack of flexibility in existing payment systems, such as Apple's StoreKit and Google's Play Billing. They highlight the difficulties of implementing and maintaining payment functionality, including handling subscriptions, refunds, and different transaction states. The hosts also mention RevenueCat as a potential solution that abstracts away the complexities of payment processing and provides a more streamlined experience for developers. The conversation revolves around the challenges and frustrations of implementing in-app purchases in mobile apps. The hosts discuss their personal experiences with app stores, subscription management, and revenue cat. They also touch on the complexities of handling transactions, storing subscription data, and the limitations of the current in-app purchase systems.
YouTube: https://youtu.be/cI0vf--ZQqY
Takeaways
In-app purchases have evolved from one-time consumables to recurring subscriptions, allowing developers to generate continuous revenue.
App stores like Apple and Google take a percentage cut from in-app purchases, which can impact the profitability of developers.
Implementing in-app purchases involves dealing with complex APIs, handling subscription renewals, and validating transactions.
Testing in-app purchases is crucial to ensure a seamless user experience and avoid revenue loss.
The APIs and implementation details for in-app purchases differ between iOS and Android, with each platform having its own challenges and limitations. Existing payment processors for mobile apps, such as Apple's StoreKit and Google's Play Billing, can be complex and inflexible to work with.
Implementing and maintaining payment functionality, including handling subscriptions, refunds, and transaction states, can be time-consuming and challenging for developers.
RevenueCat is a potential solution that abstracts away the complexities of payment processing and provides a more streamlined experience for developers.
Having a backend service like RevenueCat handle payment processing can free up developers to focus on providing value to their users.
Simplifying the payment process and providing clear documentation and examples can greatly improve the developer experience. Implementing in-app purchases can be challenging and frustrating
App stores have complex rules and limitations for in-app purchases
Subscription management and revenue cat can help simplify the process
Handling transactions and storing subscription data require careful consideration
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Background
03:05 The Evolution of In-App Purchases
05:57 Implementing In-App Purchases: Challenges and Complexity
10:00 The Importance of Proper Testing
12:57 Differences in iOS and Android In-App Purchase APIs
24:58 The Complexity of Payment Processors
27:15 The Cost of Subscription Business
29:11 The Complexity of API Configuration
34:03 RevenueCat: Abstracting Payment Processing
36:09 Simplifying the Developer Experience
44:31 The Challenges of Implementing In-App Purchases
50:01 Simplifying Subscription Management with Revenue Cat
52:39 Handling Transactions and Storing Subscription Data
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  in-app purchases, mobile apps, iOS, Android, app stores, subscriptions, revenue cut, implementation, testing, payment processors, mobile app development, challenges, frustrations, complexity, flexibility, StoreKit, Play Billing, subscriptions, refunds, transaction states, RevenueCat, in-app purchases, mobile apps, app stores, subscription management, revenue cat, transaction handling, subscription data</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>The conversation revolves around the challenges and complexities of implementing in-app purchases in mobile apps, specifically focusing on the iOS and Android platforms. The hosts discuss the history of in-app purchases, the revenue cut taken by app stores, the introduction of subscriptions, and the implementation details and testing process involved. They also touch on the limitations and changes in the APIs provided by Apple and Google, as well as the importance of proper testing to ensure a smooth user experience. The conversation discusses the challenges and frustrations of dealing with payment processors, specifically in the context of mobile app development. The hosts express their dissatisfaction with the complexity and lack of flexibility in existing payment systems, such as Apple&#39;s StoreKit and Google&#39;s Play Billing. They highlight the difficulties of implementing and maintaining payment functionality, including handling subscriptions, refunds, and different transaction states. The hosts also mention RevenueCat as a potential solution that abstracts away the complexities of payment processing and provides a more streamlined experience for developers. The conversation revolves around the challenges and frustrations of implementing in-app purchases in mobile apps. The hosts discuss their personal experiences with app stores, subscription management, and revenue cat. They also touch on the complexities of handling transactions, storing subscription data, and the limitations of the current in-app purchase systems.</p>

<p>YouTube: <a href="https://youtu.be/cI0vf--ZQqY" rel="nofollow">https://youtu.be/cI0vf--ZQqY</a></p>

<h3>Takeaways</h3>

<ul>
<li>In-app purchases have evolved from one-time consumables to recurring subscriptions, allowing developers to generate continuous revenue.</li>
<li>App stores like Apple and Google take a percentage cut from in-app purchases, which can impact the profitability of developers.</li>
<li>Implementing in-app purchases involves dealing with complex APIs, handling subscription renewals, and validating transactions.</li>
<li>Testing in-app purchases is crucial to ensure a seamless user experience and avoid revenue loss.</li>
<li>The APIs and implementation details for in-app purchases differ between iOS and Android, with each platform having its own challenges and limitations. Existing payment processors for mobile apps, such as Apple&#39;s StoreKit and Google&#39;s Play Billing, can be complex and inflexible to work with.</li>
<li>Implementing and maintaining payment functionality, including handling subscriptions, refunds, and transaction states, can be time-consuming and challenging for developers.</li>
<li>RevenueCat is a potential solution that abstracts away the complexities of payment processing and provides a more streamlined experience for developers.</li>
<li>Having a backend service like RevenueCat handle payment processing can free up developers to focus on providing value to their users.</li>
<li>Simplifying the payment process and providing clear documentation and examples can greatly improve the developer experience. Implementing in-app purchases can be challenging and frustrating</li>
<li>App stores have complex rules and limitations for in-app purchases</li>
<li>Subscription management and revenue cat can help simplify the process</li>
<li>Handling transactions and storing subscription data require careful consideration</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Background</li>
<li>03:05 The Evolution of In-App Purchases</li>
<li>05:57 Implementing In-App Purchases: Challenges and Complexity</li>
<li>10:00 The Importance of Proper Testing</li>
<li>12:57 Differences in iOS and Android In-App Purchase APIs</li>
<li>24:58 The Complexity of Payment Processors</li>
<li>27:15 The Cost of Subscription Business</li>
<li>29:11 The Complexity of API Configuration</li>
<li>34:03 RevenueCat: Abstracting Payment Processing</li>
<li>36:09 Simplifying the Developer Experience</li>
<li>44:31 The Challenges of Implementing In-App Purchases</li>
<li>50:01 Simplifying Subscription Management with Revenue Cat</li>
<li>52:39 Handling Transactions and Storing Subscription Data</li>
</ul><p>Links:</p><ul><li><a title="James Montemagno&#39;s In-App Billing Plugin" rel="nofollow" href="https://github.com/jamesmontemagno/InAppBillingPlugin">James Montemagno's In-App Billing Plugin</a></li><li><a title="YouTube Episode 119" rel="nofollow" href="https://youtu.be/cI0vf--ZQqY">YouTube Episode 119</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>The conversation revolves around the challenges and complexities of implementing in-app purchases in mobile apps, specifically focusing on the iOS and Android platforms. The hosts discuss the history of in-app purchases, the revenue cut taken by app stores, the introduction of subscriptions, and the implementation details and testing process involved. They also touch on the limitations and changes in the APIs provided by Apple and Google, as well as the importance of proper testing to ensure a smooth user experience. The conversation discusses the challenges and frustrations of dealing with payment processors, specifically in the context of mobile app development. The hosts express their dissatisfaction with the complexity and lack of flexibility in existing payment systems, such as Apple&#39;s StoreKit and Google&#39;s Play Billing. They highlight the difficulties of implementing and maintaining payment functionality, including handling subscriptions, refunds, and different transaction states. The hosts also mention RevenueCat as a potential solution that abstracts away the complexities of payment processing and provides a more streamlined experience for developers. The conversation revolves around the challenges and frustrations of implementing in-app purchases in mobile apps. The hosts discuss their personal experiences with app stores, subscription management, and revenue cat. They also touch on the complexities of handling transactions, storing subscription data, and the limitations of the current in-app purchase systems.</p>

<p>YouTube: <a href="https://youtu.be/cI0vf--ZQqY" rel="nofollow">https://youtu.be/cI0vf--ZQqY</a></p>

<h3>Takeaways</h3>

<ul>
<li>In-app purchases have evolved from one-time consumables to recurring subscriptions, allowing developers to generate continuous revenue.</li>
<li>App stores like Apple and Google take a percentage cut from in-app purchases, which can impact the profitability of developers.</li>
<li>Implementing in-app purchases involves dealing with complex APIs, handling subscription renewals, and validating transactions.</li>
<li>Testing in-app purchases is crucial to ensure a seamless user experience and avoid revenue loss.</li>
<li>The APIs and implementation details for in-app purchases differ between iOS and Android, with each platform having its own challenges and limitations. Existing payment processors for mobile apps, such as Apple&#39;s StoreKit and Google&#39;s Play Billing, can be complex and inflexible to work with.</li>
<li>Implementing and maintaining payment functionality, including handling subscriptions, refunds, and transaction states, can be time-consuming and challenging for developers.</li>
<li>RevenueCat is a potential solution that abstracts away the complexities of payment processing and provides a more streamlined experience for developers.</li>
<li>Having a backend service like RevenueCat handle payment processing can free up developers to focus on providing value to their users.</li>
<li>Simplifying the payment process and providing clear documentation and examples can greatly improve the developer experience. Implementing in-app purchases can be challenging and frustrating</li>
<li>App stores have complex rules and limitations for in-app purchases</li>
<li>Subscription management and revenue cat can help simplify the process</li>
<li>Handling transactions and storing subscription data require careful consideration</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Background</li>
<li>03:05 The Evolution of In-App Purchases</li>
<li>05:57 Implementing In-App Purchases: Challenges and Complexity</li>
<li>10:00 The Importance of Proper Testing</li>
<li>12:57 Differences in iOS and Android In-App Purchase APIs</li>
<li>24:58 The Complexity of Payment Processors</li>
<li>27:15 The Cost of Subscription Business</li>
<li>29:11 The Complexity of API Configuration</li>
<li>34:03 RevenueCat: Abstracting Payment Processing</li>
<li>36:09 Simplifying the Developer Experience</li>
<li>44:31 The Challenges of Implementing In-App Purchases</li>
<li>50:01 Simplifying Subscription Management with Revenue Cat</li>
<li>52:39 Handling Transactions and Storing Subscription Data</li>
</ul><p>Links:</p><ul><li><a title="James Montemagno&#39;s In-App Billing Plugin" rel="nofollow" href="https://github.com/jamesmontemagno/InAppBillingPlugin">James Montemagno's In-App Billing Plugin</a></li><li><a title="YouTube Episode 119" rel="nofollow" href="https://youtu.be/cI0vf--ZQqY">YouTube Episode 119</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>118: Mediator for Mobile</title>
  <link>https://www.gonedotnet.io/118</link>
  <guid isPermaLink="false">b32d6160-c068-4368-8357-4ea98c14c033</guid>
  <pubDate>Tue, 20 Aug 2024 13:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/b32d6160-c068-4368-8357-4ea98c14c033.mp3" length="93343097" type="audio/mpeg"/>
  <itunes:episode>118</itunes:episode>
  <itunes:title>Mediator for Mobile</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>This one's a deep dive into the Mediator implementation for Mobile (and .NET MAUI) that Allan's been cooking up.  Listen to find out why you want this in your app!</itunes:subtitle>
  <itunes:duration>1:05:47</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  office renovations, phone migrations, mediator patterns, vertical slicing, architecture, app development, scalability, mediator pattern, services, loose coupling, unit testing, common services, event handling, request handling, Maui app, offline mode, caching, resiliency, MediatR, mobile app development, middleware, loosely coupled architecture, dependencies, Mediator pattern, offline caching, resiliency, event handling</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Mediator patterns can be used to vertically slice business domains in app development.</li>
<li>Mediators act as traffic cops, directing messages to the appropriate services.</li>
<li>Mediator patterns can improve code organization and reduce the need for injecting multiple services.</li>
<li>Using a mediator pattern can make testing and maintaining code easier.</li>
<li>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.</li>
<li>Using a mediator pattern simplifies the management of common services and reduces the need for multiple service injections.</li>
<li>Events and requests with responses are key components of the mediator pattern.</li>
<li>The mediator pattern can be implemented in a Maui app to handle events and requests, enable offline mode, caching, and resiliency.</li>
<li>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.</li>
<li>Middleware can be used to handle various aspects of app functionality, such as offline caching, resiliency, and event handling.</li>
<li>Loosely coupled architectures can be challenging to manage, but tools like MediatR can help alleviate some of the complexity.</li>
<li>Finding and managing dependencies in a messaging-based architecture can be difficult, but there are strategies like namespacing and code navigation that can help.</li>
<li>MediatR provides a flexible and extensible solution for handling requests and events in mobile apps.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Office Renovations</li>
<li>09:07 Phone Migrations and Mediator Patterns</li>
<li>14:21 Understanding Mediator Patterns</li>
<li>17:13 Challenges of Scaling Mediator Patterns</li>
<li>23:04 Implementing the Mediator Pattern in a Maui App</li>
<li>27:59 Enabling Offline Mode, Caching, and Resiliency</li>
<li>41:42 Source Generation and Runtime Lookup</li>
<li>43:24 Replay: Handling Async Enumerables</li>
<li>46:04 Mediator as a Stepping Stone</li>
<li>48:26 Removing Attributes and Changing Behavior</li>
<li>52:05 Improving Developer Experience</li>
<li>55:11 Using Essentials API for Main Thread Handling</li>
<li>57:20 Offline Caching with MediatR</li>
<li>01:00:18 Using Middleware for Request Handling</li>
<li>01:02:34 Considering Dependencies and Library Usage</li>
</ul><p>Links:</p><ul><li><a title="Shiny Mediator" rel="nofollow" href="https://github.com/shinyorg/mediator">Shiny Mediator</a> &mdash; A Mediator for your .NET Apps with some of the most awesome middleware around</li><li><a title="MediatR" rel="nofollow" href="https://github.com/jbogard/MediatR">MediatR</a> &mdash; Simple, unambitious mediator implementation in .NET</li><li><a title="YouTube Episode 118" rel="nofollow" href="https://www.youtube.com/watch?v=cf1PK7iD6vI">YouTube Episode 118</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Mediator patterns can be used to vertically slice business domains in app development.</li>
<li>Mediators act as traffic cops, directing messages to the appropriate services.</li>
<li>Mediator patterns can improve code organization and reduce the need for injecting multiple services.</li>
<li>Using a mediator pattern can make testing and maintaining code easier.</li>
<li>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.</li>
<li>Using a mediator pattern simplifies the management of common services and reduces the need for multiple service injections.</li>
<li>Events and requests with responses are key components of the mediator pattern.</li>
<li>The mediator pattern can be implemented in a Maui app to handle events and requests, enable offline mode, caching, and resiliency.</li>
<li>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.</li>
<li>Middleware can be used to handle various aspects of app functionality, such as offline caching, resiliency, and event handling.</li>
<li>Loosely coupled architectures can be challenging to manage, but tools like MediatR can help alleviate some of the complexity.</li>
<li>Finding and managing dependencies in a messaging-based architecture can be difficult, but there are strategies like namespacing and code navigation that can help.</li>
<li>MediatR provides a flexible and extensible solution for handling requests and events in mobile apps.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Office Renovations</li>
<li>09:07 Phone Migrations and Mediator Patterns</li>
<li>14:21 Understanding Mediator Patterns</li>
<li>17:13 Challenges of Scaling Mediator Patterns</li>
<li>23:04 Implementing the Mediator Pattern in a Maui App</li>
<li>27:59 Enabling Offline Mode, Caching, and Resiliency</li>
<li>41:42 Source Generation and Runtime Lookup</li>
<li>43:24 Replay: Handling Async Enumerables</li>
<li>46:04 Mediator as a Stepping Stone</li>
<li>48:26 Removing Attributes and Changing Behavior</li>
<li>52:05 Improving Developer Experience</li>
<li>55:11 Using Essentials API for Main Thread Handling</li>
<li>57:20 Offline Caching with MediatR</li>
<li>01:00:18 Using Middleware for Request Handling</li>
<li>01:02:34 Considering Dependencies and Library Usage</li>
</ul><p>Links:</p><ul><li><a title="Shiny Mediator" rel="nofollow" href="https://github.com/shinyorg/mediator">Shiny Mediator</a> &mdash; A Mediator for your .NET Apps with some of the most awesome middleware around</li><li><a title="MediatR" rel="nofollow" href="https://github.com/jbogard/MediatR">MediatR</a> &mdash; Simple, unambitious mediator implementation in .NET</li><li><a title="YouTube Episode 118" rel="nofollow" href="https://www.youtube.com/watch?v=cf1PK7iD6vI">YouTube Episode 118</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>117: Connectivity "Out in the Wild"</title>
  <link>https://www.gonedotnet.io/117</link>
  <guid isPermaLink="false">d451a22d-5a39-41d3-ab8f-b6376b740f85</guid>
  <pubDate>Mon, 12 Aug 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/d451a22d-5a39-41d3-ab8f-b6376b740f85.mp3" length="84953303" type="audio/mpeg"/>
  <itunes:episode>117</itunes:episode>
  <itunes:title>Connectivity "Out in the Wild"</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Apps are increasingly reliant on connections always.  What do you do to make apps still work out in the wild where there's no internet?  Bluetooth, Maps, Data, and more!</itunes:subtitle>
  <itunes:duration>1:07:38</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>The conversation revolves around the topic of connectivity in remote areas and the use of offline apps. The hosts discuss their experiences with limited connectivity while traveling and camping. They also touch on the evolution of GPS technology and the challenges of offline mapping. The conversation highlights the importance of offline functionality in apps and the limitations of current map providers. The conversation covers various topics related to maps, offline capabilities, and communication technologies. The main themes include different map providers, the challenges of offline maps, the use of Bluetooth Low Energy (BLE) for communication, and the limitations of current location technologies. The conversation covers various topics related to offline functionality and Bluetooth technology. Allan discusses the importance of designing apps to work offline and the challenges that can arise when there is no internet connection. He also highlights the capabilities of Bluetooth 5 for data transfer and suggests using Bluetooth for offline communication when the internet is unavailable. The conversation touches on the concept of pause and resume for larger file transfers and the use of range requests in HTTP for resuming interrupted uploads. The hosts also share personal anecdotes about their experiences with slow internet connections and the use of download managers in the past.
Takeaways
Limited connectivity is still a common issue in remote areas, even with advancements in technology.
Offline functionality in apps is crucial for users who frequently find themselves without internet access.
GPS technology has come a long way, but some older devices still struggle with accuracy and reliability.
Map providers like Google and Apple lack robust APIs for developers to easily implement offline maps in their apps. There are several map providers available, including ArcGIS, Google Maps, Apple Maps, Mapbox, and OpenStreetMap.
Offline map capabilities are important for areas with limited internet coverage or for applications that require offline access to maps.
Mapbox offers its own map tiles and also allows users to plug in different tile providers.
OpenStreetMap is a community-driven project that provides up-to-date map data.
Tesla cars use a combination of OpenStreetMap data and vision-based systems for features like speed limits.
SVGs can be challenging to render and are not always suitable for offline use.
Bluetooth Low Energy (BLE) can be used for offline communication, such as sending messages and images.
Location technologies like GPS and LTE have limitations in terms of accuracy and availability.
Ultra-wideband and other technologies are being explored for more precise location tracking.
The nearby API by Google and the Estimote beacons are examples of technologies that enable proximity-based communication. Designing apps to work offline is important for scenarios where there is no internet connection.
Bluetooth 5 can be used for data transfer even when the internet is unavailable.
Range requests in HTTP can be used to resume interrupted uploads.
Slow internet connections and the use of download managers were common challenges in the past.
Consider using Bluetooth for offline communication and file transfers in IoT devices.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Discussion on Limited Connectivity
02:59 The Evolution of GPS Technology
08:00 Challenges with Offline Apps and Mapping
20:44 Exploring Different Map Providers
25:12 Mapbox Bindings and SVG Challenges
33:22 Importance of Internet on a Plane
36:02 Using Bluetooth Low Energy for Communication
39:00 Building a BLE Chat App for Offline Communication
41:23 Limitations of Location Technologies
44:37 Designing Apps for Offline Functionality
46:21 Resuming Interrupted Uploads with Range Requests
57:42 Challenges of Slow Internet Connections
01:03:01 Using Bluetooth for Offline Communication in IoT Devices
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  connectivity, remote areas, offline apps, GPS technology, offline mapping, maps, offline capabilities, communication technologies, map providers, ArcGIS, Google Maps, Apple Maps, Mapbox, OpenStreetMap, BLE, Bluetooth Low Energy, location technologies, offline functionality, Bluetooth technology, internet connection, data transfer, pause and resume, range requests, HTTP, file transfers, slow internet connections, download managers</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>The conversation revolves around the topic of connectivity in remote areas and the use of offline apps. The hosts discuss their experiences with limited connectivity while traveling and camping. They also touch on the evolution of GPS technology and the challenges of offline mapping. The conversation highlights the importance of offline functionality in apps and the limitations of current map providers. The conversation covers various topics related to maps, offline capabilities, and communication technologies. The main themes include different map providers, the challenges of offline maps, the use of Bluetooth Low Energy (BLE) for communication, and the limitations of current location technologies. The conversation covers various topics related to offline functionality and Bluetooth technology. Allan discusses the importance of designing apps to work offline and the challenges that can arise when there is no internet connection. He also highlights the capabilities of Bluetooth 5 for data transfer and suggests using Bluetooth for offline communication when the internet is unavailable. The conversation touches on the concept of pause and resume for larger file transfers and the use of range requests in HTTP for resuming interrupted uploads. The hosts also share personal anecdotes about their experiences with slow internet connections and the use of download managers in the past.</p>

<h3>Takeaways</h3>

<ul>
<li>Limited connectivity is still a common issue in remote areas, even with advancements in technology.</li>
<li>Offline functionality in apps is crucial for users who frequently find themselves without internet access.</li>
<li>GPS technology has come a long way, but some older devices still struggle with accuracy and reliability.</li>
<li>Map providers like Google and Apple lack robust APIs for developers to easily implement offline maps in their apps. There are several map providers available, including ArcGIS, Google Maps, Apple Maps, Mapbox, and OpenStreetMap.</li>
<li>Offline map capabilities are important for areas with limited internet coverage or for applications that require offline access to maps.</li>
<li>Mapbox offers its own map tiles and also allows users to plug in different tile providers.</li>
<li>OpenStreetMap is a community-driven project that provides up-to-date map data.</li>
<li>Tesla cars use a combination of OpenStreetMap data and vision-based systems for features like speed limits.</li>
<li>SVGs can be challenging to render and are not always suitable for offline use.
Bluetooth Low Energy (BLE) can be used for offline communication, such as sending messages and images.</li>
<li>Location technologies like GPS and LTE have limitations in terms of accuracy and availability.</li>
<li>Ultra-wideband and other technologies are being explored for more precise location tracking.</li>
<li>The nearby API by Google and the Estimote beacons are examples of technologies that enable proximity-based communication. Designing apps to work offline is important for scenarios where there is no internet connection.</li>
<li>Bluetooth 5 can be used for data transfer even when the internet is unavailable.</li>
<li>Range requests in HTTP can be used to resume interrupted uploads.</li>
<li>Slow internet connections and the use of download managers were common challenges in the past.</li>
<li>Consider using Bluetooth for offline communication and file transfers in IoT devices.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Discussion on Limited Connectivity</li>
<li>02:59 The Evolution of GPS Technology</li>
<li>08:00 Challenges with Offline Apps and Mapping</li>
<li>20:44 Exploring Different Map Providers</li>
<li>25:12 Mapbox Bindings and SVG Challenges</li>
<li>33:22 Importance of Internet on a Plane</li>
<li>36:02 Using Bluetooth Low Energy for Communication</li>
<li>39:00 Building a BLE Chat App for Offline Communication</li>
<li>41:23 Limitations of Location Technologies</li>
<li>44:37 Designing Apps for Offline Functionality</li>
<li>46:21 Resuming Interrupted Uploads with Range Requests</li>
<li>57:42 Challenges of Slow Internet Connections</li>
<li>01:03:01 Using Bluetooth for Offline Communication in IoT Devices</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episode 117" rel="nofollow" href="https://youtu.be/v-Jn9IIcaQw">YouTube Episode 117</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>The conversation revolves around the topic of connectivity in remote areas and the use of offline apps. The hosts discuss their experiences with limited connectivity while traveling and camping. They also touch on the evolution of GPS technology and the challenges of offline mapping. The conversation highlights the importance of offline functionality in apps and the limitations of current map providers. The conversation covers various topics related to maps, offline capabilities, and communication technologies. The main themes include different map providers, the challenges of offline maps, the use of Bluetooth Low Energy (BLE) for communication, and the limitations of current location technologies. The conversation covers various topics related to offline functionality and Bluetooth technology. Allan discusses the importance of designing apps to work offline and the challenges that can arise when there is no internet connection. He also highlights the capabilities of Bluetooth 5 for data transfer and suggests using Bluetooth for offline communication when the internet is unavailable. The conversation touches on the concept of pause and resume for larger file transfers and the use of range requests in HTTP for resuming interrupted uploads. The hosts also share personal anecdotes about their experiences with slow internet connections and the use of download managers in the past.</p>

<h3>Takeaways</h3>

<ul>
<li>Limited connectivity is still a common issue in remote areas, even with advancements in technology.</li>
<li>Offline functionality in apps is crucial for users who frequently find themselves without internet access.</li>
<li>GPS technology has come a long way, but some older devices still struggle with accuracy and reliability.</li>
<li>Map providers like Google and Apple lack robust APIs for developers to easily implement offline maps in their apps. There are several map providers available, including ArcGIS, Google Maps, Apple Maps, Mapbox, and OpenStreetMap.</li>
<li>Offline map capabilities are important for areas with limited internet coverage or for applications that require offline access to maps.</li>
<li>Mapbox offers its own map tiles and also allows users to plug in different tile providers.</li>
<li>OpenStreetMap is a community-driven project that provides up-to-date map data.</li>
<li>Tesla cars use a combination of OpenStreetMap data and vision-based systems for features like speed limits.</li>
<li>SVGs can be challenging to render and are not always suitable for offline use.
Bluetooth Low Energy (BLE) can be used for offline communication, such as sending messages and images.</li>
<li>Location technologies like GPS and LTE have limitations in terms of accuracy and availability.</li>
<li>Ultra-wideband and other technologies are being explored for more precise location tracking.</li>
<li>The nearby API by Google and the Estimote beacons are examples of technologies that enable proximity-based communication. Designing apps to work offline is important for scenarios where there is no internet connection.</li>
<li>Bluetooth 5 can be used for data transfer even when the internet is unavailable.</li>
<li>Range requests in HTTP can be used to resume interrupted uploads.</li>
<li>Slow internet connections and the use of download managers were common challenges in the past.</li>
<li>Consider using Bluetooth for offline communication and file transfers in IoT devices.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Discussion on Limited Connectivity</li>
<li>02:59 The Evolution of GPS Technology</li>
<li>08:00 Challenges with Offline Apps and Mapping</li>
<li>20:44 Exploring Different Map Providers</li>
<li>25:12 Mapbox Bindings and SVG Challenges</li>
<li>33:22 Importance of Internet on a Plane</li>
<li>36:02 Using Bluetooth Low Energy for Communication</li>
<li>39:00 Building a BLE Chat App for Offline Communication</li>
<li>41:23 Limitations of Location Technologies</li>
<li>44:37 Designing Apps for Offline Functionality</li>
<li>46:21 Resuming Interrupted Uploads with Range Requests</li>
<li>57:42 Challenges of Slow Internet Connections</li>
<li>01:03:01 Using Bluetooth for Offline Communication in IoT Devices</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episode 117" rel="nofollow" href="https://youtu.be/v-Jn9IIcaQw">YouTube Episode 117</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>116: What's new for .NET 9?</title>
  <link>https://www.gonedotnet.io/116</link>
  <guid isPermaLink="false">74f555ef-fb4e-4e1b-b4db-53bc1993ce3b</guid>
  <pubDate>Mon, 05 Aug 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/74f555ef-fb4e-4e1b-b4db-53bc1993ce3b.mp3" length="103203127" type="audio/mpeg"/>
  <itunes:episode>116</itunes:episode>
  <itunes:title>What's new for .NET 9?</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>.NET 9 is just around the corner!  Listen to Jon &amp; Allan talk about what they are excited to see in C# 13 and .NET MAUI!</itunes:subtitle>
  <itunes:duration>1:07:15</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this conversation, Jon and Allan discuss the upcoming features in .NET 9 and Maui. They talk about the challenges faced during the development of Maui and the improvements made in the tooling. They also discuss the new C# language features, including collection expressions and the system threading lock type. They touch on the concept of workloads and the introduction of workload version sets to improve the stability and repeatability of builds. They also mention the new title bar customization feature in Maui. In this conversation, Jon and Allan discuss several topics related to .NET MAUI. They cover the customization of the title bar, the new disconnect handlers feature, the embedding of Maui code into native apps, the upcoming CollectionView handler 2, and the potential switch to using unpackaged templates for Windows. They also mention the importance of having an escape hatch when using external libraries and the benefits of the dev loop on Windows. They conclude by encouraging listeners to leave five-star reviews and recommending the Warp tool for Mac users.
Takeaways
The development of Maui faced challenges, but improvements have been made in the tooling.
New C# language features in .NET 9 include collection expressions and the system threading lock type.
Workloads and workload version sets have been introduced to improve the stability and repeatability of builds.
Maui now has a title bar customization feature for windows.  The conversation highlights the importance of open and transparent communication in the development process. Customizing the title bar in .NET MAUI allows for the addition of various elements such as icons and menus.
Disconnect handlers in .NET MAUI help manage memory leaks and provide control over when resources are released.
The embedding feature in .NET MAUI allows developers to integrate Maui code into existing native apps.
The upcoming CollectionView handler 2 in .NET MAUI will use newer APIs, improving performance and reducing complexity.
There is a potential switch to using unpackaged templates for Windows in .NET MAUI, which would improve the development experience and deployment process.
Having an escape hatch when using external libraries allows for flexibility and easier swapping of components.
The dev loop on Windows is fast and efficient, making it a preferred platform for development.
Leaving five-star reviews and recommending tools like the Warp tool for Mac users helps support the community and discover new resources.
People
Hosts: Jon Dick, Allan Ritchie
A/V Engineer: Jim Heath
Chapters
00:00 Introduction and Challenges in Maui Development
02:31 New C# Language Features in .NET 9
04:58 Workloads and Workload Version Sets
10:00 Title Bar Customization in Maui
14:20 Importance of Open and Transparent Communication
32:56 Customizing the Title Bar
39:30 Disconnect Handlers
43:35 Embedding Maui Code
49:05 CollectionView Handler 2
55:44 Switching to Unpackaged Templates for Windows
59:04 The Dev Loop on Windows
01:03:52 Having an Escape Hatch
01:05:56 Recommendation: The Warp Tool
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  C#, .NET 9, Maui, tooling, language features, collection expressions, system threading lock, workloads, workload version sets, title bar customization, customization, title bar, disconnect handlers, embedding, CollectionView handler 2, unpackaged templates, Windows, external libraries, dev loop, five-star reviews, Warp tool</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this conversation, Jon and Allan discuss the upcoming features in .NET 9 and Maui. They talk about the challenges faced during the development of Maui and the improvements made in the tooling. They also discuss the new C# language features, including collection expressions and the system threading lock type. They touch on the concept of workloads and the introduction of workload version sets to improve the stability and repeatability of builds. They also mention the new title bar customization feature in Maui. In this conversation, Jon and Allan discuss several topics related to .NET MAUI. They cover the customization of the title bar, the new disconnect handlers feature, the embedding of Maui code into native apps, the upcoming CollectionView handler 2, and the potential switch to using unpackaged templates for Windows. They also mention the importance of having an escape hatch when using external libraries and the benefits of the dev loop on Windows. They conclude by encouraging listeners to leave five-star reviews and recommending the Warp tool for Mac users.</p>

<h3>Takeaways</h3>

<ul>
<li>The development of Maui faced challenges, but improvements have been made in the tooling.</li>
<li>New C# language features in .NET 9 include collection expressions and the system threading lock type.</li>
<li>Workloads and workload version sets have been introduced to improve the stability and repeatability of builds.</li>
<li>Maui now has a title bar customization feature for windows.  The conversation highlights the importance of open and transparent communication in the development process. Customizing the title bar in .NET MAUI allows for the addition of various elements such as icons and menus.</li>
<li>Disconnect handlers in .NET MAUI help manage memory leaks and provide control over when resources are released.</li>
<li>The embedding feature in .NET MAUI allows developers to integrate Maui code into existing native apps.</li>
<li>The upcoming CollectionView handler 2 in .NET MAUI will use newer APIs, improving performance and reducing complexity.</li>
<li>There is a potential switch to using unpackaged templates for Windows in .NET MAUI, which would improve the development experience and deployment process.</li>
<li>Having an escape hatch when using external libraries allows for flexibility and easier swapping of components.</li>
<li>The dev loop on Windows is fast and efficient, making it a preferred platform for development.</li>
<li>Leaving five-star reviews and recommending tools like the Warp tool for Mac users helps support the community and discover new resources.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>A/V Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Challenges in Maui Development</li>
<li>02:31 New C# Language Features in .NET 9</li>
<li>04:58 Workloads and Workload Version Sets</li>
<li>10:00 Title Bar Customization in Maui</li>
<li>14:20 Importance of Open and Transparent Communication</li>
<li>32:56 Customizing the Title Bar</li>
<li>39:30 Disconnect Handlers</li>
<li>43:35 Embedding Maui Code</li>
<li>49:05 CollectionView Handler 2</li>
<li>55:44 Switching to Unpackaged Templates for Windows</li>
<li>59:04 The Dev Loop on Windows</li>
<li>01:03:52 Having an Escape Hatch</li>
<li>01:05:56 Recommendation: The Warp Tool</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episode 116" rel="nofollow" href="https://youtu.be/IqBiBKMFK7U">YouTube Episode 116</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this conversation, Jon and Allan discuss the upcoming features in .NET 9 and Maui. They talk about the challenges faced during the development of Maui and the improvements made in the tooling. They also discuss the new C# language features, including collection expressions and the system threading lock type. They touch on the concept of workloads and the introduction of workload version sets to improve the stability and repeatability of builds. They also mention the new title bar customization feature in Maui. In this conversation, Jon and Allan discuss several topics related to .NET MAUI. They cover the customization of the title bar, the new disconnect handlers feature, the embedding of Maui code into native apps, the upcoming CollectionView handler 2, and the potential switch to using unpackaged templates for Windows. They also mention the importance of having an escape hatch when using external libraries and the benefits of the dev loop on Windows. They conclude by encouraging listeners to leave five-star reviews and recommending the Warp tool for Mac users.</p>

<h3>Takeaways</h3>

<ul>
<li>The development of Maui faced challenges, but improvements have been made in the tooling.</li>
<li>New C# language features in .NET 9 include collection expressions and the system threading lock type.</li>
<li>Workloads and workload version sets have been introduced to improve the stability and repeatability of builds.</li>
<li>Maui now has a title bar customization feature for windows.  The conversation highlights the importance of open and transparent communication in the development process. Customizing the title bar in .NET MAUI allows for the addition of various elements such as icons and menus.</li>
<li>Disconnect handlers in .NET MAUI help manage memory leaks and provide control over when resources are released.</li>
<li>The embedding feature in .NET MAUI allows developers to integrate Maui code into existing native apps.</li>
<li>The upcoming CollectionView handler 2 in .NET MAUI will use newer APIs, improving performance and reducing complexity.</li>
<li>There is a potential switch to using unpackaged templates for Windows in .NET MAUI, which would improve the development experience and deployment process.</li>
<li>Having an escape hatch when using external libraries allows for flexibility and easier swapping of components.</li>
<li>The dev loop on Windows is fast and efficient, making it a preferred platform for development.</li>
<li>Leaving five-star reviews and recommending tools like the Warp tool for Mac users helps support the community and discover new resources.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>A/V Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Challenges in Maui Development</li>
<li>02:31 New C# Language Features in .NET 9</li>
<li>04:58 Workloads and Workload Version Sets</li>
<li>10:00 Title Bar Customization in Maui</li>
<li>14:20 Importance of Open and Transparent Communication</li>
<li>32:56 Customizing the Title Bar</li>
<li>39:30 Disconnect Handlers</li>
<li>43:35 Embedding Maui Code</li>
<li>49:05 CollectionView Handler 2</li>
<li>55:44 Switching to Unpackaged Templates for Windows</li>
<li>59:04 The Dev Loop on Windows</li>
<li>01:03:52 Having an Escape Hatch</li>
<li>01:05:56 Recommendation: The Warp Tool</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episode 116" rel="nofollow" href="https://youtu.be/IqBiBKMFK7U">YouTube Episode 116</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>115: All the AI</title>
  <link>https://www.gonedotnet.io/115</link>
  <guid isPermaLink="false">a2a34c70-6ffb-4354-bcdd-0119f1f813d2</guid>
  <pubDate>Mon, 29 Jul 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/a2a34c70-6ffb-4354-bcdd-0119f1f813d2.mp3" length="88379193" type="audio/mpeg"/>
  <itunes:episode>115</itunes:episode>
  <itunes:title>All the AI</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Everything has AI in it now.  What does that even mean anymore?  How have Allan and Jon been using AI in their apps, in their lives?</itunes:subtitle>
  <itunes:duration>1:07:48</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this conversation, Jon and Allan discuss their love for coffee and the potential for an AI-powered coffee machine. They also delve into the topic of AI and its applications, particularly in image recognition and document intelligence. Allan shares his experience with training models for forms recognition and credit card scanning, highlighting the benefits of AI in automating data extraction. They also touch on the challenges of image resolution and the potential for on-device AI models. The conversation covers topics such as on-device barcode scanning, Azure Vision, Firebase ML, multilingual apps, and the use of AI in documentation and issue management on GitHub. In this conversation, Allan and Jon discuss their experiences with source generators and AI. They talk about the challenges and benefits of using source generators in their projects and how AI can be applied in various domains. They also mention the importance of understanding the limitations and potential liabilities of AI systems. Additionally, they mention new barcode scanning packages for Maui and reflect on their past experiences with native packages.
Takeaways
AI can be applied to improve the coffee-making process, leading to better quality and automation.
AI has made significant advancements in image recognition and document intelligence, enabling the extraction of data from various sources.
Training AI models for specific tasks, such as forms recognition and credit card scanning, can greatly enhance data processing and automation.
Image resolution and optimization are crucial factors in achieving accurate results with AI models.
The potential for on-device AI models offers benefits such as reduced bandwidth usage and improved energy efficiency. On-device barcode scanning is available through Azure Vision and Firebase ML.
Azure Document Intelligence SDK works well in Maui apps and can be used for tasks like credit card scanning.
AI can be used to automate documentation writing and make it sound more professional.
AI can help identify duplicate issues and provide relevant suggestions on GitHub.
AI language models like ChatGPT can be used to generate code samples and improve productivity.
AI language models can also be used for multilingual apps and translation tasks.
Roslyn analyzers can be used to analyze and provide suggestions for code quality and best practices. Source generators can be a powerful tool for generating code and fixing issues, but they require a good understanding of the underlying syntax and tree structure.
AI can be used in various domains, such as creating assistants and analyzing data, but it's important to consider the potential liabilities and ensure accurate results.
New barcode scanning packages for Maui, such as 'barcode-mobile.Maui' and 'barcode-scanning.native.Maui', provide improved functionality and integration with Apple Vision and AndroidX.
Understanding the limitations and potential costs of AI systems is crucial for effective implementation and user satisfaction.
Reflecting on past experiences with native packages, such as ACR Dialogues and HUD, highlights the longevity and continued use of certain libraries in the development community.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 The Quest for the Perfect Cup of Coffee: AI-Powered Coffee Machines
03:21 Advancements in Image Recognition and Document Intelligence with AI
07:37 Automating Data Extraction with AI: Forms Recognition and Credit Card Scanning
11:52 Optimizing Image Resolution for Accurate AI Results
18:12 The Potential of On-Device AI Models: Efficiency and Convenience
20:40 On-Device Barcode Scanning
24:08 Azure Document Intelligence and Maui Apps
26:11 Automating Documentation Writing
37:14 AI-Powered Issue Management on GitHub
40:08 AI for Multilingual Apps and Translation Tasks
42:42 Using Roslyn Analyzers for Code Quality
42:51 Introduction
43:00 Challenges and Benefits of Source Generators
43:29 Applying AI in Various Domains
44:29 Creating Analyzers and Code Fixers
45:34 New Barcode Scanning Packages for Maui
46:21 Exploring Font Scaling and Modifiers
48:09 Understanding the Limitations and Liabilities of AI Systems
51:48 AI in Motion Detection and Trail Cameras
52:41 Using OpenAI Library for Creating Assistants
56:54 Reflecting on Past Experiences with Native Packages
01:02:01 New Barcode Scanning Packages for Maui
01:03:22 Long Live Barcode Scanning
01:06:04 Conclusion
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  coffee, AI, image recognition, document intelligence, forms recognizer, credit card scanning, OCR, on-device models, on-device barcode scanning, Azure Vision, Firebase ML, multilingual apps, AI in documentation, AI in issue management, source generators, AI, challenges, benefits, limitations, liabilities, barcode scanning, Maui, native packages</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this conversation, Jon and Allan discuss their love for coffee and the potential for an AI-powered coffee machine. They also delve into the topic of AI and its applications, particularly in image recognition and document intelligence. Allan shares his experience with training models for forms recognition and credit card scanning, highlighting the benefits of AI in automating data extraction. They also touch on the challenges of image resolution and the potential for on-device AI models. The conversation covers topics such as on-device barcode scanning, Azure Vision, Firebase ML, multilingual apps, and the use of AI in documentation and issue management on GitHub. In this conversation, Allan and Jon discuss their experiences with source generators and AI. They talk about the challenges and benefits of using source generators in their projects and how AI can be applied in various domains. They also mention the importance of understanding the limitations and potential liabilities of AI systems. Additionally, they mention new barcode scanning packages for Maui and reflect on their past experiences with native packages.</p>

<h3>Takeaways</h3>

<ul>
<li>AI can be applied to improve the coffee-making process, leading to better quality and automation.</li>
<li>AI has made significant advancements in image recognition and document intelligence, enabling the extraction of data from various sources.</li>
<li>Training AI models for specific tasks, such as forms recognition and credit card scanning, can greatly enhance data processing and automation.</li>
<li>Image resolution and optimization are crucial factors in achieving accurate results with AI models.</li>
<li>The potential for on-device AI models offers benefits such as reduced bandwidth usage and improved energy efficiency. On-device barcode scanning is available through Azure Vision and Firebase ML.</li>
<li>Azure Document Intelligence SDK works well in Maui apps and can be used for tasks like credit card scanning.</li>
<li>AI can be used to automate documentation writing and make it sound more professional.</li>
<li>AI can help identify duplicate issues and provide relevant suggestions on GitHub.</li>
<li>AI language models like ChatGPT can be used to generate code samples and improve productivity.</li>
<li>AI language models can also be used for multilingual apps and translation tasks.</li>
<li>Roslyn analyzers can be used to analyze and provide suggestions for code quality and best practices. Source generators can be a powerful tool for generating code and fixing issues, but they require a good understanding of the underlying syntax and tree structure.</li>
<li>AI can be used in various domains, such as creating assistants and analyzing data, but it&#39;s important to consider the potential liabilities and ensure accurate results.</li>
<li>New barcode scanning packages for Maui, such as &#39;barcode-mobile.Maui&#39; and &#39;barcode-scanning.native.Maui&#39;, provide improved functionality and integration with Apple Vision and AndroidX.</li>
<li>Understanding the limitations and potential costs of AI systems is crucial for effective implementation and user satisfaction.</li>
<li>Reflecting on past experiences with native packages, such as ACR Dialogues and HUD, highlights the longevity and continued use of certain libraries in the development community.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 The Quest for the Perfect Cup of Coffee: AI-Powered Coffee Machines</li>
<li>03:21 Advancements in Image Recognition and Document Intelligence with AI</li>
<li>07:37 Automating Data Extraction with AI: Forms Recognition and Credit Card Scanning</li>
<li>11:52 Optimizing Image Resolution for Accurate AI Results</li>
<li>18:12 The Potential of On-Device AI Models: Efficiency and Convenience</li>
<li>20:40 On-Device Barcode Scanning</li>
<li>24:08 Azure Document Intelligence and Maui Apps</li>
<li>26:11 Automating Documentation Writing</li>
<li>37:14 AI-Powered Issue Management on GitHub</li>
<li>40:08 AI for Multilingual Apps and Translation Tasks</li>
<li>42:42 Using Roslyn Analyzers for Code Quality</li>
<li>42:51 Introduction</li>
<li>43:00 Challenges and Benefits of Source Generators</li>
<li>43:29 Applying AI in Various Domains</li>
<li>44:29 Creating Analyzers and Code Fixers</li>
<li>45:34 New Barcode Scanning Packages for Maui</li>
<li>46:21 Exploring Font Scaling and Modifiers</li>
<li>48:09 Understanding the Limitations and Liabilities of AI Systems</li>
<li>51:48 AI in Motion Detection and Trail Cameras</li>
<li>52:41 Using OpenAI Library for Creating Assistants</li>
<li>56:54 Reflecting on Past Experiences with Native Packages</li>
<li>01:02:01 New Barcode Scanning Packages for Maui</li>
<li>01:03:22 Long Live Barcode Scanning</li>
<li>01:06:04 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="Barcode Scanning Native (MAUI)" rel="nofollow" href="https://github.com/afriscic/BarcodeScanning.Native.Maui">Barcode Scanning Native (MAUI)</a></li><li><a title="Barcode Scanner Mobile" rel="nofollow" href="https://github.com/JimmyPun610/BarcodeScanner.Mobile">Barcode Scanner Mobile</a></li><li><a title="YouTube Episode 115" rel="nofollow" href="https://youtu.be/8wnegaRetYw">YouTube Episode 115</a></li><li><a title="YouTube Episode 114" rel="nofollow" href="https://youtu.be/zzmRhLA_Pec">YouTube Episode 114</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this conversation, Jon and Allan discuss their love for coffee and the potential for an AI-powered coffee machine. They also delve into the topic of AI and its applications, particularly in image recognition and document intelligence. Allan shares his experience with training models for forms recognition and credit card scanning, highlighting the benefits of AI in automating data extraction. They also touch on the challenges of image resolution and the potential for on-device AI models. The conversation covers topics such as on-device barcode scanning, Azure Vision, Firebase ML, multilingual apps, and the use of AI in documentation and issue management on GitHub. In this conversation, Allan and Jon discuss their experiences with source generators and AI. They talk about the challenges and benefits of using source generators in their projects and how AI can be applied in various domains. They also mention the importance of understanding the limitations and potential liabilities of AI systems. Additionally, they mention new barcode scanning packages for Maui and reflect on their past experiences with native packages.</p>

<h3>Takeaways</h3>

<ul>
<li>AI can be applied to improve the coffee-making process, leading to better quality and automation.</li>
<li>AI has made significant advancements in image recognition and document intelligence, enabling the extraction of data from various sources.</li>
<li>Training AI models for specific tasks, such as forms recognition and credit card scanning, can greatly enhance data processing and automation.</li>
<li>Image resolution and optimization are crucial factors in achieving accurate results with AI models.</li>
<li>The potential for on-device AI models offers benefits such as reduced bandwidth usage and improved energy efficiency. On-device barcode scanning is available through Azure Vision and Firebase ML.</li>
<li>Azure Document Intelligence SDK works well in Maui apps and can be used for tasks like credit card scanning.</li>
<li>AI can be used to automate documentation writing and make it sound more professional.</li>
<li>AI can help identify duplicate issues and provide relevant suggestions on GitHub.</li>
<li>AI language models like ChatGPT can be used to generate code samples and improve productivity.</li>
<li>AI language models can also be used for multilingual apps and translation tasks.</li>
<li>Roslyn analyzers can be used to analyze and provide suggestions for code quality and best practices. Source generators can be a powerful tool for generating code and fixing issues, but they require a good understanding of the underlying syntax and tree structure.</li>
<li>AI can be used in various domains, such as creating assistants and analyzing data, but it&#39;s important to consider the potential liabilities and ensure accurate results.</li>
<li>New barcode scanning packages for Maui, such as &#39;barcode-mobile.Maui&#39; and &#39;barcode-scanning.native.Maui&#39;, provide improved functionality and integration with Apple Vision and AndroidX.</li>
<li>Understanding the limitations and potential costs of AI systems is crucial for effective implementation and user satisfaction.</li>
<li>Reflecting on past experiences with native packages, such as ACR Dialogues and HUD, highlights the longevity and continued use of certain libraries in the development community.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 The Quest for the Perfect Cup of Coffee: AI-Powered Coffee Machines</li>
<li>03:21 Advancements in Image Recognition and Document Intelligence with AI</li>
<li>07:37 Automating Data Extraction with AI: Forms Recognition and Credit Card Scanning</li>
<li>11:52 Optimizing Image Resolution for Accurate AI Results</li>
<li>18:12 The Potential of On-Device AI Models: Efficiency and Convenience</li>
<li>20:40 On-Device Barcode Scanning</li>
<li>24:08 Azure Document Intelligence and Maui Apps</li>
<li>26:11 Automating Documentation Writing</li>
<li>37:14 AI-Powered Issue Management on GitHub</li>
<li>40:08 AI for Multilingual Apps and Translation Tasks</li>
<li>42:42 Using Roslyn Analyzers for Code Quality</li>
<li>42:51 Introduction</li>
<li>43:00 Challenges and Benefits of Source Generators</li>
<li>43:29 Applying AI in Various Domains</li>
<li>44:29 Creating Analyzers and Code Fixers</li>
<li>45:34 New Barcode Scanning Packages for Maui</li>
<li>46:21 Exploring Font Scaling and Modifiers</li>
<li>48:09 Understanding the Limitations and Liabilities of AI Systems</li>
<li>51:48 AI in Motion Detection and Trail Cameras</li>
<li>52:41 Using OpenAI Library for Creating Assistants</li>
<li>56:54 Reflecting on Past Experiences with Native Packages</li>
<li>01:02:01 New Barcode Scanning Packages for Maui</li>
<li>01:03:22 Long Live Barcode Scanning</li>
<li>01:06:04 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="Barcode Scanning Native (MAUI)" rel="nofollow" href="https://github.com/afriscic/BarcodeScanning.Native.Maui">Barcode Scanning Native (MAUI)</a></li><li><a title="Barcode Scanner Mobile" rel="nofollow" href="https://github.com/JimmyPun610/BarcodeScanner.Mobile">Barcode Scanner Mobile</a></li><li><a title="YouTube Episode 115" rel="nofollow" href="https://youtu.be/8wnegaRetYw">YouTube Episode 115</a></li><li><a title="YouTube Episode 114" rel="nofollow" href="https://youtu.be/zzmRhLA_Pec">YouTube Episode 114</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>114: What does your Backend look like?</title>
  <link>https://www.gonedotnet.io/114</link>
  <guid isPermaLink="false">7af3da98-5bbe-4789-9ee5-3688302e0733</guid>
  <pubDate>Mon, 22 Jul 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/7af3da98-5bbe-4789-9ee5-3688302e0733.mp3" length="84850504" type="audio/mpeg"/>
  <itunes:episode>114</itunes:episode>
  <itunes:title>What does your Backend look like?</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Many mobile apps interact with backend services.  What type of tools and technologies are Allan and Jon using to build theirs?</itunes:subtitle>
  <itunes:duration>1:29:42</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss various topics related to backend development. They start by joking about Canadian stereotypes and accents. Then, they dive into the world of backend development using ASP.NET Core and API controllers. They talk about the changes in API controllers and the use of IActionResult. They also discuss the benefits of using OpenAPI and generating contracts from it. They mention tools like Kyoto and Refit/Refitter for generating contracts and API clients. The conversation ends with a humorous remark about the possibility of a future tool called 'Refitist.' The conversation covers topics such as Refit, resiliency, GraphQL, OData, and Mediator pattern. Refit is discussed as a tool to generate code for API consumption. Resiliency is mentioned as a client-side concern, and the use of Polly for retrying failed requests is debated. GraphQL and OData are compared in terms of their usefulness and complexity. The Mediator pattern is introduced as a way to structure code and facilitate future scalability. Real-time communication with SignalR is briefly mentioned. The conversation covers topics such as real-time data streaming, the use of Docker for development and deployment, and experiences with different SQL databases. The hosts discuss the pros and cons of real-time data streaming and the various methods available. They also explore the use of Docker for local development and deployment, highlighting its benefits in creating consistent environments. The conversation then shifts to experiences with different SQL databases, including Oracle, MySQL, and SQL Server. They discuss the challenges and advantages of each database and the importance of proper database design and optimization. In this final part of the conversation, Allan and Jon discuss their experiences with different backend technologies, including Postgres SQL and backend-as-a-service platforms like Firebase and Apprite. They also touch on the challenges of managing costs and scalability in cloud services. The episode concludes with a mention of the Packages of the Week segment and a reminder for listeners to leave a five-star review.
Takeaways
Backend development in ASP.NET Core involves using API controllers and IActionResult.
OpenAPI is a useful tool for generating contracts and defining API endpoints.
Tools like Kyoto and Refit/Refitter can be used to generate contracts and API clients.
The conversation highlights the importance of keeping up with changes in backend development tools and practices. Refit is a tool for generating code to consume APIs
Resiliency is a client-side concern and can be handled with tools like Polly
GraphQL and OData are compared in terms of their usefulness and complexity
The Mediator pattern is a way to structure code and facilitate future scalability
Real-time communication with SignalR is challenging for mobile apps Real-time data streaming methods vary and depend on the specific use case and requirements.
Docker is a useful tool for creating consistent development and deployment environments.
Different SQL databases have their own strengths and weaknesses, and the choice depends on the specific needs of the project.
Proper database design and optimization are crucial for efficient and scalable applications. Postgres SQL is a reliable and fast database option with excellent driver support in .NET
Backend-as-a-service platforms like Firebase and Apprite offer a comprehensive set of tools and infrastructure for building apps
Managing costs and scalability in cloud services can be challenging, but it's important to find the right balance
Consider leaving a five-star review for the podcast to show support and provide feedback
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Canadian Stereotypes
04:42 Exploring Backend Development
09:03 Streaming Results and OpenAI
13:52 Generating Contracts with Kyoto and Refit/Refitter
19:46 The Future of Backend Development
27:19 Comparing GraphQL and OData
32:59 Understanding the Mediator pattern
43:11 Real-time communication challenges with SignalR
45:06 Real-Time Data Streaming
48:36 Docker for Development and Deployment
55:46 Experiences with SQL Databases
01:09:28 Importance of Database Design and Optimization
01:19:13 Challenges of Managing Costs and Scalability in Cloud Services
01:30:54 Don't Forget to Leave a Five-Star Review
</description>
  <itunes:keywords>dotnet, dotnet-maui,backend development, ASP.NET Core, API controllers, IActionResult, OpenAPI, Kyoto, Refit, Refitter, Refit, resiliency, GraphQL, OData, Mediator pattern, SignalR, real-time data streaming, Docker, development, deployment, SQL databases, Oracle, MySQL, SQL Server, backend technologies, Postgres SQL, Firebase, Apprite, cloud services, costs, scalability, Packages of the Week, five-star review</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss various topics related to backend development. They start by joking about Canadian stereotypes and accents. Then, they dive into the world of backend development using ASP.NET Core and API controllers. They talk about the changes in API controllers and the use of IActionResult. They also discuss the benefits of using OpenAPI and generating contracts from it. They mention tools like Kyoto and Refit/Refitter for generating contracts and API clients. The conversation ends with a humorous remark about the possibility of a future tool called &#39;Refitist.&#39; The conversation covers topics such as Refit, resiliency, GraphQL, OData, and Mediator pattern. Refit is discussed as a tool to generate code for API consumption. Resiliency is mentioned as a client-side concern, and the use of Polly for retrying failed requests is debated. GraphQL and OData are compared in terms of their usefulness and complexity. The Mediator pattern is introduced as a way to structure code and facilitate future scalability. Real-time communication with SignalR is briefly mentioned. The conversation covers topics such as real-time data streaming, the use of Docker for development and deployment, and experiences with different SQL databases. The hosts discuss the pros and cons of real-time data streaming and the various methods available. They also explore the use of Docker for local development and deployment, highlighting its benefits in creating consistent environments. The conversation then shifts to experiences with different SQL databases, including Oracle, MySQL, and SQL Server. They discuss the challenges and advantages of each database and the importance of proper database design and optimization. In this final part of the conversation, Allan and Jon discuss their experiences with different backend technologies, including Postgres SQL and backend-as-a-service platforms like Firebase and Apprite. They also touch on the challenges of managing costs and scalability in cloud services. The episode concludes with a mention of the Packages of the Week segment and a reminder for listeners to leave a five-star review.</p>

<h3>Takeaways</h3>

<ul>
<li>Backend development in ASP.NET Core involves using API controllers and IActionResult.</li>
<li>OpenAPI is a useful tool for generating contracts and defining API endpoints.</li>
<li>Tools like Kyoto and Refit/Refitter can be used to generate contracts and API clients.</li>
<li>The conversation highlights the importance of keeping up with changes in backend development tools and practices. Refit is a tool for generating code to consume APIs</li>
<li>Resiliency is a client-side concern and can be handled with tools like Polly</li>
<li>GraphQL and OData are compared in terms of their usefulness and complexity</li>
<li>The Mediator pattern is a way to structure code and facilitate future scalability</li>
<li>Real-time communication with SignalR is challenging for mobile apps Real-time data streaming methods vary and depend on the specific use case and requirements.</li>
<li>Docker is a useful tool for creating consistent development and deployment environments.</li>
<li>Different SQL databases have their own strengths and weaknesses, and the choice depends on the specific needs of the project.</li>
<li>Proper database design and optimization are crucial for efficient and scalable applications. Postgres SQL is a reliable and fast database option with excellent driver support in .NET</li>
<li>Backend-as-a-service platforms like Firebase and Apprite offer a comprehensive set of tools and infrastructure for building apps</li>
<li>Managing costs and scalability in cloud services can be challenging, but it&#39;s important to find the right balance</li>
<li>Consider leaving a five-star review for the podcast to show support and provide feedback</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Canadian Stereotypes</li>
<li>04:42 Exploring Backend Development</li>
<li>09:03 Streaming Results and OpenAI</li>
<li>13:52 Generating Contracts with Kyoto and Refit/Refitter</li>
<li>19:46 The Future of Backend Development</li>
<li>27:19 Comparing GraphQL and OData</li>
<li>32:59 Understanding the Mediator pattern</li>
<li>43:11 Real-time communication challenges with SignalR</li>
<li>45:06 Real-Time Data Streaming</li>
<li>48:36 Docker for Development and Deployment</li>
<li>55:46 Experiences with SQL Databases</li>
<li>01:09:28 Importance of Database Design and Optimization</li>
<li>01:19:13 Challenges of Managing Costs and Scalability in Cloud Services</li>
<li>01:30:54 Don&#39;t Forget to Leave a Five-Star Review</li>
</ul><p>Links:</p><ul><li><a title="MediatR" rel="nofollow" href="https://github.com/jbogard/mediatr">MediatR</a></li><li><a title="GraphQL .NET" rel="nofollow" href="https://graphql-dotnet.github.io/docs/getting-started/introduction/">GraphQL .NET</a></li><li><a title="ChilliCream (GraphQL)" rel="nofollow" href="https://chillicream.com/docs/hotchocolate/v13/get-started-with-graphql-in-net-core">ChilliCream (GraphQL)</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss various topics related to backend development. They start by joking about Canadian stereotypes and accents. Then, they dive into the world of backend development using ASP.NET Core and API controllers. They talk about the changes in API controllers and the use of IActionResult. They also discuss the benefits of using OpenAPI and generating contracts from it. They mention tools like Kyoto and Refit/Refitter for generating contracts and API clients. The conversation ends with a humorous remark about the possibility of a future tool called &#39;Refitist.&#39; The conversation covers topics such as Refit, resiliency, GraphQL, OData, and Mediator pattern. Refit is discussed as a tool to generate code for API consumption. Resiliency is mentioned as a client-side concern, and the use of Polly for retrying failed requests is debated. GraphQL and OData are compared in terms of their usefulness and complexity. The Mediator pattern is introduced as a way to structure code and facilitate future scalability. Real-time communication with SignalR is briefly mentioned. The conversation covers topics such as real-time data streaming, the use of Docker for development and deployment, and experiences with different SQL databases. The hosts discuss the pros and cons of real-time data streaming and the various methods available. They also explore the use of Docker for local development and deployment, highlighting its benefits in creating consistent environments. The conversation then shifts to experiences with different SQL databases, including Oracle, MySQL, and SQL Server. They discuss the challenges and advantages of each database and the importance of proper database design and optimization. In this final part of the conversation, Allan and Jon discuss their experiences with different backend technologies, including Postgres SQL and backend-as-a-service platforms like Firebase and Apprite. They also touch on the challenges of managing costs and scalability in cloud services. The episode concludes with a mention of the Packages of the Week segment and a reminder for listeners to leave a five-star review.</p>

<h3>Takeaways</h3>

<ul>
<li>Backend development in ASP.NET Core involves using API controllers and IActionResult.</li>
<li>OpenAPI is a useful tool for generating contracts and defining API endpoints.</li>
<li>Tools like Kyoto and Refit/Refitter can be used to generate contracts and API clients.</li>
<li>The conversation highlights the importance of keeping up with changes in backend development tools and practices. Refit is a tool for generating code to consume APIs</li>
<li>Resiliency is a client-side concern and can be handled with tools like Polly</li>
<li>GraphQL and OData are compared in terms of their usefulness and complexity</li>
<li>The Mediator pattern is a way to structure code and facilitate future scalability</li>
<li>Real-time communication with SignalR is challenging for mobile apps Real-time data streaming methods vary and depend on the specific use case and requirements.</li>
<li>Docker is a useful tool for creating consistent development and deployment environments.</li>
<li>Different SQL databases have their own strengths and weaknesses, and the choice depends on the specific needs of the project.</li>
<li>Proper database design and optimization are crucial for efficient and scalable applications. Postgres SQL is a reliable and fast database option with excellent driver support in .NET</li>
<li>Backend-as-a-service platforms like Firebase and Apprite offer a comprehensive set of tools and infrastructure for building apps</li>
<li>Managing costs and scalability in cloud services can be challenging, but it&#39;s important to find the right balance</li>
<li>Consider leaving a five-star review for the podcast to show support and provide feedback</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Canadian Stereotypes</li>
<li>04:42 Exploring Backend Development</li>
<li>09:03 Streaming Results and OpenAI</li>
<li>13:52 Generating Contracts with Kyoto and Refit/Refitter</li>
<li>19:46 The Future of Backend Development</li>
<li>27:19 Comparing GraphQL and OData</li>
<li>32:59 Understanding the Mediator pattern</li>
<li>43:11 Real-time communication challenges with SignalR</li>
<li>45:06 Real-Time Data Streaming</li>
<li>48:36 Docker for Development and Deployment</li>
<li>55:46 Experiences with SQL Databases</li>
<li>01:09:28 Importance of Database Design and Optimization</li>
<li>01:19:13 Challenges of Managing Costs and Scalability in Cloud Services</li>
<li>01:30:54 Don&#39;t Forget to Leave a Five-Star Review</li>
</ul><p>Links:</p><ul><li><a title="MediatR" rel="nofollow" href="https://github.com/jbogard/mediatr">MediatR</a></li><li><a title="GraphQL .NET" rel="nofollow" href="https://graphql-dotnet.github.io/docs/getting-started/introduction/">GraphQL .NET</a></li><li><a title="ChilliCream (GraphQL)" rel="nofollow" href="https://chillicream.com/docs/hotchocolate/v13/get-started-with-graphql-in-net-core">ChilliCream (GraphQL)</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>113: What's all the fuss about Drawn Controls?</title>
  <link>https://www.gonedotnet.io/113</link>
  <guid isPermaLink="false">b6b24d4a-c799-4a7d-8d2c-d58ca8e0bf32</guid>
  <pubDate>Mon, 15 Jul 2024 11:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/b6b24d4a-c799-4a7d-8d2c-d58ca8e0bf32.mp3" length="101537158" type="audio/mpeg"/>
  <itunes:episode>113</itunes:episode>
  <itunes:title>What's all the fuss about Drawn Controls?</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Drawn UI vs Native abstractions sometimes feels like a tabs vs spaces debate.  This week is all about pros and cons and everything in between around drawn controls from a .NET MAUI perspective!</itunes:subtitle>
  <itunes:duration>1:09:13</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>The conversation revolves around the topic of drawn controls in mobile app development. The hosts discuss the pros and cons of using drawn controls versus native controls, as well as the challenges and considerations involved. They explore the idea of a hybrid approach, where some controls are drawn while others remain native. The conversation touches on topics such as scrolling, text entry, and performance implications. Overall, the hosts emphasize the importance of choosing the right approach based on the specific requirements and goals of the app. The conversation explores the challenges and considerations of drawing controls in cross-platform development. It discusses the options of using Skia or native APIs for rendering text and achieving platform-specific looks. The availability of drawing controls in MAUI is highlighted, along with the ability to choose between native drawing surfaces and SkiaSharp. The conversation also touches on the accessibility and sizing implications of drawing controls, as well as the potential benefits of easier unit testing and scalability. In this conversation, Allan and Jon discuss the challenges and considerations of using cross-platform code for drawing controls. They explore the value proposition of using libraries like Syncfusion and the trade-offs of using SkiaSharp for drawing controls. They also touch on the benefits of creating custom layouts and the potential of libraries like AlohaKit and DrawnUI for building visually appealing UIs.
Takeaways
There are different approaches to implementing controls in mobile app development, including drawn controls and native controls.
The choice between drawn controls and native controls depends on the specific requirements and goals of the app.
A hybrid approach, combining drawn controls and native controls, can provide a balance between customization and platform conformity.
Challenges in implementing drawn controls include scrolling, text entry, and performance optimization.
Considerations for choosing between drawn controls and native controls include design consistency, resource management, and system integration. Drawing controls in cross-platform development can be challenging due to differences in rendering text and achieving platform-specific looks.
MAUI offers the option to draw controls using native drawing surfaces or SkiaSharp, providing flexibility and consistency across platforms.
Accessibility and sizing considerations are important when drawing controls, as they may require additional code to ensure proper functionality.
Drawing controls can simplify unit testing and improve scalability by reducing the need for maintaining abstractions over native controls.
The availability of drawing controls in MAUI opens up possibilities for easier customization and design flexibility. Using cross-platform code for drawing controls can be challenging and may require additional considerations, such as accessibility APIs on each platform.
There is value in using libraries like Syncfusion for existing investments and documentation, but there may be limitations and complaints about library size.
Creating custom layouts can be a solution for complex UI requirements and can be achieved by measuring and laying out elements.
Libraries like AlohaKit and DrawnUI offer options for building visually appealing UIs with customizable controls and layouts.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Inside Joke
01:13 Topic Introduction: Drawn Controls
07:13 Design Consistency vs. Platform Conformity
13:35 Text Entry and Customization
22:26 Scrolling and Performance Optimization
25:48 Challenges and Considerations of Drawing Controls
27:33 The Availability of Drawing Controls in MAUI
29:09 Accessibility and Sizing Implications of Drawing Controls
31:17 Simplifying Unit Testing and Improving Scalability with Drawing Controls
47:52 Introduction
48:04 Challenges and Considerations of Cross-Platform Code for Drawing Controls
48:59 The Value Proposition of Using Libraries like Syncfusion
54:18 Exploring Custom Layouts for Complex UI Requirements
01:00:08 Building Visually Appealing UIs with AlohaKit and DrawnUI
01:08:07 Conclusion
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  drawn controls, native controls, hybrid approach, scrolling, text entry, performance, drawing controls, cross-platform development, Skia, native APIs, rendering text, platform-specific looks, MAUI, accessibility, sizing, unit testing, scalability, cross-platform code, drawing controls, Syncfusion, SkiaSharp, custom layouts, AlohaKit, DrawnUI</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>The conversation revolves around the topic of drawn controls in mobile app development. The hosts discuss the pros and cons of using drawn controls versus native controls, as well as the challenges and considerations involved. They explore the idea of a hybrid approach, where some controls are drawn while others remain native. The conversation touches on topics such as scrolling, text entry, and performance implications. Overall, the hosts emphasize the importance of choosing the right approach based on the specific requirements and goals of the app. The conversation explores the challenges and considerations of drawing controls in cross-platform development. It discusses the options of using Skia or native APIs for rendering text and achieving platform-specific looks. The availability of drawing controls in MAUI is highlighted, along with the ability to choose between native drawing surfaces and SkiaSharp. The conversation also touches on the accessibility and sizing implications of drawing controls, as well as the potential benefits of easier unit testing and scalability. In this conversation, Allan and Jon discuss the challenges and considerations of using cross-platform code for drawing controls. They explore the value proposition of using libraries like Syncfusion and the trade-offs of using SkiaSharp for drawing controls. They also touch on the benefits of creating custom layouts and the potential of libraries like AlohaKit and DrawnUI for building visually appealing UIs.</p>

<h3>Takeaways</h3>

<ul>
<li>There are different approaches to implementing controls in mobile app development, including drawn controls and native controls.</li>
<li>The choice between drawn controls and native controls depends on the specific requirements and goals of the app.</li>
<li>A hybrid approach, combining drawn controls and native controls, can provide a balance between customization and platform conformity.</li>
<li>Challenges in implementing drawn controls include scrolling, text entry, and performance optimization.</li>
<li>Considerations for choosing between drawn controls and native controls include design consistency, resource management, and system integration. Drawing controls in cross-platform development can be challenging due to differences in rendering text and achieving platform-specific looks.</li>
<li>MAUI offers the option to draw controls using native drawing surfaces or SkiaSharp, providing flexibility and consistency across platforms.</li>
<li>Accessibility and sizing considerations are important when drawing controls, as they may require additional code to ensure proper functionality.</li>
<li>Drawing controls can simplify unit testing and improve scalability by reducing the need for maintaining abstractions over native controls.</li>
<li>The availability of drawing controls in MAUI opens up possibilities for easier customization and design flexibility. Using cross-platform code for drawing controls can be challenging and may require additional considerations, such as accessibility APIs on each platform.</li>
<li>There is value in using libraries like Syncfusion for existing investments and documentation, but there may be limitations and complaints about library size.</li>
<li>Creating custom layouts can be a solution for complex UI requirements and can be achieved by measuring and laying out elements.</li>
<li>Libraries like AlohaKit and DrawnUI offer options for building visually appealing UIs with customizable controls and layouts.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Inside Joke</li>
<li>01:13 Topic Introduction: Drawn Controls</li>
<li>07:13 Design Consistency vs. Platform Conformity</li>
<li>13:35 Text Entry and Customization</li>
<li>22:26 Scrolling and Performance Optimization</li>
<li>25:48 Challenges and Considerations of Drawing Controls</li>
<li>27:33 The Availability of Drawing Controls in MAUI</li>
<li>29:09 Accessibility and Sizing Implications of Drawing Controls</li>
<li>31:17 Simplifying Unit Testing and Improving Scalability with Drawing Controls</li>
<li>47:52 Introduction</li>
<li>48:04 Challenges and Considerations of Cross-Platform Code for Drawing Controls</li>
<li>48:59 The Value Proposition of Using Libraries like Syncfusion</li>
<li>54:18 Exploring Custom Layouts for Complex UI Requirements</li>
<li>01:00:08 Building Visually Appealing UIs with AlohaKit and DrawnUI</li>
<li>01:08:07 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episide 113" rel="nofollow" href="https://youtu.be/PJx76m7hCr0">YouTube Episide 113</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>The conversation revolves around the topic of drawn controls in mobile app development. The hosts discuss the pros and cons of using drawn controls versus native controls, as well as the challenges and considerations involved. They explore the idea of a hybrid approach, where some controls are drawn while others remain native. The conversation touches on topics such as scrolling, text entry, and performance implications. Overall, the hosts emphasize the importance of choosing the right approach based on the specific requirements and goals of the app. The conversation explores the challenges and considerations of drawing controls in cross-platform development. It discusses the options of using Skia or native APIs for rendering text and achieving platform-specific looks. The availability of drawing controls in MAUI is highlighted, along with the ability to choose between native drawing surfaces and SkiaSharp. The conversation also touches on the accessibility and sizing implications of drawing controls, as well as the potential benefits of easier unit testing and scalability. In this conversation, Allan and Jon discuss the challenges and considerations of using cross-platform code for drawing controls. They explore the value proposition of using libraries like Syncfusion and the trade-offs of using SkiaSharp for drawing controls. They also touch on the benefits of creating custom layouts and the potential of libraries like AlohaKit and DrawnUI for building visually appealing UIs.</p>

<h3>Takeaways</h3>

<ul>
<li>There are different approaches to implementing controls in mobile app development, including drawn controls and native controls.</li>
<li>The choice between drawn controls and native controls depends on the specific requirements and goals of the app.</li>
<li>A hybrid approach, combining drawn controls and native controls, can provide a balance between customization and platform conformity.</li>
<li>Challenges in implementing drawn controls include scrolling, text entry, and performance optimization.</li>
<li>Considerations for choosing between drawn controls and native controls include design consistency, resource management, and system integration. Drawing controls in cross-platform development can be challenging due to differences in rendering text and achieving platform-specific looks.</li>
<li>MAUI offers the option to draw controls using native drawing surfaces or SkiaSharp, providing flexibility and consistency across platforms.</li>
<li>Accessibility and sizing considerations are important when drawing controls, as they may require additional code to ensure proper functionality.</li>
<li>Drawing controls can simplify unit testing and improve scalability by reducing the need for maintaining abstractions over native controls.</li>
<li>The availability of drawing controls in MAUI opens up possibilities for easier customization and design flexibility. Using cross-platform code for drawing controls can be challenging and may require additional considerations, such as accessibility APIs on each platform.</li>
<li>There is value in using libraries like Syncfusion for existing investments and documentation, but there may be limitations and complaints about library size.</li>
<li>Creating custom layouts can be a solution for complex UI requirements and can be achieved by measuring and laying out elements.</li>
<li>Libraries like AlohaKit and DrawnUI offer options for building visually appealing UIs with customizable controls and layouts.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Inside Joke</li>
<li>01:13 Topic Introduction: Drawn Controls</li>
<li>07:13 Design Consistency vs. Platform Conformity</li>
<li>13:35 Text Entry and Customization</li>
<li>22:26 Scrolling and Performance Optimization</li>
<li>25:48 Challenges and Considerations of Drawing Controls</li>
<li>27:33 The Availability of Drawing Controls in MAUI</li>
<li>29:09 Accessibility and Sizing Implications of Drawing Controls</li>
<li>31:17 Simplifying Unit Testing and Improving Scalability with Drawing Controls</li>
<li>47:52 Introduction</li>
<li>48:04 Challenges and Considerations of Cross-Platform Code for Drawing Controls</li>
<li>48:59 The Value Proposition of Using Libraries like Syncfusion</li>
<li>54:18 Exploring Custom Layouts for Complex UI Requirements</li>
<li>01:00:08 Building Visually Appealing UIs with AlohaKit and DrawnUI</li>
<li>01:08:07 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episide 113" rel="nofollow" href="https://youtu.be/PJx76m7hCr0">YouTube Episide 113</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>112: The Tools &amp; Libraries We Use</title>
  <link>https://www.gonedotnet.io/112</link>
  <guid isPermaLink="false">4b825b89-e217-4350-b1dc-6c7afa4e6fd2</guid>
  <pubDate>Mon, 08 Jul 2024 11:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/4b825b89-e217-4350-b1dc-6c7afa4e6fd2.mp3" length="87813733" type="audio/mpeg"/>
  <itunes:episode>112</itunes:episode>
  <itunes:title>The Tools &amp; Libraries We Use</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Every developer has a set of go-to tools and libraries that they seem to always come back to.  What do Allan and Jon have in their toolbox?</itunes:subtitle>
  <itunes:duration>1:08:12</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this conversation, Jon and Allan discuss various tools they use for development. They talk about their preferred operating systems, monitors, and IDEs. They also mention specific tools like Insomnia for API testing and DevTools for debugging. The conversation is light-hearted and includes some banter about Canadian jokes and hockey. In this part of the conversation, Jon and Allan discuss various tools they use, including antivirus software, DevToys, Setapp, file managers, Docker, Cosmos DB, and coffee brewing equipment. In this conversation, Allan and Jon discuss various soft tools and libraries that they use in their development projects. They cover topics such as coffee-making methods, microphones and audio equipment, standing desks, and .NET libraries like MVVM Toolkit, .NET Orleans, and MediatorR. They also mention the Shiny Templates, a collection of templates for Xamarin and Maui apps. Overall, they provide insights into the tools and libraries they find useful in their development workflows.
Takeaways
Visual Studio and Visual Studio for Mac are popular IDEs for development
Insomnia is a useful tool for API testing
DevTools is great for debugging
Choosing the right operating system and monitor can greatly enhance the development experience
Having a good set of tools can improve productivity and efficiency Antivirus software can sometimes cause issues with certain tools and applications.
DevToys is a useful tool for various tasks like encoding/decoding strings and testing Xpath queries.
Setapp is a subscription service that provides access to a wide range of tools and apps for Mac users.
Forklift is a file browser and development toolkit for Mac.
Total Commander is a file manager that offers a dual-pane interface and other advanced features.
Using a proper coffee grinder, like a burr grinder, can result in a better coffee brewing experience.
Chemex is a popular coffee brewing method that requires a specific type of kettle and filters.
The choice of tools can greatly impact productivity and user experience in software development. There are various soft tools and libraries that developers can use to enhance their development workflows.
Choosing the right tools and libraries depends on the specific needs and requirements of the project.
Some popular soft tools and libraries mentioned in the conversation include MVVM Toolkit, .NET Orleans, and MediatorR.
The Shiny Templates collection provides a wide range of templates for Xamarin and Maui apps.
Experimenting with different tools and libraries can help developers find the ones that work best for them.
People
Hosts: Jon Dick, Allan Ritchie
Audio/Video Engineer: Jim Heath
Chapters
00:00 Introduction and Canadian Jokes
02:32 Exploring the Tools We Use for Development
09:17 Using Visual Studio and Rider for Development
13:07 Testing APIs with Insomnia
16:22 The Importance of a Good Monitor
21:07 Other Useful Tools for Development
22:30 Antivirus Software and Compatibility Issues
23:35 DevToys: A Handy Tool for Various Tasks
24:23 Setapp: A Subscription Service for Mac Users
25:24 Forklift: A File Browser and Development Toolkit for Mac
26:09 Total Commander: A Feature-Rich File Manager
29:30 Docker: Simplifying Development and Deployment
30:19 Kubernetes: A Powerful Container Orchestration Platform
31:33 Cosmos DB: Offline Development Challenges
33:19 PostgreSQL: A Versatile and Feature-Rich Database
36:16 Parallels: Efficient Virtualization for Mac
38:12 The Importance of a Proper Coffee Grinder
39:39 Brewing Coffee with Chemex: A Unique Experience
42:15 The Impact of Tools on Productivity and User Experience
43:21 The Shower Method of Making Coffee
45:36 Soft Tools for Podcasting
48:19 Microphones and Audio Equipment
49:22 Standing Desks and Key Lights
52:18 Soft Tools for Mobile App Development
55:49 MVVM Toolkit and .NET Orleans
58:11 Shiny Templates for Xamarin and Maui Apps
01:00:53 MediatorR for Modular Monoliths
</description>
  <itunes:keywords>dotnet, dotnet-maui, development tools, operating systems, monitors, IDEs, Insomnia, DevTools, banter, Canadian jokes, hockey, tools, antivirus, DevToys, Setapp, file manager, Docker, Cosmos DB, coffee brewing, soft tools, libraries, coffee-making, microphones, audio equipment, standing desks, .NET, MVVM Toolkit, .NET Orleans, MediatorR, Shiny Templates, Xamarin, Maui</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this conversation, Jon and Allan discuss various tools they use for development. They talk about their preferred operating systems, monitors, and IDEs. They also mention specific tools like Insomnia for API testing and DevTools for debugging. The conversation is light-hearted and includes some banter about Canadian jokes and hockey. In this part of the conversation, Jon and Allan discuss various tools they use, including antivirus software, DevToys, Setapp, file managers, Docker, Cosmos DB, and coffee brewing equipment. In this conversation, Allan and Jon discuss various soft tools and libraries that they use in their development projects. They cover topics such as coffee-making methods, microphones and audio equipment, standing desks, and .NET libraries like MVVM Toolkit, .NET Orleans, and MediatorR. They also mention the Shiny Templates, a collection of templates for Xamarin and Maui apps. Overall, they provide insights into the tools and libraries they find useful in their development workflows.</p>

<h3>Takeaways</h3>

<ul>
<li>Visual Studio and Visual Studio for Mac are popular IDEs for development</li>
<li>Insomnia is a useful tool for API testing</li>
<li>DevTools is great for debugging</li>
<li>Choosing the right operating system and monitor can greatly enhance the development experience</li>
<li>Having a good set of tools can improve productivity and efficiency Antivirus software can sometimes cause issues with certain tools and applications.</li>
<li>DevToys is a useful tool for various tasks like encoding/decoding strings and testing Xpath queries.</li>
<li>Setapp is a subscription service that provides access to a wide range of tools and apps for Mac users.</li>
<li>Forklift is a file browser and development toolkit for Mac.</li>
<li>Total Commander is a file manager that offers a dual-pane interface and other advanced features.</li>
<li>Using a proper coffee grinder, like a burr grinder, can result in a better coffee brewing experience.</li>
<li>Chemex is a popular coffee brewing method that requires a specific type of kettle and filters.</li>
<li>The choice of tools can greatly impact productivity and user experience in software development. There are various soft tools and libraries that developers can use to enhance their development workflows.</li>
<li>Choosing the right tools and libraries depends on the specific needs and requirements of the project.</li>
<li>Some popular soft tools and libraries mentioned in the conversation include MVVM Toolkit, .NET Orleans, and MediatorR.</li>
<li>The Shiny Templates collection provides a wide range of templates for Xamarin and Maui apps.</li>
<li>Experimenting with different tools and libraries can help developers find the ones that work best for them.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio/Video Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Canadian Jokes</li>
<li>02:32 Exploring the Tools We Use for Development</li>
<li>09:17 Using Visual Studio and Rider for Development</li>
<li>13:07 Testing APIs with Insomnia</li>
<li>16:22 The Importance of a Good Monitor</li>
<li>21:07 Other Useful Tools for Development</li>
<li>22:30 Antivirus Software and Compatibility Issues</li>
<li>23:35 DevToys: A Handy Tool for Various Tasks</li>
<li>24:23 Setapp: A Subscription Service for Mac Users</li>
<li>25:24 Forklift: A File Browser and Development Toolkit for Mac</li>
<li>26:09 Total Commander: A Feature-Rich File Manager</li>
<li>29:30 Docker: Simplifying Development and Deployment</li>
<li>30:19 Kubernetes: A Powerful Container Orchestration Platform</li>
<li>31:33 Cosmos DB: Offline Development Challenges</li>
<li>33:19 PostgreSQL: A Versatile and Feature-Rich Database</li>
<li>36:16 Parallels: Efficient Virtualization for Mac</li>
<li>38:12 The Importance of a Proper Coffee Grinder</li>
<li>39:39 Brewing Coffee with Chemex: A Unique Experience</li>
<li>42:15 The Impact of Tools on Productivity and User Experience</li>
<li>43:21 The Shower Method of Making Coffee</li>
<li>45:36 Soft Tools for Podcasting</li>
<li>48:19 Microphones and Audio Equipment</li>
<li>49:22 Standing Desks and Key Lights</li>
<li>52:18 Soft Tools for Mobile App Development</li>
<li>55:49 MVVM Toolkit and .NET Orleans</li>
<li>58:11 Shiny Templates for Xamarin and Maui Apps</li>
<li>01:00:53 MediatorR for Modular Monoliths</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episode 112" rel="nofollow" href="https://youtu.be/HZebEiCh2N4">YouTube Episode 112</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this conversation, Jon and Allan discuss various tools they use for development. They talk about their preferred operating systems, monitors, and IDEs. They also mention specific tools like Insomnia for API testing and DevTools for debugging. The conversation is light-hearted and includes some banter about Canadian jokes and hockey. In this part of the conversation, Jon and Allan discuss various tools they use, including antivirus software, DevToys, Setapp, file managers, Docker, Cosmos DB, and coffee brewing equipment. In this conversation, Allan and Jon discuss various soft tools and libraries that they use in their development projects. They cover topics such as coffee-making methods, microphones and audio equipment, standing desks, and .NET libraries like MVVM Toolkit, .NET Orleans, and MediatorR. They also mention the Shiny Templates, a collection of templates for Xamarin and Maui apps. Overall, they provide insights into the tools and libraries they find useful in their development workflows.</p>

<h3>Takeaways</h3>

<ul>
<li>Visual Studio and Visual Studio for Mac are popular IDEs for development</li>
<li>Insomnia is a useful tool for API testing</li>
<li>DevTools is great for debugging</li>
<li>Choosing the right operating system and monitor can greatly enhance the development experience</li>
<li>Having a good set of tools can improve productivity and efficiency Antivirus software can sometimes cause issues with certain tools and applications.</li>
<li>DevToys is a useful tool for various tasks like encoding/decoding strings and testing Xpath queries.</li>
<li>Setapp is a subscription service that provides access to a wide range of tools and apps for Mac users.</li>
<li>Forklift is a file browser and development toolkit for Mac.</li>
<li>Total Commander is a file manager that offers a dual-pane interface and other advanced features.</li>
<li>Using a proper coffee grinder, like a burr grinder, can result in a better coffee brewing experience.</li>
<li>Chemex is a popular coffee brewing method that requires a specific type of kettle and filters.</li>
<li>The choice of tools can greatly impact productivity and user experience in software development. There are various soft tools and libraries that developers can use to enhance their development workflows.</li>
<li>Choosing the right tools and libraries depends on the specific needs and requirements of the project.</li>
<li>Some popular soft tools and libraries mentioned in the conversation include MVVM Toolkit, .NET Orleans, and MediatorR.</li>
<li>The Shiny Templates collection provides a wide range of templates for Xamarin and Maui apps.</li>
<li>Experimenting with different tools and libraries can help developers find the ones that work best for them.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio/Video Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Canadian Jokes</li>
<li>02:32 Exploring the Tools We Use for Development</li>
<li>09:17 Using Visual Studio and Rider for Development</li>
<li>13:07 Testing APIs with Insomnia</li>
<li>16:22 The Importance of a Good Monitor</li>
<li>21:07 Other Useful Tools for Development</li>
<li>22:30 Antivirus Software and Compatibility Issues</li>
<li>23:35 DevToys: A Handy Tool for Various Tasks</li>
<li>24:23 Setapp: A Subscription Service for Mac Users</li>
<li>25:24 Forklift: A File Browser and Development Toolkit for Mac</li>
<li>26:09 Total Commander: A Feature-Rich File Manager</li>
<li>29:30 Docker: Simplifying Development and Deployment</li>
<li>30:19 Kubernetes: A Powerful Container Orchestration Platform</li>
<li>31:33 Cosmos DB: Offline Development Challenges</li>
<li>33:19 PostgreSQL: A Versatile and Feature-Rich Database</li>
<li>36:16 Parallels: Efficient Virtualization for Mac</li>
<li>38:12 The Importance of a Proper Coffee Grinder</li>
<li>39:39 Brewing Coffee with Chemex: A Unique Experience</li>
<li>42:15 The Impact of Tools on Productivity and User Experience</li>
<li>43:21 The Shower Method of Making Coffee</li>
<li>45:36 Soft Tools for Podcasting</li>
<li>48:19 Microphones and Audio Equipment</li>
<li>49:22 Standing Desks and Key Lights</li>
<li>52:18 Soft Tools for Mobile App Development</li>
<li>55:49 MVVM Toolkit and .NET Orleans</li>
<li>58:11 Shiny Templates for Xamarin and Maui Apps</li>
<li>01:00:53 MediatorR for Modular Monoliths</li>
</ul><p>Links:</p><ul><li><a title="YouTube Episode 112" rel="nofollow" href="https://youtu.be/HZebEiCh2N4">YouTube Episode 112</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>111: Configuration &amp; Logging</title>
  <link>https://www.gonedotnet.io/111</link>
  <guid isPermaLink="false">3a4e4047-a81f-4ccb-941a-5ce164ae2397</guid>
  <pubDate>Mon, 24 Jun 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/3a4e4047-a81f-4ccb-941a-5ce164ae2397.mp3" length="77324789" type="audio/mpeg"/>
  <itunes:episode>111</itunes:episode>
  <itunes:title>Configuration &amp; Logging</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Does your app need configuration?  How do you log data, crash reports, and telemetry?  Does performance really matter (spoiler: yes it does)?  Find out on this week's episode!</itunes:subtitle>
  <itunes:duration>58:29</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  logging, configuration, mobile app development, environment variables, embedded resources, Sentry, performance, source generation, logging, error handling, mobile app development, App Center, local logging, try-catch blocks</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Consider the specific needs of your app when implementing configuration and logging</li>
<li>Use environment variables or constants for simple configuration needs</li>
<li>Be mindful of the performance implications of logging, especially in mobile apps</li>
<li>Explore external libraries like Sentry for crash reporting and error handling</li>
<li>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.</li>
<li>Using outdated tools like App Center for logging can lead to code pollution and limited functionality.</li>
<li>Local logging can be useful for debugging purposes, especially in scenarios where cloud logging is not necessary or practical.</li>
<li>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.</li>
<li>Proper error handling and logging practices can help improve the overall stability and user experience of mobile apps.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Episode Number</li>
<li>06:02 Exploring External Libraries for Error Handling</li>
<li>11:04 Finding the Right Balance: Convenience vs Performance</li>
<li>23:45 Considerations for Configuration and Logging in Mobile Apps</li>
<li>26:11 The Performance Implications of Logging</li>
<li>29:12 Logging and Performance: A Closer Look</li>
<li>32:05 The Drawbacks of Using Outdated Logging Tools</li>
<li>34:12 The Benefits of Local Logging</li>
<li>36:26 Strategic Use of Try-Catch Blocks</li>
<li>41:38 Proper Error Handling and Logging Practices</li>
</ul><p>Links:</p><ul><li><a title="Sentry IO" rel="nofollow" href="https://sentry.io/for/dotnet-maui/">Sentry IO</a></li><li><a title="Shiny.Extensions.Configuration" rel="nofollow" href="https://shinylib.net">Shiny.Extensions.Configuration</a> &mdash; A configuration library that pulls appsettings json from Android assets &amp; iOS bundles allowing for repackaging in white label solutions while still support the common configuration pattern</li><li><a title="YouTube Episode 111" rel="nofollow" href="https://youtu.be/HI3TYKm51e8">YouTube Episode 111</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Consider the specific needs of your app when implementing configuration and logging</li>
<li>Use environment variables or constants for simple configuration needs</li>
<li>Be mindful of the performance implications of logging, especially in mobile apps</li>
<li>Explore external libraries like Sentry for crash reporting and error handling</li>
<li>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.</li>
<li>Using outdated tools like App Center for logging can lead to code pollution and limited functionality.</li>
<li>Local logging can be useful for debugging purposes, especially in scenarios where cloud logging is not necessary or practical.</li>
<li>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.</li>
<li>Proper error handling and logging practices can help improve the overall stability and user experience of mobile apps.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Episode Number</li>
<li>06:02 Exploring External Libraries for Error Handling</li>
<li>11:04 Finding the Right Balance: Convenience vs Performance</li>
<li>23:45 Considerations for Configuration and Logging in Mobile Apps</li>
<li>26:11 The Performance Implications of Logging</li>
<li>29:12 Logging and Performance: A Closer Look</li>
<li>32:05 The Drawbacks of Using Outdated Logging Tools</li>
<li>34:12 The Benefits of Local Logging</li>
<li>36:26 Strategic Use of Try-Catch Blocks</li>
<li>41:38 Proper Error Handling and Logging Practices</li>
</ul><p>Links:</p><ul><li><a title="Sentry IO" rel="nofollow" href="https://sentry.io/for/dotnet-maui/">Sentry IO</a></li><li><a title="Shiny.Extensions.Configuration" rel="nofollow" href="https://shinylib.net">Shiny.Extensions.Configuration</a> &mdash; A configuration library that pulls appsettings json from Android assets &amp; iOS bundles allowing for repackaging in white label solutions while still support the common configuration pattern</li><li><a title="YouTube Episode 111" rel="nofollow" href="https://youtu.be/HI3TYKm51e8">YouTube Episode 111</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>110: Tales from the Crypt</title>
  <link>https://www.gonedotnet.io/110</link>
  <guid isPermaLink="false">afec8e73-f8ec-4262-9c5a-b96e6ac005ac</guid>
  <pubDate>Fri, 14 Jun 2024 13:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/afec8e73-f8ec-4262-9c5a-b96e6ac005ac.mp3" length="92071653" type="audio/mpeg"/>
  <itunes:episode>110</itunes:episode>
  <itunes:title>Tales from the Crypt</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Allan and Jon have seen some scary things, and survived to talk about them on this episode!  Hear what frightening faux pas have developers committed in their Xamarin and MAUI apps!</itunes:subtitle>
  <itunes:duration>1:10:21</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  mobile app development, assembly scanning, JSON file loading, dependency injection, best practices, pitfalls, Xamarin, Maui, source generators, app performance, dependency injection, service management, constructor logic, Xamarin Forms, Maui, async calls, service resolution, separation of concerns, thoughtful design, unnecessary complexity, observable collections, app development, performance, source generators, incremental generators, Roslyn analyzers, plugin package, listener feedback</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Mobile app development often involves common pitfalls and best practices that developers should be aware of.</li>
<li>Assembly scanning and loading large JSON files can impact app performance and should be approached with caution.</li>
<li>Misuse of dependency injection, such as making pages singleton for faster loading, can lead to unexpected issues and should be carefully considered.</li>
<li>Source generators can be a valuable tool for optimizing app performance and reducing unnecessary code.</li>
<li>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.</li>
<li>Separating concerns in service management is crucial for maintaining code quality and performance.</li>
<li>The transition from Xamarin Forms to Maui introduces changes that can affect app performance and behavior.</li>
<li>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.</li>
<li>Source generators and incremental generators present complexities and challenges in app development.</li>
<li>Learning from mistakes is an important part of growth and improvement in software development.</li>
<li>Listener feedback and engagement are valuable for shaping future podcast episodes and content.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Nostalgic Reflections</li>
<li>02:50 Common Pitfalls in Mobile App Development</li>
<li>24:22 Dependency Injection Best Practices</li>
<li>42:27 The Impact of Xamarin Forms to Maui Transition</li>
<li>48:53 Constructor Logic and Service Resolution Challenges</li>
<li>51:29 Challenges of Observable Collections in App Development</li>
<li>54:14 Learning from Mistakes in Software Development</li>
<li>01:05:30 Engaging with Listener Feedback</li>
</ul><p>Links:</p><ul><li><a title="Source Generators Kit" rel="nofollow" href="https://github.com/kant2002/SourceGeneratorsKit">Source Generators Kit</a></li><li><a title="YouTube Episode 110" rel="nofollow" href="https://youtu.be/WsS0--19lNA">YouTube Episode 110</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Mobile app development often involves common pitfalls and best practices that developers should be aware of.</li>
<li>Assembly scanning and loading large JSON files can impact app performance and should be approached with caution.</li>
<li>Misuse of dependency injection, such as making pages singleton for faster loading, can lead to unexpected issues and should be carefully considered.</li>
<li>Source generators can be a valuable tool for optimizing app performance and reducing unnecessary code.</li>
<li>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.</li>
<li>Separating concerns in service management is crucial for maintaining code quality and performance.</li>
<li>The transition from Xamarin Forms to Maui introduces changes that can affect app performance and behavior.</li>
<li>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.</li>
<li>Source generators and incremental generators present complexities and challenges in app development.</li>
<li>Learning from mistakes is an important part of growth and improvement in software development.</li>
<li>Listener feedback and engagement are valuable for shaping future podcast episodes and content.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Nostalgic Reflections</li>
<li>02:50 Common Pitfalls in Mobile App Development</li>
<li>24:22 Dependency Injection Best Practices</li>
<li>42:27 The Impact of Xamarin Forms to Maui Transition</li>
<li>48:53 Constructor Logic and Service Resolution Challenges</li>
<li>51:29 Challenges of Observable Collections in App Development</li>
<li>54:14 Learning from Mistakes in Software Development</li>
<li>01:05:30 Engaging with Listener Feedback</li>
</ul><p>Links:</p><ul><li><a title="Source Generators Kit" rel="nofollow" href="https://github.com/kant2002/SourceGeneratorsKit">Source Generators Kit</a></li><li><a title="YouTube Episode 110" rel="nofollow" href="https://youtu.be/WsS0--19lNA">YouTube Episode 110</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>109: Dependency Injection - Beyond the Basics</title>
  <link>https://www.gonedotnet.io/109</link>
  <guid isPermaLink="false">b0e9d390-d8b0-4f01-90e2-2e04db443fba</guid>
  <pubDate>Fri, 07 Jun 2024 13:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/b0e9d390-d8b0-4f01-90e2-2e04db443fba.mp3" length="78675347" type="audio/mpeg"/>
  <itunes:episode>109</itunes:episode>
  <itunes:title>Dependency Injection - Beyond the Basics</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Transients, Singletons, Scopes, oh my!  Take a deep dive into dependency injection on this episode !</itunes:subtitle>
  <itunes:duration>1:00:58</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  dependency injection, DI libraries, mobile development, performance optimization, source generation, app startup time, dependency injection, scoping mechanisms, Maui apps, Prism, life cycles, navigation services, dependency injection, scope boundaries, mobile app development, DI containers, app performance, managing dependencies</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Dependency injection has evolved over the years and has become a crucial part of app development, especially in the mobile space.</li>
<li>Different DI libraries have their own strengths and considerations, and the choice of library depends on the specific use case and performance requirements.</li>
<li>The future of DI may involve source generation, which could lead to significant improvements in performance and reduce complexity in the registration process.</li>
<li>Considerations for mobile development include the impact of DI on app startup time and the need for performance optimizations.</li>
<li>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</li>
<li>The need for out-of-the-box conventions for handling life cycles and navigation services in Maui</li>
<li>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.</li>
<li>Choosing the right DI container can significantly impact app performance and memory management.</li>
<li>Managing dependencies and understanding scope lifetimes is essential for avoiding memory leaks and performance issues in mobile apps.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapter</h3>

<ul>
<li>00:00 The Evolution of Dependency Injection</li>
<li>07:18 Considerations for Mobile Development</li>
<li>13:47 The Future of Dependency Injection</li>
<li>23:23 Understanding Scoping Mechanisms and Life Cycles</li>
<li>26:34 The Need for Out-of-the-Box Conventions in Maui</li>
<li>29:04 Dependency Injection and Prism in Maui Apps</li>
<li>41:28 Understanding Scope Boundaries in Dependency Injection</li>
<li>43:21 Common Misconceptions about Dependency Injection</li>
<li>45:23 Impact of Dependency Injection in Prism and Maui Apps</li>
<li>47:11 Debugging and Validation in Dependency Injection</li>
<li>53:45 Audio Quality and Listener Engagement</li>
</ul><p>Links:</p><ul><li><a title=".NET MAUI Micro MVVM" rel="nofollow" href="https://github.com/AvantiPoint/mauimicromvvm">.NET MAUI Micro MVVM</a> &mdash; A small MVVM framework with navigation services &amp; lifecycle built around .NET MAUI Shell by the great Dan Siegel</li><li><a title="DryIoc" rel="nofollow" href="https://github.com/dadhi/DryIoc">DryIoc</a> &mdash; DryIoc is fast, small, full-featured IoC Container for .NET</li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Dependency injection has evolved over the years and has become a crucial part of app development, especially in the mobile space.</li>
<li>Different DI libraries have their own strengths and considerations, and the choice of library depends on the specific use case and performance requirements.</li>
<li>The future of DI may involve source generation, which could lead to significant improvements in performance and reduce complexity in the registration process.</li>
<li>Considerations for mobile development include the impact of DI on app startup time and the need for performance optimizations.</li>
<li>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</li>
<li>The need for out-of-the-box conventions for handling life cycles and navigation services in Maui</li>
<li>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.</li>
<li>Choosing the right DI container can significantly impact app performance and memory management.</li>
<li>Managing dependencies and understanding scope lifetimes is essential for avoiding memory leaks and performance issues in mobile apps.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapter</h3>

<ul>
<li>00:00 The Evolution of Dependency Injection</li>
<li>07:18 Considerations for Mobile Development</li>
<li>13:47 The Future of Dependency Injection</li>
<li>23:23 Understanding Scoping Mechanisms and Life Cycles</li>
<li>26:34 The Need for Out-of-the-Box Conventions in Maui</li>
<li>29:04 Dependency Injection and Prism in Maui Apps</li>
<li>41:28 Understanding Scope Boundaries in Dependency Injection</li>
<li>43:21 Common Misconceptions about Dependency Injection</li>
<li>45:23 Impact of Dependency Injection in Prism and Maui Apps</li>
<li>47:11 Debugging and Validation in Dependency Injection</li>
<li>53:45 Audio Quality and Listener Engagement</li>
</ul><p>Links:</p><ul><li><a title=".NET MAUI Micro MVVM" rel="nofollow" href="https://github.com/AvantiPoint/mauimicromvvm">.NET MAUI Micro MVVM</a> &mdash; A small MVVM framework with navigation services &amp; lifecycle built around .NET MAUI Shell by the great Dan Siegel</li><li><a title="DryIoc" rel="nofollow" href="https://github.com/dadhi/DryIoc">DryIoc</a> &mdash; DryIoc is fast, small, full-featured IoC Container for .NET</li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>108: Architecture Patterns</title>
  <link>https://www.gonedotnet.io/108</link>
  <guid isPermaLink="false">9aa7353c-e805-4129-9643-abbb4a3a0a72</guid>
  <pubDate>Fri, 31 May 2024 13:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/9aa7353c-e805-4129-9643-abbb4a3a0a72.mp3" length="81060608" type="audio/mpeg"/>
  <itunes:episode>108</itunes:episode>
  <itunes:title>Architecture Patterns</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>What's tired and what's wired?  There's been a number of architecture patterns used in mobile apps over the years.  This episode talks about some of them, as well as some new ideas for how to architect apps built across large teams.</itunes:subtitle>
  <itunes:duration>1:08:18</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  architecture, performance, MVVM, observable collections, messaging services, events, actions, mediator pattern, mobile app development, logical separation, service overrun, vertical slicing, messaging services, scalability, error handling, unit testing, Xamarin, .NET Maui, mediator pattern, mobile app development, view models, services, MediatR, architecture</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Implementing the MVVM pattern can lead to excessive property changed notifications, which may impact performance.</li>
<li>Observable collections should be used only when data is constantly changing, such as in real-time applications.</li>
<li>Consider using events or actions instead of messaging services for better control and clarity in event handling.</li>
<li>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.</li>
<li>Using a mediator pattern allows for vertical slicing of concerns and prevents the need for injecting multiple services.</li>
<li>The mediator pattern offers benefits such as scalability, error handling, and ease of unit testing.</li>
<li>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.</li>
<li>Using a mediator can simplify unit testing by allowing developers to focus on testing individual components rather than the entire app.</li>
<li>Existing implementations of the mediator pattern, such as MediatR, can provide a solid foundation for incorporating this pattern into mobile app development.</li>
<li>The mediator pattern can help clean up code and improve the organization and separation of concerns in mobile app architecture.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Personal Updates</li>
<li>03:00 Challenges of Implementing the MVVM Pattern</li>
<li>09:04 Optimizing the Use of Observable Collections</li>
<li>14:57 Avoiding Excessive Messaging Services</li>
<li>22:18 Challenges with Messaging Services</li>
<li>24:02 Exploring the Mediator Pattern</li>
<li>27:07 The Role of Mediators in Routing</li>
<li>30:17 Separation of Concerns and Dependency Injection</li>
<li>33:30 Handling Events in Temporary View Models</li>
<li>36:00 Benefits of the Mediator Pattern</li>
<li>40:08 Scaling and Breaking Down Hotspots</li>
<li>44:20 Command Handlers and Mediator Interaction</li>
<li>46:27 Focusing on the Action with Mediators</li>
<li>49:28 Simplifying Unit Testing with a Mediator</li>
<li>52:17 Existing Implementations of the Mediator Pattern</li>
<li>55:11 Handling Unsolicited Notifications with a Mediator</li>
<li>57:24 Mediator Libraries and Best Practices</li>
<li>01:00:57 Challenges and Considerations for Mediator Implementation</li>
<li>01:03:49 Future Developments and Feedback</li>
</ul><p>Links:</p><ul><li><a title="MAUI Reactor" rel="nofollow" href="https://github.com/adospace/reactorui-maui">MAUI Reactor</a></li><li><a title="Rearch" rel="nofollow" href="https://github.com/nabond251/rearch-dotnet">Rearch</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Implementing the MVVM pattern can lead to excessive property changed notifications, which may impact performance.</li>
<li>Observable collections should be used only when data is constantly changing, such as in real-time applications.</li>
<li>Consider using events or actions instead of messaging services for better control and clarity in event handling.</li>
<li>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.</li>
<li>Using a mediator pattern allows for vertical slicing of concerns and prevents the need for injecting multiple services.</li>
<li>The mediator pattern offers benefits such as scalability, error handling, and ease of unit testing.</li>
<li>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.</li>
<li>Using a mediator can simplify unit testing by allowing developers to focus on testing individual components rather than the entire app.</li>
<li>Existing implementations of the mediator pattern, such as MediatR, can provide a solid foundation for incorporating this pattern into mobile app development.</li>
<li>The mediator pattern can help clean up code and improve the organization and separation of concerns in mobile app architecture.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Personal Updates</li>
<li>03:00 Challenges of Implementing the MVVM Pattern</li>
<li>09:04 Optimizing the Use of Observable Collections</li>
<li>14:57 Avoiding Excessive Messaging Services</li>
<li>22:18 Challenges with Messaging Services</li>
<li>24:02 Exploring the Mediator Pattern</li>
<li>27:07 The Role of Mediators in Routing</li>
<li>30:17 Separation of Concerns and Dependency Injection</li>
<li>33:30 Handling Events in Temporary View Models</li>
<li>36:00 Benefits of the Mediator Pattern</li>
<li>40:08 Scaling and Breaking Down Hotspots</li>
<li>44:20 Command Handlers and Mediator Interaction</li>
<li>46:27 Focusing on the Action with Mediators</li>
<li>49:28 Simplifying Unit Testing with a Mediator</li>
<li>52:17 Existing Implementations of the Mediator Pattern</li>
<li>55:11 Handling Unsolicited Notifications with a Mediator</li>
<li>57:24 Mediator Libraries and Best Practices</li>
<li>01:00:57 Challenges and Considerations for Mediator Implementation</li>
<li>01:03:49 Future Developments and Feedback</li>
</ul><p>Links:</p><ul><li><a title="MAUI Reactor" rel="nofollow" href="https://github.com/adospace/reactorui-maui">MAUI Reactor</a></li><li><a title="Rearch" rel="nofollow" href="https://github.com/nabond251/rearch-dotnet">Rearch</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>107: IoT and Small Devices</title>
  <link>https://www.gonedotnet.io/107</link>
  <guid isPermaLink="false">e32138c8-9bc5-4f7a-b6da-71d3cae7ae3e</guid>
  <pubDate>Fri, 24 May 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/e32138c8-9bc5-4f7a-b6da-71d3cae7ae3e.mp3" length="92170117" type="audio/mpeg"/>
  <itunes:episode>107</itunes:episode>
  <itunes:title>IoT and Small Devices</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Microcontrollers, IoT, and small form factor devices are plentiful and cheap, and they can run .NET on them now too!  This episode is all about them and experiences writing code for these devices.</itunes:subtitle>
  <itunes:duration>1:07:22</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, swimming pool, automation control systems, microcontrollers, IoT devices, pool temperature, pool pumps, saltwater generator, ESP8266, Meadow board, .NET, IoT projects, IoT platforms, hardware, software-as-a-service, Meadow, ecosystem, Raspberry Pi, microcontrollers, web servers, pool automation, coffee brewing, sensors, Raspberry Pi</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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&#39;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.</p>

<h3>Takeaways</h3>

<ul>
<li>Building automation control systems for swimming pools using microcontrollers and IoT devices is a fascinating and practical application of technology.</li>
<li>Controlling the pool temperature, pool pumps, and other aspects of pool maintenance can be automated using microcontrollers and relays.</li>
<li>Different microcontrollers, such as the ESP8266 and the Meadow board, offer various capabilities and programming options for building IoT projects.</li>
<li>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.</li>
<li>Meadow is building an ecosystem around its platform, expanding its libraries and compatibility with devices like Raspberry Pi.</li>
<li>Running web servers on microcontrollers like Meadow can be challenging, but Meadow provides solutions like BLE servers and basic web server functionality.</li>
<li>Personal projects involving IoT devices can range from pool automation to coffee brewing, and can be built using sensors and Raspberry Pi.</li>
<li>Building custom solutions using sensors and Raspberry Pi can be a creative and practical way to solve real-world problems.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Background</li>
<li>02:26 Interest in IoT and Microcontrollers</li>
<li>03:50 Comparing IoT to Early Xamarin Days</li>
<li>08:11 Controlling Pool Temperature with Microcontrollers</li>
<li>09:37 Automating Pool Pumps and Saltwater Generator</li>
<li>28:27 Exploring the Meadow Board and .NET in IoT</li>
<li>33:19 The Evolution of IoT Platforms</li>
<li>34:41 Building an Ecosystem and Extending Compatibility</li>
<li>35:10 Challenges of Running Web Servers on Microcontrollers</li>
<li>39:23 Personal Projects: Pool Automation and Coffee Brewing</li>
<li>52:59 Meadow Desktop: Coding Against APIs and Simulating Graphics</li>
<li>01:03:38 Building Custom Solutions with Sensors and Raspberry Pi</li>
</ul><p>Links:</p><ul><li><a title="Meadow Desktop" rel="nofollow" href="https://developer.wildernesslabs.co/Meadow/Getting_Started/Getting_Started_Meadow.Desktop/">Meadow Desktop</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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&#39;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.</p>

<h3>Takeaways</h3>

<ul>
<li>Building automation control systems for swimming pools using microcontrollers and IoT devices is a fascinating and practical application of technology.</li>
<li>Controlling the pool temperature, pool pumps, and other aspects of pool maintenance can be automated using microcontrollers and relays.</li>
<li>Different microcontrollers, such as the ESP8266 and the Meadow board, offer various capabilities and programming options for building IoT projects.</li>
<li>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.</li>
<li>Meadow is building an ecosystem around its platform, expanding its libraries and compatibility with devices like Raspberry Pi.</li>
<li>Running web servers on microcontrollers like Meadow can be challenging, but Meadow provides solutions like BLE servers and basic web server functionality.</li>
<li>Personal projects involving IoT devices can range from pool automation to coffee brewing, and can be built using sensors and Raspberry Pi.</li>
<li>Building custom solutions using sensors and Raspberry Pi can be a creative and practical way to solve real-world problems.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Background</li>
<li>02:26 Interest in IoT and Microcontrollers</li>
<li>03:50 Comparing IoT to Early Xamarin Days</li>
<li>08:11 Controlling Pool Temperature with Microcontrollers</li>
<li>09:37 Automating Pool Pumps and Saltwater Generator</li>
<li>28:27 Exploring the Meadow Board and .NET in IoT</li>
<li>33:19 The Evolution of IoT Platforms</li>
<li>34:41 Building an Ecosystem and Extending Compatibility</li>
<li>35:10 Challenges of Running Web Servers on Microcontrollers</li>
<li>39:23 Personal Projects: Pool Automation and Coffee Brewing</li>
<li>52:59 Meadow Desktop: Coding Against APIs and Simulating Graphics</li>
<li>01:03:38 Building Custom Solutions with Sensors and Raspberry Pi</li>
</ul><p>Links:</p><ul><li><a title="Meadow Desktop" rel="nofollow" href="https://developer.wildernesslabs.co/Meadow/Getting_Started/Getting_Started_Meadow.Desktop/">Meadow Desktop</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>106: Structuring Apps</title>
  <link>https://www.gonedotnet.io/106</link>
  <guid isPermaLink="false">4aedd8b7-a3fe-4f88-afc0-127c5f7741d4</guid>
  <pubDate>Fri, 10 May 2024 11:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/4aedd8b7-a3fe-4f88-afc0-127c5f7741d4.mp3" length="92815777" type="audio/mpeg"/>
  <itunes:episode>106</itunes:episode>
  <itunes:title>Structuring Apps</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>How should you structure your apps? How do we do it? Listen to find out, and agree, or maybe disagree?</itunes:subtitle>
  <itunes:duration>1:04:27</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  app structure, business requirements, technology layers, services, IL manipulators, C# hot reload, base implementations, templates, MVVM patterns, mobile app development, services, MVVM frameworks, Prism, tech services, events, observables, dependency injection, Refit</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Organize projects based on business logic rather than technology layers</li>
<li>Group services by section or feature to improve discoverability</li>
<li>Be cautious when using IL manipulators in mobile apps</li>
<li>Consider the limitations of certain frameworks in the context of C# hot reload</li>
<li>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.</li>
<li>MVVM frameworks like Prism provide a comprehensive structure for building full-featured apps.</li>
<li>Writing technical code on top of existing tech services can lead to complexity and bugs.</li>
<li>Using events and observables in services can simplify communication between components and reduce code duplication.</li>
<li>Dependency injection is a powerful tool for managing service dependencies and improving testability.</li>
<li>The Refit library is a recommended tool for generating HTTP clients from interfaces in a clean and efficient way.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>00:59 Challenges of App Layout</li>
<li>01:27 Discoverability of Business Logic</li>
<li>03:18 Organizing Projects by Business Logic</li>
<li>04:47 Grouping Services by Section</li>
<li>06:44 Considerations for Global Services</li>
<li>08:42 Moving Services to Relevant Folders</li>
<li>10:03 Multiple Implementations of Services</li>
<li>13:18 Challenges of IL Manipulators and C# Hot Reload</li>
<li>19:07 Importance of Base Implementations and Templates</li>
<li>00:12 Introduction</li>
<li>00:29 Structuring Services in Mobile App Development</li>
<li>34:20 The Benefits of Using Events and Observables in Services</li>
<li>39:43 Dependency Injection and the Microsoft Implementation</li>
<li>53:07 Plugin Packager Product of the Week: Refit</li>
<li>01:03:36 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="Refit" rel="nofollow" href="https://github.com/reactiveui/refit">Refit</a> &mdash; The automatic type-safe REST library</li><li><a title="Refitter" rel="nofollow" href="https://github.com/christianhelle/refitter">Refitter</a> &mdash; 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.</li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>Organize projects based on business logic rather than technology layers</li>
<li>Group services by section or feature to improve discoverability</li>
<li>Be cautious when using IL manipulators in mobile apps</li>
<li>Consider the limitations of certain frameworks in the context of C# hot reload</li>
<li>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.</li>
<li>MVVM frameworks like Prism provide a comprehensive structure for building full-featured apps.</li>
<li>Writing technical code on top of existing tech services can lead to complexity and bugs.</li>
<li>Using events and observables in services can simplify communication between components and reduce code duplication.</li>
<li>Dependency injection is a powerful tool for managing service dependencies and improving testability.</li>
<li>The Refit library is a recommended tool for generating HTTP clients from interfaces in a clean and efficient way.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>00:59 Challenges of App Layout</li>
<li>01:27 Discoverability of Business Logic</li>
<li>03:18 Organizing Projects by Business Logic</li>
<li>04:47 Grouping Services by Section</li>
<li>06:44 Considerations for Global Services</li>
<li>08:42 Moving Services to Relevant Folders</li>
<li>10:03 Multiple Implementations of Services</li>
<li>13:18 Challenges of IL Manipulators and C# Hot Reload</li>
<li>19:07 Importance of Base Implementations and Templates</li>
<li>00:12 Introduction</li>
<li>00:29 Structuring Services in Mobile App Development</li>
<li>34:20 The Benefits of Using Events and Observables in Services</li>
<li>39:43 Dependency Injection and the Microsoft Implementation</li>
<li>53:07 Plugin Packager Product of the Week: Refit</li>
<li>01:03:36 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="Refit" rel="nofollow" href="https://github.com/reactiveui/refit">Refit</a> &mdash; The automatic type-safe REST library</li><li><a title="Refitter" rel="nofollow" href="https://github.com/christianhelle/refitter">Refitter</a> &mdash; 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.</li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>105: Our Android and iOS Wish Lists</title>
  <link>https://www.gonedotnet.io/105</link>
  <guid isPermaLink="false">dfb21b4f-88f6-4cb0-9807-7393071a1f93</guid>
  <pubDate>Fri, 03 May 2024 18:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/dfb21b4f-88f6-4cb0-9807-7393071a1f93.mp3" length="92702301" type="audio/mpeg"/>
  <itunes:episode>105</itunes:episode>
  <itunes:title>Our Android and iOS Wish Lists</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>It's that time of year, WWDC and Google IO are near, and that means new iOS and Android updates.  Let's talk about our wish lists!</itunes:subtitle>
  <itunes:duration>1:04:22</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  tech conferences, WWDC, Google IO, announcements, hardware giveaways, immersive movies, foldable iPhone, UI design, smartphone cameras, foldable phones, APIs, UI changes, app stores, permissions, AI, context awareness, App Store fees, Android permissions, APIs, notifications, user experience, Apple TV, M-series chips, gaming, ARM-based devices, packages</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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&#39;s M-series chips, the future of gaming on ARM-based devices, and a shout-out to Gerald Versluis and his packages.</p>

<h3>Takeaways</h3>

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

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Discussion of Fun Topics</li>
<li>07:30 The Excitement of Early Conferences</li>
<li>26:38 App Store Fees and Review Process</li>
<li>45:08 Navigating the Challenges of Changing APIs</li>
<li>52:05 The Power and Uncertainty of Apple&#39;s M-series Chips</li>
<li>59:59 Shout-out to Gerald Versluis and His Useful Packages</li>
</ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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&#39;s M-series chips, the future of gaming on ARM-based devices, and a shout-out to Gerald Versluis and his packages.</p>

<h3>Takeaways</h3>

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

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Discussion of Fun Topics</li>
<li>07:30 The Excitement of Early Conferences</li>
<li>26:38 App Store Fees and Review Process</li>
<li>45:08 Navigating the Challenges of Changing APIs</li>
<li>52:05 The Power and Uncertainty of Apple&#39;s M-series Chips</li>
<li>59:59 Shout-out to Gerald Versluis and His Useful Packages</li>
</ul>]]>
  </itunes:summary>
</item>
<item>
  <title>104: The one about XAML!</title>
  <link>https://www.gonedotnet.io/104</link>
  <guid isPermaLink="false">33fce7bb-3cf6-4db6-bd6f-b1bd320e61c7</guid>
  <pubDate>Fri, 26 Apr 2024 15:30:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/33fce7bb-3cf6-4db6-bd6f-b1bd320e61c7.mp3" length="68252221" type="audio/mpeg"/>
  <itunes:episode>104</itunes:episode>
  <itunes:title>The one about XAML!</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Love it or hate it, XAML is here to stay for awhile!  Jon and Allan talk about the XAML good, the XAML bad, and the XAML ugly.  There's no shame in using some type converters, but is there a better way?</itunes:subtitle>
  <itunes:duration>1:10:28</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui, Keywords  coffee, coffee-making, XAML, converters, view model, view, converters, extensions, behaviors, XAML, compiled bindings, data types, performance, Blazor, web development, Xamarin.Forms, .NET MAUI, optimization, compiled bindings, converters, XAML layouts, Sharpnado CollectionView, responsive layouts, platform-specific optimizations</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>There are different preferences for coffee-making methods, from simple machines like Keurig to more complex ones like Chemex.</li>
<li>XAML can be verbose, and there is a debate about whether to put logic in the view model or the view.</li>
<li>Converters in XAML can be useful for transforming data, but it&#39;s important to avoid excessive use and keep business logic separate.</li>
<li>Localization in XAML can be done using dictionary strings and bindings, without the need for extensions.</li>
<li>The use of AI for auto-localization and translation is an interesting possibility.</li>
<li>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.</li>
<li>Compiled bindings and X-bind can be alternatives to converters and provide better performance.</li>
<li>Declaring data types in XAML can improve performance and enable better IntelliSense.</li>
<li>XAML can be used in Blazor, but the heavier the reliance on XAML, the more challenging it may be to migrate to Blazor.</li>
<li>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.</li>
<li>Converters in collection views can introduce performance overhead, especially when used extensively. It&#39;s important to minimize their usage and consider alternative approaches.</li>
<li>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.</li>
<li>Third-party libraries like Sharpnado CollectionView can provide additional performance optimizations and features for collection views in Xamarin.Forms and .NET MAUI apps.</li>
<li>Building responsive layouts can be challenging, and platform-specific optimizations may be necessary to achieve optimal performance.</li>
<li>Consider leaving a review on Apple Podcasts and checking out the Gone Mobile YouTube channel for more content.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 The Art of Coffee-Making: From Keurig to Chemex</li>
<li>09:39 The Power and Pitfalls of Converters in XAML</li>
<li>35:28 The Power of Compiled Bindings and X-bind in XAML</li>
<li>45:21 Challenges of Migrating XAML-heavy Apps to Blazor</li>
<li>55:17 Challenges of Building Responsive Layouts</li>
<li>01:04:59 Leaving Reviews and Exploring the Gone Mobile YouTube Channel</li>
</ul><p>Links:</p><ul><li><a title="Sharpnado CollectionView" rel="nofollow" href="https://github.com/roubachof/Sharpnado.CollectionView">Sharpnado CollectionView</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Takeaways</h3>

<ul>
<li>There are different preferences for coffee-making methods, from simple machines like Keurig to more complex ones like Chemex.</li>
<li>XAML can be verbose, and there is a debate about whether to put logic in the view model or the view.</li>
<li>Converters in XAML can be useful for transforming data, but it&#39;s important to avoid excessive use and keep business logic separate.</li>
<li>Localization in XAML can be done using dictionary strings and bindings, without the need for extensions.</li>
<li>The use of AI for auto-localization and translation is an interesting possibility.</li>
<li>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.</li>
<li>Compiled bindings and X-bind can be alternatives to converters and provide better performance.</li>
<li>Declaring data types in XAML can improve performance and enable better IntelliSense.</li>
<li>XAML can be used in Blazor, but the heavier the reliance on XAML, the more challenging it may be to migrate to Blazor.</li>
<li>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.</li>
<li>Converters in collection views can introduce performance overhead, especially when used extensively. It&#39;s important to minimize their usage and consider alternative approaches.</li>
<li>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.</li>
<li>Third-party libraries like Sharpnado CollectionView can provide additional performance optimizations and features for collection views in Xamarin.Forms and .NET MAUI apps.</li>
<li>Building responsive layouts can be challenging, and platform-specific optimizations may be necessary to achieve optimal performance.</li>
<li>Consider leaving a review on Apple Podcasts and checking out the Gone Mobile YouTube channel for more content.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 The Art of Coffee-Making: From Keurig to Chemex</li>
<li>09:39 The Power and Pitfalls of Converters in XAML</li>
<li>35:28 The Power of Compiled Bindings and X-bind in XAML</li>
<li>45:21 Challenges of Migrating XAML-heavy Apps to Blazor</li>
<li>55:17 Challenges of Building Responsive Layouts</li>
<li>01:04:59 Leaving Reviews and Exploring the Gone Mobile YouTube Channel</li>
</ul><p>Links:</p><ul><li><a title="Sharpnado CollectionView" rel="nofollow" href="https://github.com/roubachof/Sharpnado.CollectionView">Sharpnado CollectionView</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>103: Offline Data Sync: Cautionary Tales</title>
  <link>https://www.gonedotnet.io/103</link>
  <guid isPermaLink="false">949d7a25-7338-4d9f-81c6-3947d26325fc</guid>
  <pubDate>Fri, 19 Apr 2024 17:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/949d7a25-7338-4d9f-81c6-3947d26325fc.mp3" length="88393893" type="audio/mpeg"/>
  <itunes:episode>103</itunes:episode>
  <itunes:title>Offline Data Sync: Cautionary Tales</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Mobile apps and offline data synchronization are a match made in where?  Listen to some cautionary tales and experiences in building apps with offline data synchronization scenarios!  Jon and Allan have the battle scars to prove it!</itunes:subtitle>
  <itunes:duration>1:06:04</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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 Importance of the SQLite Raw Library and Advanced Features
</description>
  <itunes:keywords>dotnet, dotnet-maui, offline battle tactics, mobile app development, data syncing, Realm, performance, scalability, backend, data migration, deletes, updates, conflicts, data security, Cosmos DB, record types, business needs, over-engineering, offline functionality, end scars, handling offline scenarios, feedback to users, frameworks for offline sync, Azure Mobile Apps, limitations, SQLite, JSON support, SQLite, app startup time, bottleneck, SQL, SQLite-PCL-NET, offline functionality, device-to-device communication, airplane environment, Bluetooth, SQLite raw library, geolocation</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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 &#39;end scars&#39; 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&#39;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.</p>

<h3>Takeaways</h3>

<ul>
<li>Offline data syncing in mobile app development can be challenging and requires careful consideration of business needs.</li>
<li>Choosing the right technology for offline data storage and syncing is crucial for performance and scalability.</li>
<li>Handling deletes, updates, conflicts, and data security are important aspects of offline data syncing.</li>
<li>Simplifying the data model and using simple record types can make offline data syncing easier to implement and maintain.</li>
<li>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.</li>
<li>Handling &#39;end scars&#39; is crucial, ensuring that child data is properly managed when parent data is modified or deleted.</li>
<li>Providing clear feedback to users about offline status and data synchronization is essential for a good user experience.</li>
<li>Using frameworks and abstractions for offline sync may have limitations and can lead to loss of control over data management.</li>
<li>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.</li>
<li>Using SQL and libraries like SQLite-PCL-NET can provide more control and flexibility in working with databases.</li>
<li>Offline functionality and device-to-device communication are important considerations in mobile app development.</li>
<li>The challenges of offline functionality in airplane environments include limited connectivity options and the need for peer-to-peer networks.</li>
<li>The SQLite raw library, maintained by Eric Sink, is a foundational piece for many SQLite-based solutions and enables advanced features like geolocation.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Setting the Stage</li>
<li>01:43 Offline Battle Tactics and Scars</li>
<li>08:14 Challenges with Realm and Login Service</li>
<li>14:17 Avoiding Over-Engineering and Building Dependencies</li>
<li>25:15 Simplifying the Data Model for Easier Syncing</li>
<li>27:04 Conclusion and Key Takeaways</li>
<li>27:34 Managing &#39;End Scars&#39; in Data Synchronization</li>
<li>29:23 Importance of Clear Feedback in Offline Scenarios</li>
<li>32:30 Benefits of Using SQLite for Local Offline Storage</li>
<li>37:28 Limitations of Frameworks for Offline Sync</li>
<li>48:57 Optimizing App Startup Time and the Role of SQLite</li>
<li>50:47 The Benefits of Using SQL and SQLite-PCL-NET</li>
<li>51:20 Offline Functionality and Device-to-Device Communication</li>
<li>52:21 Challenges of Offline Functionality in Airplane Environments</li>
<li>55:18 The Importance of the SQLite Raw Library and Advanced Features</li>
</ul><p>Links:</p><ul><li><a title="SQLite Raw" rel="nofollow" href="https://github.com/ericsink/SQLitePCL.raw">SQLite Raw</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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 &#39;end scars&#39; 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&#39;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.</p>

<h3>Takeaways</h3>

<ul>
<li>Offline data syncing in mobile app development can be challenging and requires careful consideration of business needs.</li>
<li>Choosing the right technology for offline data storage and syncing is crucial for performance and scalability.</li>
<li>Handling deletes, updates, conflicts, and data security are important aspects of offline data syncing.</li>
<li>Simplifying the data model and using simple record types can make offline data syncing easier to implement and maintain.</li>
<li>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.</li>
<li>Handling &#39;end scars&#39; is crucial, ensuring that child data is properly managed when parent data is modified or deleted.</li>
<li>Providing clear feedback to users about offline status and data synchronization is essential for a good user experience.</li>
<li>Using frameworks and abstractions for offline sync may have limitations and can lead to loss of control over data management.</li>
<li>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.</li>
<li>Using SQL and libraries like SQLite-PCL-NET can provide more control and flexibility in working with databases.</li>
<li>Offline functionality and device-to-device communication are important considerations in mobile app development.</li>
<li>The challenges of offline functionality in airplane environments include limited connectivity options and the need for peer-to-peer networks.</li>
<li>The SQLite raw library, maintained by Eric Sink, is a foundational piece for many SQLite-based solutions and enables advanced features like geolocation.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Setting the Stage</li>
<li>01:43 Offline Battle Tactics and Scars</li>
<li>08:14 Challenges with Realm and Login Service</li>
<li>14:17 Avoiding Over-Engineering and Building Dependencies</li>
<li>25:15 Simplifying the Data Model for Easier Syncing</li>
<li>27:04 Conclusion and Key Takeaways</li>
<li>27:34 Managing &#39;End Scars&#39; in Data Synchronization</li>
<li>29:23 Importance of Clear Feedback in Offline Scenarios</li>
<li>32:30 Benefits of Using SQLite for Local Offline Storage</li>
<li>37:28 Limitations of Frameworks for Offline Sync</li>
<li>48:57 Optimizing App Startup Time and the Role of SQLite</li>
<li>50:47 The Benefits of Using SQL and SQLite-PCL-NET</li>
<li>51:20 Offline Functionality and Device-to-Device Communication</li>
<li>52:21 Challenges of Offline Functionality in Airplane Environments</li>
<li>55:18 The Importance of the SQLite Raw Library and Advanced Features</li>
</ul><p>Links:</p><ul><li><a title="SQLite Raw" rel="nofollow" href="https://github.com/ericsink/SQLitePCL.raw">SQLite Raw</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>102: You should learn some MSBuild</title>
  <link>https://www.gonedotnet.io/102</link>
  <guid isPermaLink="false">7808f235-7b30-4e12-831f-a0d2343a8352</guid>
  <pubDate>Fri, 12 Apr 2024 00:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/7808f235-7b30-4e12-831f-a0d2343a8352.mp3" length="98686675" type="audio/mpeg"/>
  <itunes:episode>102</itunes:episode>
  <itunes:title>You should learn some MSBuild</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>You'll be eager to sprinkle some MSBuild magic into your projects after this episode!</itunes:subtitle>
  <itunes:duration>58:44</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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
</description>
  <itunes:keywords>dotnet, dotnet-maui</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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&#39;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.</p>

<h3>Takeaways</h3>

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

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Weather</li>
<li>00:20 Introduction to MSBuild</li>
<li>01:12 Acquiring Taste for MSBuild</li>
<li>03:17 Slim CS Proj</li>
<li>04:03 Structure of New Project Files</li>
<li>05:12 Default Maui Project Template</li>
<li>06:36 Using CS Proj for NuGet Packages</li>
<li>07:56 Benefits of Using CS Proj for CI</li>
<li>08:26 Customizing Project Files for Platform-Specific Assets</li>
<li>09:53 Leveraging MSBuild for Customization</li>
<li>10:57 Command Line vs. CS Proj</li>
<li>11:33 Importing Files and Directory Build Props</li>
<li>12:37 Multiple SDK Imports</li>
<li>13:15 Properties and Item Groups in Project Files</li>
<li>14:05 Conditions in Project Files</li>
<li>19:48 Rationale for Different SDKs</li>
<li>22:19 Directory Build Props for Performance</li>
<li>24:07 Workloads and SDK Imports</li>
<li>26:17 Future of Workloads</li>
<li>29:08 Challenges with Workloads</li>
<li>31:09 MSBuild and Workloads</li>
<li>32:03 Importing MSBuild from NuGet Packages</li>
<li>33:12 Custom Entitlements and Build Props</li>
<li>34:09 Building Custom Entitlements</li>
<li>36:29 Adding Items to Build from NuGet Packages</li>
<li>37:38 Automatically Making Apps Work with Libraries</li>
<li>38:36 Customizing Build Props and Targets</li>
<li>39:40 Doing Build-Related Tasks in MSBuild</li>
<li>42:10 Writing Custom MSBuild Tasks</li>
<li>44:23 Using Custom Tasks and Source Generators</li>
<li>46:19 Incremental Source Generation</li>
<li>49:46 Michaela&#39;s MSBuild Editor Extension</li>
<li>56:19 Getting Started with MSBuild</li>
</ul><p>Links:</p><ul><li><a title="MSBuild Editor for Visual Studio" rel="nofollow" href="https://marketplace.visualstudio.com/items?itemName=mhutch.MSBuildEditor">MSBuild Editor for Visual Studio</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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&#39;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.</p>

<h3>Takeaways</h3>

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

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Weather</li>
<li>00:20 Introduction to MSBuild</li>
<li>01:12 Acquiring Taste for MSBuild</li>
<li>03:17 Slim CS Proj</li>
<li>04:03 Structure of New Project Files</li>
<li>05:12 Default Maui Project Template</li>
<li>06:36 Using CS Proj for NuGet Packages</li>
<li>07:56 Benefits of Using CS Proj for CI</li>
<li>08:26 Customizing Project Files for Platform-Specific Assets</li>
<li>09:53 Leveraging MSBuild for Customization</li>
<li>10:57 Command Line vs. CS Proj</li>
<li>11:33 Importing Files and Directory Build Props</li>
<li>12:37 Multiple SDK Imports</li>
<li>13:15 Properties and Item Groups in Project Files</li>
<li>14:05 Conditions in Project Files</li>
<li>19:48 Rationale for Different SDKs</li>
<li>22:19 Directory Build Props for Performance</li>
<li>24:07 Workloads and SDK Imports</li>
<li>26:17 Future of Workloads</li>
<li>29:08 Challenges with Workloads</li>
<li>31:09 MSBuild and Workloads</li>
<li>32:03 Importing MSBuild from NuGet Packages</li>
<li>33:12 Custom Entitlements and Build Props</li>
<li>34:09 Building Custom Entitlements</li>
<li>36:29 Adding Items to Build from NuGet Packages</li>
<li>37:38 Automatically Making Apps Work with Libraries</li>
<li>38:36 Customizing Build Props and Targets</li>
<li>39:40 Doing Build-Related Tasks in MSBuild</li>
<li>42:10 Writing Custom MSBuild Tasks</li>
<li>44:23 Using Custom Tasks and Source Generators</li>
<li>46:19 Incremental Source Generation</li>
<li>49:46 Michaela&#39;s MSBuild Editor Extension</li>
<li>56:19 Getting Started with MSBuild</li>
</ul><p>Links:</p><ul><li><a title="MSBuild Editor for Visual Studio" rel="nofollow" href="https://marketplace.visualstudio.com/items?itemName=mhutch.MSBuildEditor">MSBuild Editor for Visual Studio</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>101: Slim Bindings</title>
  <link>https://www.gonedotnet.io/101</link>
  <guid isPermaLink="false">0823b9b3-dfd6-4315-a138-6c186bc128c0</guid>
  <pubDate>Thu, 04 Apr 2024 10:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/0823b9b3-dfd6-4315-a138-6c186bc128c0.mp3" length="69964002" type="audio/mpeg"/>
  <itunes:episode>101</itunes:episode>
  <itunes:title>Slim Bindings</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Slim? Focused? Call them what you want, but we think this is a nice way to integrate native libraries on iOS (and android too) into your .NET MAUI app!</itunes:subtitle>
  <itunes:duration>52:12</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss the concept of slim bindings and their benefits. They explore the challenges of working with full bindings and the need for a more focused approach. The conversation centers around their experience with creating slim bindings for Firebase and other complex controls. They also touch on the difficulties of updating full bindings and the importance of understanding the API being consumed. The episode concludes with a discussion on the role of Sharpie in binding generation and the challenges of dependency management. In this episode, Jon and Allan discuss the challenges and possibilities of Swift interop with .NET and the ongoing work to make Swift interop possible with .NET. They also delve into the differences between Android and iOS bindings, including the ease of Android bindings and the challenges of Kotlin and generics. They explore the AndroidX library and the complexities of dependency management. The conversation concludes with a discussion on community efforts for bindings and the benefits of slim bindings.
Takeaways
Slim bindings offer a more focused and simplified approach to working with complex controls and APIs.
Creating slim bindings requires a deep understanding of the API being consumed and the ability to map it to the target language.
Full bindings can be challenging to update, especially when there are major changes between versions of the API.
Dependency management can be complex, and colliding dependencies can cause issues in the binding process.
The goal is to make binding generation repeatable and provide patterns and examples for popular libraries to simplify the process for developers. Swift interop with .NET is being actively worked on, making it easier to generate bindings and interop code.
Android bindings can be easier than iOS bindings, but Kotlin and generics present challenges.
AndroidX library and dependency management can be complex, but slim bindings can simplify the process.
Binding at the bytecode level in Kotlin can be tricky, but slim bindings provide a workaround.
Community efforts are underway to create and maintain bindings for various libraries and frameworks.
Slim bindings offer a focused and simplified approach to binding native libraries.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Setting the Stage
02:25 Understanding Slim Bindings
04:15 Working on Firebase Bindings
06:16 Challenges with Package Managers
09:12 Creating Slim Bindings for Complex Controls
11:40 The Difficulty of Updating Full Bindings
14:27 The Value of Slim Bindings
19:06 The Role of Sharpie in Binding Generation
21:14 Making Binding Generation Repeatable
22:42 Avoiding Duplicated Dependencies
24:21 Challenges with Dependency Management
25:17 Dealing with Colliding Dependencies
25:44 Swift Interop with .NET
28:10 Android and Kotlin Bindings
30:23 Challenges with Kotlin and Generics
32:23 AndroidX and Dependency Management
39:12 Binding at the Bytecode Level
46:39 Community Efforts for Bindings
47:26 Upcoming Bindings and Slim Bindings
</description>
  <itunes:keywords>dotnet, dotnet-maui</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss the concept of slim bindings and their benefits. They explore the challenges of working with full bindings and the need for a more focused approach. The conversation centers around their experience with creating slim bindings for Firebase and other complex controls. They also touch on the difficulties of updating full bindings and the importance of understanding the API being consumed. The episode concludes with a discussion on the role of Sharpie in binding generation and the challenges of dependency management. In this episode, Jon and Allan discuss the challenges and possibilities of Swift interop with .NET and the ongoing work to make Swift interop possible with .NET. They also delve into the differences between Android and iOS bindings, including the ease of Android bindings and the challenges of Kotlin and generics. They explore the AndroidX library and the complexities of dependency management. The conversation concludes with a discussion on community efforts for bindings and the benefits of slim bindings.</p>

<h3>Takeaways</h3>

<ul>
<li>Slim bindings offer a more focused and simplified approach to working with complex controls and APIs.</li>
<li>Creating slim bindings requires a deep understanding of the API being consumed and the ability to map it to the target language.</li>
<li>Full bindings can be challenging to update, especially when there are major changes between versions of the API.</li>
<li>Dependency management can be complex, and colliding dependencies can cause issues in the binding process.</li>
<li>The goal is to make binding generation repeatable and provide patterns and examples for popular libraries to simplify the process for developers. Swift interop with .NET is being actively worked on, making it easier to generate bindings and interop code.</li>
<li>Android bindings can be easier than iOS bindings, but Kotlin and generics present challenges.</li>
<li>AndroidX library and dependency management can be complex, but slim bindings can simplify the process.</li>
<li>Binding at the bytecode level in Kotlin can be tricky, but slim bindings provide a workaround.</li>
<li>Community efforts are underway to create and maintain bindings for various libraries and frameworks.</li>
<li>Slim bindings offer a focused and simplified approach to binding native libraries.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Setting the Stage</li>
<li>02:25 Understanding Slim Bindings</li>
<li>04:15 Working on Firebase Bindings</li>
<li>06:16 Challenges with Package Managers</li>
<li>09:12 Creating Slim Bindings for Complex Controls</li>
<li>11:40 The Difficulty of Updating Full Bindings</li>
<li>14:27 The Value of Slim Bindings</li>
<li>19:06 The Role of Sharpie in Binding Generation</li>
<li>21:14 Making Binding Generation Repeatable</li>
<li>22:42 Avoiding Duplicated Dependencies</li>
<li>24:21 Challenges with Dependency Management</li>
<li>25:17 Dealing with Colliding Dependencies</li>
<li>25:44 Swift Interop with .NET</li>
<li>28:10 Android and Kotlin Bindings</li>
<li>30:23 Challenges with Kotlin and Generics</li>
<li>32:23 AndroidX and Dependency Management</li>
<li>39:12 Binding at the Bytecode Level</li>
<li>46:39 Community Efforts for Bindings</li>
<li>47:26 Upcoming Bindings and Slim Bindings</li>
</ul><p>Links:</p><ul><li><a title="Plugin Firebase" rel="nofollow" href="https://github.com/TobiasBuchholz/Plugin.Firebase">Plugin Firebase</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss the concept of slim bindings and their benefits. They explore the challenges of working with full bindings and the need for a more focused approach. The conversation centers around their experience with creating slim bindings for Firebase and other complex controls. They also touch on the difficulties of updating full bindings and the importance of understanding the API being consumed. The episode concludes with a discussion on the role of Sharpie in binding generation and the challenges of dependency management. In this episode, Jon and Allan discuss the challenges and possibilities of Swift interop with .NET and the ongoing work to make Swift interop possible with .NET. They also delve into the differences between Android and iOS bindings, including the ease of Android bindings and the challenges of Kotlin and generics. They explore the AndroidX library and the complexities of dependency management. The conversation concludes with a discussion on community efforts for bindings and the benefits of slim bindings.</p>

<h3>Takeaways</h3>

<ul>
<li>Slim bindings offer a more focused and simplified approach to working with complex controls and APIs.</li>
<li>Creating slim bindings requires a deep understanding of the API being consumed and the ability to map it to the target language.</li>
<li>Full bindings can be challenging to update, especially when there are major changes between versions of the API.</li>
<li>Dependency management can be complex, and colliding dependencies can cause issues in the binding process.</li>
<li>The goal is to make binding generation repeatable and provide patterns and examples for popular libraries to simplify the process for developers. Swift interop with .NET is being actively worked on, making it easier to generate bindings and interop code.</li>
<li>Android bindings can be easier than iOS bindings, but Kotlin and generics present challenges.</li>
<li>AndroidX library and dependency management can be complex, but slim bindings can simplify the process.</li>
<li>Binding at the bytecode level in Kotlin can be tricky, but slim bindings provide a workaround.</li>
<li>Community efforts are underway to create and maintain bindings for various libraries and frameworks.</li>
<li>Slim bindings offer a focused and simplified approach to binding native libraries.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Setting the Stage</li>
<li>02:25 Understanding Slim Bindings</li>
<li>04:15 Working on Firebase Bindings</li>
<li>06:16 Challenges with Package Managers</li>
<li>09:12 Creating Slim Bindings for Complex Controls</li>
<li>11:40 The Difficulty of Updating Full Bindings</li>
<li>14:27 The Value of Slim Bindings</li>
<li>19:06 The Role of Sharpie in Binding Generation</li>
<li>21:14 Making Binding Generation Repeatable</li>
<li>22:42 Avoiding Duplicated Dependencies</li>
<li>24:21 Challenges with Dependency Management</li>
<li>25:17 Dealing with Colliding Dependencies</li>
<li>25:44 Swift Interop with .NET</li>
<li>28:10 Android and Kotlin Bindings</li>
<li>30:23 Challenges with Kotlin and Generics</li>
<li>32:23 AndroidX and Dependency Management</li>
<li>39:12 Binding at the Bytecode Level</li>
<li>46:39 Community Efforts for Bindings</li>
<li>47:26 Upcoming Bindings and Slim Bindings</li>
</ul><p>Links:</p><ul><li><a title="Plugin Firebase" rel="nofollow" href="https://github.com/TobiasBuchholz/Plugin.Firebase">Plugin Firebase</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>100: 100th Episode Celebration with David &amp; Maddy!</title>
  <link>https://www.gonedotnet.io/100</link>
  <guid isPermaLink="false">17db87fc-17ef-4982-86fa-c195caeb3c20</guid>
  <pubDate>Fri, 29 Mar 2024 10:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/17db87fc-17ef-4982-86fa-c195caeb3c20.mp3" length="71950578" type="audio/mpeg"/>
  <itunes:episode>100</itunes:episode>
  <itunes:title>100th Episode Celebration with David &amp; Maddy!</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Special guests Maddy Montaquila and David Ortinau join us on this very special 100th episode of the podcast to talk about past, present, and future of Xamarin and .NET MAUI</itunes:subtitle>
  <itunes:duration>1:07:06</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, the hosts celebrate the 100th episode of the podcast and engage in a casual conversation about various topics related to Xamarin and .NET MAUI. They introduce themselves and discuss their roles as product managers. The conversation covers the early days of Xamarin, the transition to .NET and mobile development, and the evolution of mobile development over the years. They also talk about the transition to Microsoft and the use of Microsoft tools. The episode concludes with a discussion about geographical locations and some trivia. The conversation covers the journey and challenges of.NET MAUI, including its adoption and success. It also explores the lessons learned and the importance of architecture and migration. The speakers reflect on the evolution of Xamarin and.NET MAUI and provide feedback and assessment of the current state of the project. In this episode, the hosts discuss various topics related to Maui and its tooling. They talk about the success of Maui and ports, the importance of reflecting on code and engineering, and the desired features in Maui. They also discuss the need for better tooling and templates, visualizing app navigation and image assets, and improving the shell and view model lifecycle. The hosts express their appreciation for the positive community and the engineering team. The episode concludes with a celebration of the 100th episode of the podcast.
Takeaways
The hosts celebrate the 100th episode of the podcast and engage in a casual conversation about Xamarin and .NET MAUI.
They discuss their roles as product managers and their experiences with Xamarin and mobile development.
The conversation covers the early days of Xamarin, the transition to .NET and mobile development, and the evolution of mobile development over the years.
They also talk about the transition to Microsoft and the use of Microsoft tools, as well as their geographical locations and some trivia. The adoption of.NET MAUI has been steadily growing, with an increasing number of apps being developed using the framework.
Customer satisfaction and success stories are important indicators of the impact of.NET MAUI.
The journey of.NET MAUI has had its challenges, including delays and technical issues, but the team has been working hard to address them.
Lessons learned include the need for careful planning and evaluation of architectural decisions, as well as the importance of prioritizing tech debt and considering the impact on existing codebases during migration.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Episode 100 Celebration
01:00 Introductions
01:19 Background and Roles
03:09 Early Days of Xamarin
06:05 Transition to .NET and Mobile Development
06:32 Evolution of Mobile Development
09:30 Transition to Microsoft and Remote Work
11:43 Transition to Microsoft Tools
12:15 Transition to Microsoft Tools (contd.)
13:06 Transition to Microsoft Tools (contd.)
15:11 Transition to Remote Work
16:24 Geographical Locations and Trivia
18:06 The Journey of.NET MAUI
19:10 Shipping.NET MAUI
20:30 Adoption and Success of.NET MAUI
22:20 Customer Impact and Satisfaction
23:25 Challenges and Obstacles Faced
25:40 Lessons Learned
28:16 The Evolution of Xamarin and.NET MAUI
31:17 Reflections on the Journey
39:55 The Importance of Architecture and Migration
43:37 Feedback and Assessment
43:56 Success with Maui and Ports
45:19 Reflecting on Code and Engineering
46:39 Desired Features in Maui
49:08 Tooling and Templates in Maui
50:32 Visualizing App Navigation and Image Assets
56:10 Improving Shell and View Model Lifecycle
01:00:01 Enjoying the Outdoors and Positive Community
01:02:57 Appreciating the Engineering Team and Community
01:05:30 Conclusion and Episode 100 Celebration
Special Guests: David Ortinau and Maddy Montaquila.
</description>
  <itunes:keywords>dotnet, dotnet-maui, xamarin, mono, monotouch, monodroid, web, migration</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, the hosts celebrate the 100th episode of the podcast and engage in a casual conversation about various topics related to Xamarin and .NET MAUI. They introduce themselves and discuss their roles as product managers. The conversation covers the early days of Xamarin, the transition to .NET and mobile development, and the evolution of mobile development over the years. They also talk about the transition to Microsoft and the use of Microsoft tools. The episode concludes with a discussion about geographical locations and some trivia. The conversation covers the journey and challenges of.NET MAUI, including its adoption and success. It also explores the lessons learned and the importance of architecture and migration. The speakers reflect on the evolution of Xamarin and.NET MAUI and provide feedback and assessment of the current state of the project. In this episode, the hosts discuss various topics related to Maui and its tooling. They talk about the success of Maui and ports, the importance of reflecting on code and engineering, and the desired features in Maui. They also discuss the need for better tooling and templates, visualizing app navigation and image assets, and improving the shell and view model lifecycle. The hosts express their appreciation for the positive community and the engineering team. The episode concludes with a celebration of the 100th episode of the podcast.</p>

<h3>Takeaways</h3>

<ul>
<li>The hosts celebrate the 100th episode of the podcast and engage in a casual conversation about Xamarin and .NET MAUI.</li>
<li>They discuss their roles as product managers and their experiences with Xamarin and mobile development.</li>
<li>The conversation covers the early days of Xamarin, the transition to .NET and mobile development, and the evolution of mobile development over the years.</li>
<li>They also talk about the transition to Microsoft and the use of Microsoft tools, as well as their geographical locations and some trivia. The adoption of.NET MAUI has been steadily growing, with an increasing number of apps being developed using the framework.</li>
<li>Customer satisfaction and success stories are important indicators of the impact of.NET MAUI.</li>
<li>The journey of.NET MAUI has had its challenges, including delays and technical issues, but the team has been working hard to address them.</li>
<li>Lessons learned include the need for careful planning and evaluation of architectural decisions, as well as the importance of prioritizing tech debt and considering the impact on existing codebases during migration.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Episode 100 Celebration</li>
<li>01:00 Introductions</li>
<li>01:19 Background and Roles</li>
<li>03:09 Early Days of Xamarin</li>
<li>06:05 Transition to .NET and Mobile Development</li>
<li>06:32 Evolution of Mobile Development</li>
<li>09:30 Transition to Microsoft and Remote Work</li>
<li>11:43 Transition to Microsoft Tools</li>
<li>12:15 Transition to Microsoft Tools (contd.)</li>
<li>13:06 Transition to Microsoft Tools (contd.)</li>
<li>15:11 Transition to Remote Work</li>
<li>16:24 Geographical Locations and Trivia</li>
<li>18:06 The Journey of.NET MAUI</li>
<li>19:10 Shipping.NET MAUI</li>
<li>20:30 Adoption and Success of.NET MAUI</li>
<li>22:20 Customer Impact and Satisfaction</li>
<li>23:25 Challenges and Obstacles Faced</li>
<li>25:40 Lessons Learned</li>
<li>28:16 The Evolution of Xamarin and.NET MAUI</li>
<li>31:17 Reflections on the Journey</li>
<li>39:55 The Importance of Architecture and Migration</li>
<li>43:37 Feedback and Assessment</li>
<li>43:56 Success with Maui and Ports</li>
<li>45:19 Reflecting on Code and Engineering</li>
<li>46:39 Desired Features in Maui</li>
<li>49:08 Tooling and Templates in Maui</li>
<li>50:32 Visualizing App Navigation and Image Assets</li>
<li>56:10 Improving Shell and View Model Lifecycle</li>
<li>01:00:01 Enjoying the Outdoors and Positive Community</li>
<li>01:02:57 Appreciating the Engineering Team and Community</li>
<li>01:05:30 Conclusion and Episode 100 Celebration</li>
</ul><p>Special Guests: David Ortinau and Maddy Montaquila.</p><p>Links:</p><ul><li><a title=".NET MAUI" rel="nofollow" href="https://github.com/dotnet/maui">.NET MAUI</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, the hosts celebrate the 100th episode of the podcast and engage in a casual conversation about various topics related to Xamarin and .NET MAUI. They introduce themselves and discuss their roles as product managers. The conversation covers the early days of Xamarin, the transition to .NET and mobile development, and the evolution of mobile development over the years. They also talk about the transition to Microsoft and the use of Microsoft tools. The episode concludes with a discussion about geographical locations and some trivia. The conversation covers the journey and challenges of.NET MAUI, including its adoption and success. It also explores the lessons learned and the importance of architecture and migration. The speakers reflect on the evolution of Xamarin and.NET MAUI and provide feedback and assessment of the current state of the project. In this episode, the hosts discuss various topics related to Maui and its tooling. They talk about the success of Maui and ports, the importance of reflecting on code and engineering, and the desired features in Maui. They also discuss the need for better tooling and templates, visualizing app navigation and image assets, and improving the shell and view model lifecycle. The hosts express their appreciation for the positive community and the engineering team. The episode concludes with a celebration of the 100th episode of the podcast.</p>

<h3>Takeaways</h3>

<ul>
<li>The hosts celebrate the 100th episode of the podcast and engage in a casual conversation about Xamarin and .NET MAUI.</li>
<li>They discuss their roles as product managers and their experiences with Xamarin and mobile development.</li>
<li>The conversation covers the early days of Xamarin, the transition to .NET and mobile development, and the evolution of mobile development over the years.</li>
<li>They also talk about the transition to Microsoft and the use of Microsoft tools, as well as their geographical locations and some trivia. The adoption of.NET MAUI has been steadily growing, with an increasing number of apps being developed using the framework.</li>
<li>Customer satisfaction and success stories are important indicators of the impact of.NET MAUI.</li>
<li>The journey of.NET MAUI has had its challenges, including delays and technical issues, but the team has been working hard to address them.</li>
<li>Lessons learned include the need for careful planning and evaluation of architectural decisions, as well as the importance of prioritizing tech debt and considering the impact on existing codebases during migration.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Episode 100 Celebration</li>
<li>01:00 Introductions</li>
<li>01:19 Background and Roles</li>
<li>03:09 Early Days of Xamarin</li>
<li>06:05 Transition to .NET and Mobile Development</li>
<li>06:32 Evolution of Mobile Development</li>
<li>09:30 Transition to Microsoft and Remote Work</li>
<li>11:43 Transition to Microsoft Tools</li>
<li>12:15 Transition to Microsoft Tools (contd.)</li>
<li>13:06 Transition to Microsoft Tools (contd.)</li>
<li>15:11 Transition to Remote Work</li>
<li>16:24 Geographical Locations and Trivia</li>
<li>18:06 The Journey of.NET MAUI</li>
<li>19:10 Shipping.NET MAUI</li>
<li>20:30 Adoption and Success of.NET MAUI</li>
<li>22:20 Customer Impact and Satisfaction</li>
<li>23:25 Challenges and Obstacles Faced</li>
<li>25:40 Lessons Learned</li>
<li>28:16 The Evolution of Xamarin and.NET MAUI</li>
<li>31:17 Reflections on the Journey</li>
<li>39:55 The Importance of Architecture and Migration</li>
<li>43:37 Feedback and Assessment</li>
<li>43:56 Success with Maui and Ports</li>
<li>45:19 Reflecting on Code and Engineering</li>
<li>46:39 Desired Features in Maui</li>
<li>49:08 Tooling and Templates in Maui</li>
<li>50:32 Visualizing App Navigation and Image Assets</li>
<li>56:10 Improving Shell and View Model Lifecycle</li>
<li>01:00:01 Enjoying the Outdoors and Positive Community</li>
<li>01:02:57 Appreciating the Engineering Team and Community</li>
<li>01:05:30 Conclusion and Episode 100 Celebration</li>
</ul><p>Special Guests: David Ortinau and Maddy Montaquila.</p><p>Links:</p><ul><li><a title=".NET MAUI" rel="nofollow" href="https://github.com/dotnet/maui">.NET MAUI</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>99: Architecting Plugins and Frameworks</title>
  <link>https://www.gonedotnet.io/99</link>
  <guid isPermaLink="false">f9177f8a-0b61-4b16-9681-f7945d9bb288</guid>
  <pubDate>Fri, 22 Mar 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/f9177f8a-0b61-4b16-9681-f7945d9bb288.mp3" length="96525849" type="audio/mpeg"/>
  <itunes:episode>99</itunes:episode>
  <itunes:title>Architecting Plugins and Frameworks</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>What does it take to build a plugin / framework / nuget /library, and why do we keep building them?</itunes:subtitle>
  <itunes:duration>1:18:28</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss various topics related to creating and maintaining libraries and NuGet packages. They talk about their experiences with plugin libraries and the importance of supporting open source developers. They also touch on the challenges of avoiding vendor and framework lock-in. Overall, the conversation highlights the value of community-driven development and the need for collaboration and appreciation in the open source world.  The conversation explores the process of creating libraries and plugins for cross-platform development. It delves into the challenges of balancing dependencies and code size, as well as the evolution of library development over time. The role of Microsoft Extensions and dependency injection in library development is also discussed. The conversation concludes with a discussion on the improvements in Maui and the use of Microsoft Extensions and DI in the framework. This part of the conversation explores the importance of familiar patterns and dependency injection in Xamarin development. It discusses the trade-off between performance and app size, as well as the challenges of implementing dependency injection in Xamarin.Forms. The conversation also touches on the growth of plugins in the Xamarin ecosystem and the controversy surrounding Reactive Extensions (RX). The creation of Xamarin Essentials and its goal of pleasing the majority of developers is highlighted, along with the focus on testability in Shiny. The chapter concludes with a discussion on the trade-off between performance and interfaces. In this conversation, Jon and Allan discuss various topics related to open source development, including generating interfaces and wrappers, elevating to platform API level, simplifying abstractions, creating custom implementations, using files and folders for caching, managing GitHub repos and libraries, forking and cloning repos, cleaning repos and business continuity, and appreciating open source contributors.
Takeaways
Support open source developers and be kind to them.
Avoid vendor and framework lock-in by creating your own libraries and packages.
Collaboration and community-driven development are essential in the open source world.
Maintaining and updating libraries and plugins requires ongoing effort and dedication.
Creating libraries and plugins for cross-platform development requires careful consideration of dependencies and code size.
The evolution of library development has led to a more streamlined and accessible process.
Microsoft Extensions and dependency injection play a significant role in library development.
Maui offers improvements in lifecycle management and the use of Microsoft Extensions and DI. Familiar patterns and dependency injection provide comfort and ease of use for Xamarin developers.
Balancing performance and app size is a challenge in mobile development.
Plugins play a significant role in extending the functionality of Xamarin applications.
Xamarin Essentials aims to provide essential functionality out of the box for Xamarin developers.
Testability is an important consideration in the design of Xamarin libraries. Consider generating interfaces and wrappers to simplify the usage of platform APIs.
Elevate your code to the platform API level and avoid unnecessary abstractions.
When creating custom implementations, focus on the core business logic and avoid abstracting unnecessary details.
Use files and folders for caching data, as it can be a simple and effective solution.
When managing GitHub repos and libraries, consider using a template for consistent setup.
Clone and fork repos to ensure business continuity and avoid dependencies on external sources.
Appreciate and support open source contributors by providing constructive feedback and contributing back to the community.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Episode 100
00:21 Discussion about Dad Shoes
01:37 Number of Episodes Together
03:03 Discussion about Plugin Libraries
03:45 Continued Support for Native Libraries
04:08 MVVM Cross and Native App Code
05:13 Be Nice to Open Source Developers
06:05 Creating Libraries and NuGet Packages
07:15 MVVM Cross Plugin Ecosystem
07:27 Avoiding Vendor Lock-in
08:01 Discussion about Framework Lock-in
08:38 Creating the Push Notification App
11:53 Building Libraries and Plugins
14:02 The Evolution of Library Development
16:09 Approaching Cross-Platform Development
19:04 Balancing Dependencies and Code Size
22:36 The Role of Microsoft Extensions
29:10 Improvements in Maui
31:59 Using Microsoft Extensions and DI
32:36 Comfortable Patterns and Familiarity
33:11 The Importance of Dependency Injection
33:40 Balancing Performance and App Size
35:09 The Need for Infrastructure and Rapid Application Development
35:38 The Challenges of Dependency Injection in Xamarin.Forms
36:59 The Trade-off Between Startup Time and Competitiveness
37:55 The Importance of Simple and Easy-to-Use Plugins
38:48 The Benefits of Boilerplate Code in Maui
40:06 The Growth of Plugins in the Xamarin Ecosystem
40:55 The Term 'Plugin' and its Usage
41:53 The Xamarin Component Store
42:47 The Challenges of Selling Components
44:41 Starting with the Interface and Adapting to Platforms
46:47 Designing for Simplicity and Usefulness
48:05 The Controversy of Reactive Extensions (RX)
48:44 The Origins of Xamarin Essentials
51:42 The Goal of Xamarin Essentials: Pleasing the Majority
53:59 The Original Code Name for Xamarin Essentials
55:06 The Focus on Testability in Shiny
55:42 The Trade-off Between Performance and Interfaces
56:31 Generating Interfaces and Wrappers
56:47 Elevating to Platform API Level
57:46 Simplifying Abstractions
58:46 Creating Custom Implementations
59:42 Wrapping Essentials Interfaces
01:00:57 Using Files and Folders for Caching
01:03:57 Managing GitHub Repos and Libraries
01:05:14 Template for Repo Setup
01:05:44 Forking and Cloning Repos
01:07:07 Cleaning Repos and Business Continuity
01:08:14 Supporting Open Source Projects
01:12:21 Appreciating Open Source Contributors
</description>
  <itunes:keywords>dotnet, dotnet-maui, shiny, zxing, maui, plugin, library, essentials, xamarin, oss</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss various topics related to creating and maintaining libraries and NuGet packages. They talk about their experiences with plugin libraries and the importance of supporting open source developers. They also touch on the challenges of avoiding vendor and framework lock-in. Overall, the conversation highlights the value of community-driven development and the need for collaboration and appreciation in the open source world.  The conversation explores the process of creating libraries and plugins for cross-platform development. It delves into the challenges of balancing dependencies and code size, as well as the evolution of library development over time. The role of Microsoft Extensions and dependency injection in library development is also discussed. The conversation concludes with a discussion on the improvements in Maui and the use of Microsoft Extensions and DI in the framework. This part of the conversation explores the importance of familiar patterns and dependency injection in Xamarin development. It discusses the trade-off between performance and app size, as well as the challenges of implementing dependency injection in Xamarin.Forms. The conversation also touches on the growth of plugins in the Xamarin ecosystem and the controversy surrounding Reactive Extensions (RX). The creation of Xamarin Essentials and its goal of pleasing the majority of developers is highlighted, along with the focus on testability in Shiny. The chapter concludes with a discussion on the trade-off between performance and interfaces. In this conversation, Jon and Allan discuss various topics related to open source development, including generating interfaces and wrappers, elevating to platform API level, simplifying abstractions, creating custom implementations, using files and folders for caching, managing GitHub repos and libraries, forking and cloning repos, cleaning repos and business continuity, and appreciating open source contributors.</p>

<h3>Takeaways</h3>

<ul>
<li>Support open source developers and be kind to them.</li>
<li>Avoid vendor and framework lock-in by creating your own libraries and packages.</li>
<li>Collaboration and community-driven development are essential in the open source world.</li>
<li>Maintaining and updating libraries and plugins requires ongoing effort and dedication.</li>
<li>Creating libraries and plugins for cross-platform development requires careful consideration of dependencies and code size.</li>
<li>The evolution of library development has led to a more streamlined and accessible process.</li>
<li>Microsoft Extensions and dependency injection play a significant role in library development.</li>
<li>Maui offers improvements in lifecycle management and the use of Microsoft Extensions and DI. Familiar patterns and dependency injection provide comfort and ease of use for Xamarin developers.</li>
<li>Balancing performance and app size is a challenge in mobile development.</li>
<li>Plugins play a significant role in extending the functionality of Xamarin applications.</li>
<li>Xamarin Essentials aims to provide essential functionality out of the box for Xamarin developers.</li>
<li>Testability is an important consideration in the design of Xamarin libraries. Consider generating interfaces and wrappers to simplify the usage of platform APIs.</li>
<li>Elevate your code to the platform API level and avoid unnecessary abstractions.</li>
<li>When creating custom implementations, focus on the core business logic and avoid abstracting unnecessary details.</li>
<li>Use files and folders for caching data, as it can be a simple and effective solution.</li>
<li>When managing GitHub repos and libraries, consider using a template for consistent setup.</li>
<li>Clone and fork repos to ensure business continuity and avoid dependencies on external sources.</li>
<li>Appreciate and support open source contributors by providing constructive feedback and contributing back to the community.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Episode 100</li>
<li>00:21 Discussion about Dad Shoes</li>
<li>01:37 Number of Episodes Together</li>
<li>03:03 Discussion about Plugin Libraries</li>
<li>03:45 Continued Support for Native Libraries</li>
<li>04:08 MVVM Cross and Native App Code</li>
<li>05:13 Be Nice to Open Source Developers</li>
<li>06:05 Creating Libraries and NuGet Packages</li>
<li>07:15 MVVM Cross Plugin Ecosystem</li>
<li>07:27 Avoiding Vendor Lock-in</li>
<li>08:01 Discussion about Framework Lock-in</li>
<li>08:38 Creating the Push Notification App</li>
<li>11:53 Building Libraries and Plugins</li>
<li>14:02 The Evolution of Library Development</li>
<li>16:09 Approaching Cross-Platform Development</li>
<li>19:04 Balancing Dependencies and Code Size</li>
<li>22:36 The Role of Microsoft Extensions</li>
<li>29:10 Improvements in Maui</li>
<li>31:59 Using Microsoft Extensions and DI</li>
<li>32:36 Comfortable Patterns and Familiarity</li>
<li>33:11 The Importance of Dependency Injection</li>
<li>33:40 Balancing Performance and App Size</li>
<li>35:09 The Need for Infrastructure and Rapid Application Development</li>
<li>35:38 The Challenges of Dependency Injection in Xamarin.Forms</li>
<li>36:59 The Trade-off Between Startup Time and Competitiveness</li>
<li>37:55 The Importance of Simple and Easy-to-Use Plugins</li>
<li>38:48 The Benefits of Boilerplate Code in Maui</li>
<li>40:06 The Growth of Plugins in the Xamarin Ecosystem</li>
<li>40:55 The Term &#39;Plugin&#39; and its Usage</li>
<li>41:53 The Xamarin Component Store</li>
<li>42:47 The Challenges of Selling Components</li>
<li>44:41 Starting with the Interface and Adapting to Platforms</li>
<li>46:47 Designing for Simplicity and Usefulness</li>
<li>48:05 The Controversy of Reactive Extensions (RX)</li>
<li>48:44 The Origins of Xamarin Essentials</li>
<li>51:42 The Goal of Xamarin Essentials: Pleasing the Majority</li>
<li>53:59 The Original Code Name for Xamarin Essentials</li>
<li>55:06 The Focus on Testability in Shiny</li>
<li>55:42 The Trade-off Between Performance and Interfaces</li>
<li>56:31 Generating Interfaces and Wrappers</li>
<li>56:47 Elevating to Platform API Level</li>
<li>57:46 Simplifying Abstractions</li>
<li>58:46 Creating Custom Implementations</li>
<li>59:42 Wrapping Essentials Interfaces</li>
<li>01:00:57 Using Files and Folders for Caching</li>
<li>01:03:57 Managing GitHub Repos and Libraries</li>
<li>01:05:14 Template for Repo Setup</li>
<li>01:05:44 Forking and Cloning Repos</li>
<li>01:07:07 Cleaning Repos and Business Continuity</li>
<li>01:08:14 Supporting Open Source Projects</li>
<li>01:12:21 Appreciating Open Source Contributors</li>
</ul><p>Links:</p><ul><li><a title="Create Your Own .NET MAUI Plugins with This Template" rel="nofollow" href="https://blog.verslu.is/maui/create-dotnet-maui-plugin/">Create Your Own .NET MAUI Plugins with This Template</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss various topics related to creating and maintaining libraries and NuGet packages. They talk about their experiences with plugin libraries and the importance of supporting open source developers. They also touch on the challenges of avoiding vendor and framework lock-in. Overall, the conversation highlights the value of community-driven development and the need for collaboration and appreciation in the open source world.  The conversation explores the process of creating libraries and plugins for cross-platform development. It delves into the challenges of balancing dependencies and code size, as well as the evolution of library development over time. The role of Microsoft Extensions and dependency injection in library development is also discussed. The conversation concludes with a discussion on the improvements in Maui and the use of Microsoft Extensions and DI in the framework. This part of the conversation explores the importance of familiar patterns and dependency injection in Xamarin development. It discusses the trade-off between performance and app size, as well as the challenges of implementing dependency injection in Xamarin.Forms. The conversation also touches on the growth of plugins in the Xamarin ecosystem and the controversy surrounding Reactive Extensions (RX). The creation of Xamarin Essentials and its goal of pleasing the majority of developers is highlighted, along with the focus on testability in Shiny. The chapter concludes with a discussion on the trade-off between performance and interfaces. In this conversation, Jon and Allan discuss various topics related to open source development, including generating interfaces and wrappers, elevating to platform API level, simplifying abstractions, creating custom implementations, using files and folders for caching, managing GitHub repos and libraries, forking and cloning repos, cleaning repos and business continuity, and appreciating open source contributors.</p>

<h3>Takeaways</h3>

<ul>
<li>Support open source developers and be kind to them.</li>
<li>Avoid vendor and framework lock-in by creating your own libraries and packages.</li>
<li>Collaboration and community-driven development are essential in the open source world.</li>
<li>Maintaining and updating libraries and plugins requires ongoing effort and dedication.</li>
<li>Creating libraries and plugins for cross-platform development requires careful consideration of dependencies and code size.</li>
<li>The evolution of library development has led to a more streamlined and accessible process.</li>
<li>Microsoft Extensions and dependency injection play a significant role in library development.</li>
<li>Maui offers improvements in lifecycle management and the use of Microsoft Extensions and DI. Familiar patterns and dependency injection provide comfort and ease of use for Xamarin developers.</li>
<li>Balancing performance and app size is a challenge in mobile development.</li>
<li>Plugins play a significant role in extending the functionality of Xamarin applications.</li>
<li>Xamarin Essentials aims to provide essential functionality out of the box for Xamarin developers.</li>
<li>Testability is an important consideration in the design of Xamarin libraries. Consider generating interfaces and wrappers to simplify the usage of platform APIs.</li>
<li>Elevate your code to the platform API level and avoid unnecessary abstractions.</li>
<li>When creating custom implementations, focus on the core business logic and avoid abstracting unnecessary details.</li>
<li>Use files and folders for caching data, as it can be a simple and effective solution.</li>
<li>When managing GitHub repos and libraries, consider using a template for consistent setup.</li>
<li>Clone and fork repos to ensure business continuity and avoid dependencies on external sources.</li>
<li>Appreciate and support open source contributors by providing constructive feedback and contributing back to the community.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Episode 100</li>
<li>00:21 Discussion about Dad Shoes</li>
<li>01:37 Number of Episodes Together</li>
<li>03:03 Discussion about Plugin Libraries</li>
<li>03:45 Continued Support for Native Libraries</li>
<li>04:08 MVVM Cross and Native App Code</li>
<li>05:13 Be Nice to Open Source Developers</li>
<li>06:05 Creating Libraries and NuGet Packages</li>
<li>07:15 MVVM Cross Plugin Ecosystem</li>
<li>07:27 Avoiding Vendor Lock-in</li>
<li>08:01 Discussion about Framework Lock-in</li>
<li>08:38 Creating the Push Notification App</li>
<li>11:53 Building Libraries and Plugins</li>
<li>14:02 The Evolution of Library Development</li>
<li>16:09 Approaching Cross-Platform Development</li>
<li>19:04 Balancing Dependencies and Code Size</li>
<li>22:36 The Role of Microsoft Extensions</li>
<li>29:10 Improvements in Maui</li>
<li>31:59 Using Microsoft Extensions and DI</li>
<li>32:36 Comfortable Patterns and Familiarity</li>
<li>33:11 The Importance of Dependency Injection</li>
<li>33:40 Balancing Performance and App Size</li>
<li>35:09 The Need for Infrastructure and Rapid Application Development</li>
<li>35:38 The Challenges of Dependency Injection in Xamarin.Forms</li>
<li>36:59 The Trade-off Between Startup Time and Competitiveness</li>
<li>37:55 The Importance of Simple and Easy-to-Use Plugins</li>
<li>38:48 The Benefits of Boilerplate Code in Maui</li>
<li>40:06 The Growth of Plugins in the Xamarin Ecosystem</li>
<li>40:55 The Term &#39;Plugin&#39; and its Usage</li>
<li>41:53 The Xamarin Component Store</li>
<li>42:47 The Challenges of Selling Components</li>
<li>44:41 Starting with the Interface and Adapting to Platforms</li>
<li>46:47 Designing for Simplicity and Usefulness</li>
<li>48:05 The Controversy of Reactive Extensions (RX)</li>
<li>48:44 The Origins of Xamarin Essentials</li>
<li>51:42 The Goal of Xamarin Essentials: Pleasing the Majority</li>
<li>53:59 The Original Code Name for Xamarin Essentials</li>
<li>55:06 The Focus on Testability in Shiny</li>
<li>55:42 The Trade-off Between Performance and Interfaces</li>
<li>56:31 Generating Interfaces and Wrappers</li>
<li>56:47 Elevating to Platform API Level</li>
<li>57:46 Simplifying Abstractions</li>
<li>58:46 Creating Custom Implementations</li>
<li>59:42 Wrapping Essentials Interfaces</li>
<li>01:00:57 Using Files and Folders for Caching</li>
<li>01:03:57 Managing GitHub Repos and Libraries</li>
<li>01:05:14 Template for Repo Setup</li>
<li>01:05:44 Forking and Cloning Repos</li>
<li>01:07:07 Cleaning Repos and Business Continuity</li>
<li>01:08:14 Supporting Open Source Projects</li>
<li>01:12:21 Appreciating Open Source Contributors</li>
</ul><p>Links:</p><ul><li><a title="Create Your Own .NET MAUI Plugins with This Template" rel="nofollow" href="https://blog.verslu.is/maui/create-dotnet-maui-plugin/">Create Your Own .NET MAUI Plugins with This Template</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>98: MAUI Blazor Hybrid Apps</title>
  <link>https://www.gonedotnet.io/98</link>
  <guid isPermaLink="false">70636311-5b54-4d30-9df6-543de10d9f24</guid>
  <pubDate>Fri, 15 Mar 2024 12:00:00 -0400</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/70636311-5b54-4d30-9df6-543de10d9f24.mp3" length="63402234" type="audio/mpeg"/>
  <itunes:episode>98</itunes:episode>
  <itunes:title>MAUI Blazor Hybrid Apps</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>When a MAUI app meets a Blazor app and they like each other very much, they make a .NET MAUI Hybrid App!  We talk about what this means, the advantages, and our experiences dabbling in this area of .NET</itunes:subtitle>
  <itunes:duration>52:04</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this conversation, Jon and Allan discuss Blazor hybrid development, specifically in the context of Maui. They explore the benefits and challenges of using Blazor in a hybrid setting, including performance considerations and compatibility with different platforms. They also discuss the use of Blazor web views in Maui apps and the integration of native APIs. The conversation highlights the flexibility and potential of Blazor hybrid for building mobile apps. In this conversation, Allan Ritchie and Jon discuss the challenges of cross-platform development and the differences between Web Assembly and Maui. They also explore the use of view models in Blazor and Maui, as well as the benefits of Maui for businesses. The conversation concludes with a discussion on the slow progress of web standards and the plugin packages of the week: MudBlazor and Radzen.
Takeaways
Blazor hybrid development allows for the integration of Blazor web views in Maui apps, providing the flexibility to leverage web technologies in a native app environment.
Blazor's Razor syntax and evolving language features make it a powerful tool for building UI components, especially for forms and complex layouts.
Blazor hybrid development can offer a faster development loop and improved productivity, especially when working on UI components that are shared between web and mobile platforms.
The performance of Blazor web views in Maui apps can vary depending on the platform and the debugging environment, but overall, it can provide a reasonably good user experience. Maui hybrid apps provide a way to run code in both Web Assembly and Maui, allowing for cross-platform development.
View models in Blazor and Maui can be used to organize code and share functionality between different platforms.
Maui offers performance advantages and a native look and feel compared to web-based solutions.
Maui provides an escape route for rendering technology and opens up new hiring markets for businesses.
The slow progress of web standards can hinder the development of web apps compared to native solutions.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Small Talk
00:35 Introduction to Blazor Hybrid
01:23 Blazor Rendering Modes
02:15 Experience with Blazor Hybrid
04:21 Using Razor in Blazor
05:19 Mobile Blazor Bindings for Xamarin and Maui
06:18 Choosing Between Blazor and XAML
07:36 Using Blazor for Complex Layouts
08:39 Blazor Web Views in Maui
09:38 Benefits of Blazor Hybrid for Forms
10:22 Mixing Blazor and Native Components
11:38 Using Third-Party Control Libraries in Blazor
12:37 Improvements in Web View Performance
13:48 Comparing App Performance on Different Platforms
14:38 Preloading Blazor Content in Maui
15:12 Loading Experience in Blazor Hybrid
16:09 Debugging and Performance in Blazor Hybrid
19:57 Injecting Maui Services into Blazor Pages
21:05 Debugging Experience in Windows
22:25 Separating Blazor and Maui Projects
23:21 Using WebAssembly for Blazor
24:18 Benefits of Blazor Hybrid for Development
26:11 Choosing Between Blazor and Native App
27:28 Challenges of Cross-Platform Development
29:13 Understanding Maui Hybrid Apps
30:02 Differences Between Web Assembly and Maui
31:21 Performance and Native Look
33:08 View Models in Blazor
35:23 Using View Models in Maui
36:44 Navigation in Maui and Blazor
38:18 Naming Confusion: Maui Blazor Hybrid
39:25 Benefits of Maui for Businesses
43:29 Transitioning from Web App to Native App
45:20 The Slow Progress of Web Standards
49:45 Plugin Packages of the Week: MudBlazor and Radzen
</description>
  <itunes:keywords>dotnet, dotnet-maui, blazor, hybrid, razden, mudblazor, maui, electron, webassembly</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this conversation, Jon and Allan discuss Blazor hybrid development, specifically in the context of Maui. They explore the benefits and challenges of using Blazor in a hybrid setting, including performance considerations and compatibility with different platforms. They also discuss the use of Blazor web views in Maui apps and the integration of native APIs. The conversation highlights the flexibility and potential of Blazor hybrid for building mobile apps. In this conversation, Allan Ritchie and Jon discuss the challenges of cross-platform development and the differences between Web Assembly and Maui. They also explore the use of view models in Blazor and Maui, as well as the benefits of Maui for businesses. The conversation concludes with a discussion on the slow progress of web standards and the plugin packages of the week: MudBlazor and Radzen.</p>

<h3>Takeaways</h3>

<ul>
<li>Blazor hybrid development allows for the integration of Blazor web views in Maui apps, providing the flexibility to leverage web technologies in a native app environment.</li>
<li>Blazor&#39;s Razor syntax and evolving language features make it a powerful tool for building UI components, especially for forms and complex layouts.</li>
<li>Blazor hybrid development can offer a faster development loop and improved productivity, especially when working on UI components that are shared between web and mobile platforms.</li>
<li>The performance of Blazor web views in Maui apps can vary depending on the platform and the debugging environment, but overall, it can provide a reasonably good user experience. Maui hybrid apps provide a way to run code in both Web Assembly and Maui, allowing for cross-platform development.</li>
<li>View models in Blazor and Maui can be used to organize code and share functionality between different platforms.</li>
<li>Maui offers performance advantages and a native look and feel compared to web-based solutions.</li>
<li>Maui provides an escape route for rendering technology and opens up new hiring markets for businesses.</li>
<li>The slow progress of web standards can hinder the development of web apps compared to native solutions.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Small Talk</li>
<li>00:35 Introduction to Blazor Hybrid</li>
<li>01:23 Blazor Rendering Modes</li>
<li>02:15 Experience with Blazor Hybrid</li>
<li>04:21 Using Razor in Blazor</li>
<li>05:19 Mobile Blazor Bindings for Xamarin and Maui</li>
<li>06:18 Choosing Between Blazor and XAML</li>
<li>07:36 Using Blazor for Complex Layouts</li>
<li>08:39 Blazor Web Views in Maui</li>
<li>09:38 Benefits of Blazor Hybrid for Forms</li>
<li>10:22 Mixing Blazor and Native Components</li>
<li>11:38 Using Third-Party Control Libraries in Blazor</li>
<li>12:37 Improvements in Web View Performance</li>
<li>13:48 Comparing App Performance on Different Platforms</li>
<li>14:38 Preloading Blazor Content in Maui</li>
<li>15:12 Loading Experience in Blazor Hybrid</li>
<li>16:09 Debugging and Performance in Blazor Hybrid</li>
<li>19:57 Injecting Maui Services into Blazor Pages</li>
<li>21:05 Debugging Experience in Windows</li>
<li>22:25 Separating Blazor and Maui Projects</li>
<li>23:21 Using WebAssembly for Blazor</li>
<li>24:18 Benefits of Blazor Hybrid for Development</li>
<li>26:11 Choosing Between Blazor and Native App</li>
<li>27:28 Challenges of Cross-Platform Development</li>
<li>29:13 Understanding Maui Hybrid Apps</li>
<li>30:02 Differences Between Web Assembly and Maui</li>
<li>31:21 Performance and Native Look</li>
<li>33:08 View Models in Blazor</li>
<li>35:23 Using View Models in Maui</li>
<li>36:44 Navigation in Maui and Blazor</li>
<li>38:18 Naming Confusion: Maui Blazor Hybrid</li>
<li>39:25 Benefits of Maui for Businesses</li>
<li>43:29 Transitioning from Web App to Native App</li>
<li>45:20 The Slow Progress of Web Standards</li>
<li>49:45 Plugin Packages of the Week: MudBlazor and Radzen</li>
</ul><p>Links:</p><ul><li><a title="Radzen Blazor Components" rel="nofollow" href="https://blazor.radzen.com/">Radzen Blazor Components</a></li><li><a title="MudBlazor" rel="nofollow" href="https://www.mudblazor.com/">MudBlazor</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this conversation, Jon and Allan discuss Blazor hybrid development, specifically in the context of Maui. They explore the benefits and challenges of using Blazor in a hybrid setting, including performance considerations and compatibility with different platforms. They also discuss the use of Blazor web views in Maui apps and the integration of native APIs. The conversation highlights the flexibility and potential of Blazor hybrid for building mobile apps. In this conversation, Allan Ritchie and Jon discuss the challenges of cross-platform development and the differences between Web Assembly and Maui. They also explore the use of view models in Blazor and Maui, as well as the benefits of Maui for businesses. The conversation concludes with a discussion on the slow progress of web standards and the plugin packages of the week: MudBlazor and Radzen.</p>

<h3>Takeaways</h3>

<ul>
<li>Blazor hybrid development allows for the integration of Blazor web views in Maui apps, providing the flexibility to leverage web technologies in a native app environment.</li>
<li>Blazor&#39;s Razor syntax and evolving language features make it a powerful tool for building UI components, especially for forms and complex layouts.</li>
<li>Blazor hybrid development can offer a faster development loop and improved productivity, especially when working on UI components that are shared between web and mobile platforms.</li>
<li>The performance of Blazor web views in Maui apps can vary depending on the platform and the debugging environment, but overall, it can provide a reasonably good user experience. Maui hybrid apps provide a way to run code in both Web Assembly and Maui, allowing for cross-platform development.</li>
<li>View models in Blazor and Maui can be used to organize code and share functionality between different platforms.</li>
<li>Maui offers performance advantages and a native look and feel compared to web-based solutions.</li>
<li>Maui provides an escape route for rendering technology and opens up new hiring markets for businesses.</li>
<li>The slow progress of web standards can hinder the development of web apps compared to native solutions.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Small Talk</li>
<li>00:35 Introduction to Blazor Hybrid</li>
<li>01:23 Blazor Rendering Modes</li>
<li>02:15 Experience with Blazor Hybrid</li>
<li>04:21 Using Razor in Blazor</li>
<li>05:19 Mobile Blazor Bindings for Xamarin and Maui</li>
<li>06:18 Choosing Between Blazor and XAML</li>
<li>07:36 Using Blazor for Complex Layouts</li>
<li>08:39 Blazor Web Views in Maui</li>
<li>09:38 Benefits of Blazor Hybrid for Forms</li>
<li>10:22 Mixing Blazor and Native Components</li>
<li>11:38 Using Third-Party Control Libraries in Blazor</li>
<li>12:37 Improvements in Web View Performance</li>
<li>13:48 Comparing App Performance on Different Platforms</li>
<li>14:38 Preloading Blazor Content in Maui</li>
<li>15:12 Loading Experience in Blazor Hybrid</li>
<li>16:09 Debugging and Performance in Blazor Hybrid</li>
<li>19:57 Injecting Maui Services into Blazor Pages</li>
<li>21:05 Debugging Experience in Windows</li>
<li>22:25 Separating Blazor and Maui Projects</li>
<li>23:21 Using WebAssembly for Blazor</li>
<li>24:18 Benefits of Blazor Hybrid for Development</li>
<li>26:11 Choosing Between Blazor and Native App</li>
<li>27:28 Challenges of Cross-Platform Development</li>
<li>29:13 Understanding Maui Hybrid Apps</li>
<li>30:02 Differences Between Web Assembly and Maui</li>
<li>31:21 Performance and Native Look</li>
<li>33:08 View Models in Blazor</li>
<li>35:23 Using View Models in Maui</li>
<li>36:44 Navigation in Maui and Blazor</li>
<li>38:18 Naming Confusion: Maui Blazor Hybrid</li>
<li>39:25 Benefits of Maui for Businesses</li>
<li>43:29 Transitioning from Web App to Native App</li>
<li>45:20 The Slow Progress of Web Standards</li>
<li>49:45 Plugin Packages of the Week: MudBlazor and Radzen</li>
</ul><p>Links:</p><ul><li><a title="Radzen Blazor Components" rel="nofollow" href="https://blazor.radzen.com/">Radzen Blazor Components</a></li><li><a title="MudBlazor" rel="nofollow" href="https://www.mudblazor.com/">MudBlazor</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>97: Anatomy of the Happiest App on Earth</title>
  <link>https://www.gonedotnet.io/97</link>
  <guid isPermaLink="false">8862a41a-10da-40aa-acd8-ffd8cacfb05d</guid>
  <pubDate>Fri, 08 Mar 2024 12:30:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/8862a41a-10da-40aa-acd8-ffd8cacfb05d.mp3" length="75423210" type="audio/mpeg"/>
  <itunes:episode>97</itunes:episode>
  <itunes:title>Anatomy of the Happiest App on Earth</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>The Disney experience app is a mobile engineering marvel.  Jon and Allan take a slightly less technical conversation on the anatomy of an app and geek out over the happiest app on earth.</itunes:subtitle>
  <itunes:duration>1:08:23</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>The Disney experience app is a mobile engineering marvel.  Jon and Allan take a slightly less technical conversation on the anatomy of an app and geek out over the happiest app on earth.
In this episode, Jon and Allan discuss their recent vacations to Belize and Disney World. They dive into the features and functionality of the Disney mobile app, which allows users to book trips, manage reservations, and access various services. They highlight the seamless integration of the app with hotel check-in, mobile food ordering, and car locator features. The chapter also explores the user interface and navigation of the app, as well as the integration of Magic Bands and Apple Wallet for a convenient and magical experience. The episode concludes with a discussion on the Genie Plus and Lightning Lanes services, as well as the animated passes in Apple Wallet. Disney's attention to detail is evident in their interactive photo experiences, such as the PhotoPass and on-ride photos. The app allows users to book Lightning Lane reservations and participate in scavenger hunts, creating a seamless and engaging experience. Disney's crowd management and analytics ensure a smooth flow of visitors throughout the park. The backend infrastructure supporting these features is a marvel in itself. Overall, Disney's gamification approach enhances the park experience while providing value for the price. In this episode, Allan and Jon discuss the impressive features and functionality of the Disney mobile app. They highlight the interactive droids that react to Bluetooth events in the park and the immersive experience they provide. The conversation then delves into the magic of Disney's app, including its use of Google Maps for detailed mapping and navigation. They also explore the use of Magic Bands for child safety and the seamless integration of various features within the app. The discussion touches on the technical challenges faced by Disney and the solutions implemented to ensure a smooth user experience. The episode concludes with a summary of the main takeaways and a mention of Bluetooth plugin packages for developers interested in similar functionality.
Takeaways
The Disney mobile app offers a wide range of features and functionality to enhance the vacation experience.
The app seamlessly integrates with hotel check-in, mobile food ordering, and car locator features for a convenient and efficient experience.
The user interface and navigation of the app are well-designed, providing easy access to information and services.
The integration of Magic Bands and Apple Wallet allows for a seamless and magical experience throughout the park.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Vacation experiences: Belize and Disney
03:10 The Disney app and its features
05:01 Booking a trip and managing reservations
07:22 Hotel reservations and check-in
08:17 Mobile food ordering
09:15 Car locator feature
11:43 User interface and navigation
14:12 Magic Band and Apple Wallet integration
19:58 Express pass and Magic Band
21:29 Animated passes in Apple Wallet
24:13 Attention to Detail
25:20 PhotoPass and Cast Members
26:16 Interactive Photos
27:13 Real-Time Photo Processing
28:19 On-Ride Photos
29:29 Scavenger Hunts and App Interactions
32:46 Crowd Management and Analytics
38:24 Lightning Lanes and Ride Availability
44:41 The Backend and Infrastructure
46:05 The Gamification Experience
47:10 Interactive Droids and Bluetooth
48:09 The Magic of Disney's App
51:12 Disney's Use of Google Maps
53:18 Magic Bands and Child Safety
55:06 Technical Challenges and Solutions
59:00 Cellular Connectivity and Redundancy
01:01:42 The Marvel of Disney's Mobile App
01:04:57 Conclusion and Plugin Packages
</description>
  <itunes:keywords>dotnet, dotnet-maui</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>The Disney experience app is a mobile engineering marvel.  Jon and Allan take a slightly less technical conversation on the anatomy of an app and geek out over the happiest app on earth.</p>

<p>In this episode, Jon and Allan discuss their recent vacations to Belize and Disney World. They dive into the features and functionality of the Disney mobile app, which allows users to book trips, manage reservations, and access various services. They highlight the seamless integration of the app with hotel check-in, mobile food ordering, and car locator features. The chapter also explores the user interface and navigation of the app, as well as the integration of Magic Bands and Apple Wallet for a convenient and magical experience. The episode concludes with a discussion on the Genie Plus and Lightning Lanes services, as well as the animated passes in Apple Wallet. Disney&#39;s attention to detail is evident in their interactive photo experiences, such as the PhotoPass and on-ride photos. The app allows users to book Lightning Lane reservations and participate in scavenger hunts, creating a seamless and engaging experience. Disney&#39;s crowd management and analytics ensure a smooth flow of visitors throughout the park. The backend infrastructure supporting these features is a marvel in itself. Overall, Disney&#39;s gamification approach enhances the park experience while providing value for the price. In this episode, Allan and Jon discuss the impressive features and functionality of the Disney mobile app. They highlight the interactive droids that react to Bluetooth events in the park and the immersive experience they provide. The conversation then delves into the magic of Disney&#39;s app, including its use of Google Maps for detailed mapping and navigation. They also explore the use of Magic Bands for child safety and the seamless integration of various features within the app. The discussion touches on the technical challenges faced by Disney and the solutions implemented to ensure a smooth user experience. The episode concludes with a summary of the main takeaways and a mention of Bluetooth plugin packages for developers interested in similar functionality.</p>

<h3>Takeaways</h3>

<ul>
<li>The Disney mobile app offers a wide range of features and functionality to enhance the vacation experience.</li>
<li>The app seamlessly integrates with hotel check-in, mobile food ordering, and car locator features for a convenient and efficient experience.</li>
<li>The user interface and navigation of the app are well-designed, providing easy access to information and services.</li>
<li>The integration of Magic Bands and Apple Wallet allows for a seamless and magical experience throughout the park.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Vacation experiences: Belize and Disney</li>
<li>03:10 The Disney app and its features</li>
<li>05:01 Booking a trip and managing reservations</li>
<li>07:22 Hotel reservations and check-in</li>
<li>08:17 Mobile food ordering</li>
<li>09:15 Car locator feature</li>
<li>11:43 User interface and navigation</li>
<li>14:12 Magic Band and Apple Wallet integration</li>
<li>19:58 Express pass and Magic Band</li>
<li>21:29 Animated passes in Apple Wallet</li>
<li>24:13 Attention to Detail</li>
<li>25:20 PhotoPass and Cast Members</li>
<li>26:16 Interactive Photos</li>
<li>27:13 Real-Time Photo Processing</li>
<li>28:19 On-Ride Photos</li>
<li>29:29 Scavenger Hunts and App Interactions</li>
<li>32:46 Crowd Management and Analytics</li>
<li>38:24 Lightning Lanes and Ride Availability</li>
<li>44:41 The Backend and Infrastructure</li>
<li>46:05 The Gamification Experience</li>
<li>47:10 Interactive Droids and Bluetooth</li>
<li>48:09 The Magic of Disney&#39;s App</li>
<li>51:12 Disney&#39;s Use of Google Maps</li>
<li>53:18 Magic Bands and Child Safety</li>
<li>55:06 Technical Challenges and Solutions</li>
<li>59:00 Cellular Connectivity and Redundancy</li>
<li>01:01:42 The Marvel of Disney&#39;s Mobile App</li>
<li>01:04:57 Conclusion and Plugin Packages</li>
</ul><p>Links:</p><ul><li><a title="Shiny BluetoothLE" rel="nofollow" href="https://shinylib.net">Shiny BluetoothLE</a></li><li><a title="Plugin BLE" rel="nofollow" href="https://github.com/dotnet-bluetooth-le/dotnet-bluetooth-le">Plugin BLE</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>The Disney experience app is a mobile engineering marvel.  Jon and Allan take a slightly less technical conversation on the anatomy of an app and geek out over the happiest app on earth.</p>

<p>In this episode, Jon and Allan discuss their recent vacations to Belize and Disney World. They dive into the features and functionality of the Disney mobile app, which allows users to book trips, manage reservations, and access various services. They highlight the seamless integration of the app with hotel check-in, mobile food ordering, and car locator features. The chapter also explores the user interface and navigation of the app, as well as the integration of Magic Bands and Apple Wallet for a convenient and magical experience. The episode concludes with a discussion on the Genie Plus and Lightning Lanes services, as well as the animated passes in Apple Wallet. Disney&#39;s attention to detail is evident in their interactive photo experiences, such as the PhotoPass and on-ride photos. The app allows users to book Lightning Lane reservations and participate in scavenger hunts, creating a seamless and engaging experience. Disney&#39;s crowd management and analytics ensure a smooth flow of visitors throughout the park. The backend infrastructure supporting these features is a marvel in itself. Overall, Disney&#39;s gamification approach enhances the park experience while providing value for the price. In this episode, Allan and Jon discuss the impressive features and functionality of the Disney mobile app. They highlight the interactive droids that react to Bluetooth events in the park and the immersive experience they provide. The conversation then delves into the magic of Disney&#39;s app, including its use of Google Maps for detailed mapping and navigation. They also explore the use of Magic Bands for child safety and the seamless integration of various features within the app. The discussion touches on the technical challenges faced by Disney and the solutions implemented to ensure a smooth user experience. The episode concludes with a summary of the main takeaways and a mention of Bluetooth plugin packages for developers interested in similar functionality.</p>

<h3>Takeaways</h3>

<ul>
<li>The Disney mobile app offers a wide range of features and functionality to enhance the vacation experience.</li>
<li>The app seamlessly integrates with hotel check-in, mobile food ordering, and car locator features for a convenient and efficient experience.</li>
<li>The user interface and navigation of the app are well-designed, providing easy access to information and services.</li>
<li>The integration of Magic Bands and Apple Wallet allows for a seamless and magical experience throughout the park.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Vacation experiences: Belize and Disney</li>
<li>03:10 The Disney app and its features</li>
<li>05:01 Booking a trip and managing reservations</li>
<li>07:22 Hotel reservations and check-in</li>
<li>08:17 Mobile food ordering</li>
<li>09:15 Car locator feature</li>
<li>11:43 User interface and navigation</li>
<li>14:12 Magic Band and Apple Wallet integration</li>
<li>19:58 Express pass and Magic Band</li>
<li>21:29 Animated passes in Apple Wallet</li>
<li>24:13 Attention to Detail</li>
<li>25:20 PhotoPass and Cast Members</li>
<li>26:16 Interactive Photos</li>
<li>27:13 Real-Time Photo Processing</li>
<li>28:19 On-Ride Photos</li>
<li>29:29 Scavenger Hunts and App Interactions</li>
<li>32:46 Crowd Management and Analytics</li>
<li>38:24 Lightning Lanes and Ride Availability</li>
<li>44:41 The Backend and Infrastructure</li>
<li>46:05 The Gamification Experience</li>
<li>47:10 Interactive Droids and Bluetooth</li>
<li>48:09 The Magic of Disney&#39;s App</li>
<li>51:12 Disney&#39;s Use of Google Maps</li>
<li>53:18 Magic Bands and Child Safety</li>
<li>55:06 Technical Challenges and Solutions</li>
<li>59:00 Cellular Connectivity and Redundancy</li>
<li>01:01:42 The Marvel of Disney&#39;s Mobile App</li>
<li>01:04:57 Conclusion and Plugin Packages</li>
</ul><p>Links:</p><ul><li><a title="Shiny BluetoothLE" rel="nofollow" href="https://shinylib.net">Shiny BluetoothLE</a></li><li><a title="Plugin BLE" rel="nofollow" href="https://github.com/dotnet-bluetooth-le/dotnet-bluetooth-le">Plugin BLE</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>96: Selling Jon on Reactive Extensions</title>
  <link>https://www.gonedotnet.io/96</link>
  <guid isPermaLink="false">f22bb81d-ce27-4757-84e2-04152a2ff92f</guid>
  <pubDate>Fri, 01 Mar 2024 11:00:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/f22bb81d-ce27-4757-84e2-04152a2ff92f.mp3" length="62405322" type="audio/mpeg"/>
  <itunes:episode>96</itunes:episode>
  <itunes:title>Selling Jon on Reactive Extensions</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Allan tries to convince Jon that he should use Reactive Extensions in his own projects more given their power and versatility in simplifying event handling and improving code readability. They discuss its benefits, challenges, and solutions, as well as its integration with .NET MAUI and Reactive UI.net.</itunes:subtitle>
  <itunes:duration>57:37</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss Reactive Extensions (Rx) and its advantages over traditional event handling. They start by addressing Jon's resistance to dependency injection and his concerns about taking dependencies on external libraries. Allan introduces Rx as a solution to handle events more effectively and efficiently. They explore the benefits of Rx, such as composability, filtering, and transforming events. The conversation delves into the implementation of Rx in different platforms and its integration with Maui. They also discuss challenges and solutions in using Rx, including canceling requests and validating input. Overall, the episode highlights the power and versatility of Rx in simplifying event handling and improving code readability. In this conversation, Jon and Allan discuss Reactive UI and Reactive Extensions. They explore the features and benefits of Reactive UI.net and how it simplifies event handling and data binding in UI development. They dive into topics such as throttling and transforming events, filtering empty or invalid values, canceling and restarting events, and handling complex use cases. They also discuss the challenges and limitations of Reactive Extensions, including assembly size and reflection usage. The conversation concludes with a discussion on identifying use cases for Reactive UI and plans for future discussions on the topic.
Takeaways
Reactive Extensions (Rx) is a powerful library that simplifies event handling and provides a more composable and efficient way to work with events.
Rx offers advantages over traditional event handling, such as the ability to filter, transform, and compose events, as well as handle asynchronous operations.
RxUI is an open-source project that integrates Rx with Maui and other platforms, providing additional features and simplifying event handling in user interfaces.
Using Rx can help address common challenges in event handling, such as memory leaks, complex event patterns, and managing asynchronous operations.
Regular expressions can be used with Rx to validate and filter input, improving the quality and reliability of user interactions. Reactive UI.net simplifies event handling and data binding in UI development.
Reactive Extensions provide powerful tools for manipulating and transforming events.
Throttling and filtering events can improve performance and reduce unnecessary processing.
Reactive UI and Reactive Extensions have limitations and may require careful consideration in certain scenarios.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Small Talk
01:07 Jon's Resistance to Dependency Injection
02:21 Introducing Reactive Extensions (Rx)
03:45 Advantages of Rx and Issues with Events
08:34 Rx in Different Platforms
10:00 Transforming and Filtering Events with Rx
15:29 Understanding Observables and Observers
19:21 Simplifying Event Handling with Rx
22:21 RxUI and its Integration with Maui
25:03 Challenges and Solutions in Using Rx
28:26 Implementing a Search Feature with Rx
31:03 Handling Continuous Typing and Caching Results
33:32 Validating Input with Regular Expressions
34:09 Introduction to Reactive UI and Reactive Extensions
34:38 Exploring Reactive UI.net
35:11 Throttling and Transforming Events
36:25 Distinct Until Changed
37:12 Filtering Empty or Invalid Values
37:45 Subscribing to Events
38:13 Canceling and Restarting Events
39:05 Complex Use Cases and Limitations
40:08 Using Reactive Extensions with Async
41:23 Challenges with Reactive Extensions
42:21 Assembly Size of System.Reactive
43:16 Reflection and Dynamic Usage
44:34 Considerations for Mobile Apps
48:35 Benefits of Reactive UI in UI Development
51:08 Identifying Use Cases for Reactive UI
54:04 Reactive UI and Reactive Extensions as Picks of the Week
55:06 Conclusion and Future Discussion
</description>
  <itunes:keywords>dotnet, dotnet-maui, rx, reactive, reactive extensions, events, observable, observer</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss Reactive Extensions (Rx) and its advantages over traditional event handling. They start by addressing Jon&#39;s resistance to dependency injection and his concerns about taking dependencies on external libraries. Allan introduces Rx as a solution to handle events more effectively and efficiently. They explore the benefits of Rx, such as composability, filtering, and transforming events. The conversation delves into the implementation of Rx in different platforms and its integration with Maui. They also discuss challenges and solutions in using Rx, including canceling requests and validating input. Overall, the episode highlights the power and versatility of Rx in simplifying event handling and improving code readability. In this conversation, Jon and Allan discuss Reactive UI and Reactive Extensions. They explore the features and benefits of Reactive UI.net and how it simplifies event handling and data binding in UI development. They dive into topics such as throttling and transforming events, filtering empty or invalid values, canceling and restarting events, and handling complex use cases. They also discuss the challenges and limitations of Reactive Extensions, including assembly size and reflection usage. The conversation concludes with a discussion on identifying use cases for Reactive UI and plans for future discussions on the topic.</p>

<h3>Takeaways</h3>

<ul>
<li>Reactive Extensions (Rx) is a powerful library that simplifies event handling and provides a more composable and efficient way to work with events.</li>
<li>Rx offers advantages over traditional event handling, such as the ability to filter, transform, and compose events, as well as handle asynchronous operations.</li>
<li>RxUI is an open-source project that integrates Rx with Maui and other platforms, providing additional features and simplifying event handling in user interfaces.</li>
<li>Using Rx can help address common challenges in event handling, such as memory leaks, complex event patterns, and managing asynchronous operations.</li>
<li>Regular expressions can be used with Rx to validate and filter input, improving the quality and reliability of user interactions. Reactive UI.net simplifies event handling and data binding in UI development.</li>
<li>Reactive Extensions provide powerful tools for manipulating and transforming events.</li>
<li>Throttling and filtering events can improve performance and reduce unnecessary processing.</li>
<li>Reactive UI and Reactive Extensions have limitations and may require careful consideration in certain scenarios.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Small Talk</li>
<li>01:07 Jon&#39;s Resistance to Dependency Injection</li>
<li>02:21 Introducing Reactive Extensions (Rx)</li>
<li>03:45 Advantages of Rx and Issues with Events</li>
<li>08:34 Rx in Different Platforms</li>
<li>10:00 Transforming and Filtering Events with Rx</li>
<li>15:29 Understanding Observables and Observers</li>
<li>19:21 Simplifying Event Handling with Rx</li>
<li>22:21 RxUI and its Integration with Maui</li>
<li>25:03 Challenges and Solutions in Using Rx</li>
<li>28:26 Implementing a Search Feature with Rx</li>
<li>31:03 Handling Continuous Typing and Caching Results</li>
<li>33:32 Validating Input with Regular Expressions</li>
<li>34:09 Introduction to Reactive UI and Reactive Extensions</li>
<li>34:38 Exploring Reactive UI.net</li>
<li>35:11 Throttling and Transforming Events</li>
<li>36:25 Distinct Until Changed</li>
<li>37:12 Filtering Empty or Invalid Values</li>
<li>37:45 Subscribing to Events</li>
<li>38:13 Canceling and Restarting Events</li>
<li>39:05 Complex Use Cases and Limitations</li>
<li>40:08 Using Reactive Extensions with Async</li>
<li>41:23 Challenges with Reactive Extensions</li>
<li>42:21 Assembly Size of System.Reactive</li>
<li>43:16 Reflection and Dynamic Usage</li>
<li>44:34 Considerations for Mobile Apps</li>
<li>48:35 Benefits of Reactive UI in UI Development</li>
<li>51:08 Identifying Use Cases for Reactive UI</li>
<li>54:04 Reactive UI and Reactive Extensions as Picks of the Week</li>
<li>55:06 Conclusion and Future Discussion</li>
</ul><p>Links:</p><ul><li><a title="ReactiveUI" rel="nofollow" href="https://www.reactiveui.net/">ReactiveUI</a></li><li><a title="Reactive Extensions" rel="nofollow" href="https://github.com/dotnet/reactive">Reactive Extensions</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss Reactive Extensions (Rx) and its advantages over traditional event handling. They start by addressing Jon&#39;s resistance to dependency injection and his concerns about taking dependencies on external libraries. Allan introduces Rx as a solution to handle events more effectively and efficiently. They explore the benefits of Rx, such as composability, filtering, and transforming events. The conversation delves into the implementation of Rx in different platforms and its integration with Maui. They also discuss challenges and solutions in using Rx, including canceling requests and validating input. Overall, the episode highlights the power and versatility of Rx in simplifying event handling and improving code readability. In this conversation, Jon and Allan discuss Reactive UI and Reactive Extensions. They explore the features and benefits of Reactive UI.net and how it simplifies event handling and data binding in UI development. They dive into topics such as throttling and transforming events, filtering empty or invalid values, canceling and restarting events, and handling complex use cases. They also discuss the challenges and limitations of Reactive Extensions, including assembly size and reflection usage. The conversation concludes with a discussion on identifying use cases for Reactive UI and plans for future discussions on the topic.</p>

<h3>Takeaways</h3>

<ul>
<li>Reactive Extensions (Rx) is a powerful library that simplifies event handling and provides a more composable and efficient way to work with events.</li>
<li>Rx offers advantages over traditional event handling, such as the ability to filter, transform, and compose events, as well as handle asynchronous operations.</li>
<li>RxUI is an open-source project that integrates Rx with Maui and other platforms, providing additional features and simplifying event handling in user interfaces.</li>
<li>Using Rx can help address common challenges in event handling, such as memory leaks, complex event patterns, and managing asynchronous operations.</li>
<li>Regular expressions can be used with Rx to validate and filter input, improving the quality and reliability of user interactions. Reactive UI.net simplifies event handling and data binding in UI development.</li>
<li>Reactive Extensions provide powerful tools for manipulating and transforming events.</li>
<li>Throttling and filtering events can improve performance and reduce unnecessary processing.</li>
<li>Reactive UI and Reactive Extensions have limitations and may require careful consideration in certain scenarios.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Small Talk</li>
<li>01:07 Jon&#39;s Resistance to Dependency Injection</li>
<li>02:21 Introducing Reactive Extensions (Rx)</li>
<li>03:45 Advantages of Rx and Issues with Events</li>
<li>08:34 Rx in Different Platforms</li>
<li>10:00 Transforming and Filtering Events with Rx</li>
<li>15:29 Understanding Observables and Observers</li>
<li>19:21 Simplifying Event Handling with Rx</li>
<li>22:21 RxUI and its Integration with Maui</li>
<li>25:03 Challenges and Solutions in Using Rx</li>
<li>28:26 Implementing a Search Feature with Rx</li>
<li>31:03 Handling Continuous Typing and Caching Results</li>
<li>33:32 Validating Input with Regular Expressions</li>
<li>34:09 Introduction to Reactive UI and Reactive Extensions</li>
<li>34:38 Exploring Reactive UI.net</li>
<li>35:11 Throttling and Transforming Events</li>
<li>36:25 Distinct Until Changed</li>
<li>37:12 Filtering Empty or Invalid Values</li>
<li>37:45 Subscribing to Events</li>
<li>38:13 Canceling and Restarting Events</li>
<li>39:05 Complex Use Cases and Limitations</li>
<li>40:08 Using Reactive Extensions with Async</li>
<li>41:23 Challenges with Reactive Extensions</li>
<li>42:21 Assembly Size of System.Reactive</li>
<li>43:16 Reflection and Dynamic Usage</li>
<li>44:34 Considerations for Mobile Apps</li>
<li>48:35 Benefits of Reactive UI in UI Development</li>
<li>51:08 Identifying Use Cases for Reactive UI</li>
<li>54:04 Reactive UI and Reactive Extensions as Picks of the Week</li>
<li>55:06 Conclusion and Future Discussion</li>
</ul><p>Links:</p><ul><li><a title="ReactiveUI" rel="nofollow" href="https://www.reactiveui.net/">ReactiveUI</a></li><li><a title="Reactive Extensions" rel="nofollow" href="https://github.com/dotnet/reactive">Reactive Extensions</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>95: Xamarin.Forms to MAUI</title>
  <link>https://www.gonedotnet.io/95</link>
  <guid isPermaLink="false">066d6751-3e8f-4390-be31-4d8e7f164bab</guid>
  <pubDate>Fri, 23 Feb 2024 13:00:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/066d6751-3e8f-4390-be31-4d8e7f164bab.mp3" length="70619466" type="audio/mpeg"/>
  <itunes:episode>95</itunes:episode>
  <itunes:title>Xamarin.Forms to MAUI</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>A little bit about the history of Xamarin.Forms and its evolution into .NET MAUI, including new things to learn when migrating your apps, common tips, and pitfalls to avoid!</itunes:subtitle>
  <itunes:duration>1:01:41</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss the migration experiences from Xamarin.Forms to .NET MAUI. They highlight the opportunity for architectural improvements during the migration process, such as cleaning up code and removing static untestable components. They also explain the evolution of Xamarin.Forms into .NET MAUI and the introduction of handlers. The benefits of the single project structure and the ease of migrating third-party libraries are discussed. The conversation also covers the customization of entry handlers and the migration of resources, including images and fonts. This conversation covers various challenges and solutions related to image management, including the use of vectors, app icons, and splash screens. It also discusses the migration process from Xamarin.Forms to .NET MAUI, highlighting the importance of a methodical approach. The conversation concludes with a recommendation for the Maui Community Toolkit as a valuable resource for developers.
Takeaways
Migrating from Xamarin.Forms to .NET MAUI provides an opportunity to improve the architecture of the app.
The introduction of handlers in .NET MAUI allows for cleaner and more testable code.
The single project structure in .NET MAUI simplifies the development process and improves compile times.
Migrating third-party libraries may require finding alternatives or porting them to .NET MAUI.
Customizing entry handlers and migrating resources, such as images and fonts, can be done more easily in .NET MAUI. Image management in mobile app development can be challenging, especially when dealing with different resolutions and densities.
Using vectors can simplify image management by allowing for easy scaling to different sizes.
App icons and splash screens can be generated automatically in .NET MAUI, reducing the manual effort required.
When migrating from Xamarin.Forms to .NET MAUI, it is important to approach the process methodically, starting with dependencies and gradually bringing over pages and components.
People
Hosts: Jon Dick, Allan Ritchie
Chapters
00:00 Introduction and Migration Experiences
01:11 Opportunity for Architectural Improvements
03:16 Evolution of Xamarin.Forms to Maui
06:27 Architecture of Maui Handlers
09:30 Benefits of Single Project Structure
13:56 Migration of Third-Party Libraries
18:13 Handling Dependency Service and Renderers
25:09 Porting Plugins and Controls
32:48 Customizing Entry Handlers
35:45 Migration of Resources
37:23 Image Management Challenges
39:25 Building a Solution: Resize-itizer
41:03 Vector Images in Maui
44:05 App Icons and Splash Screens
46:38 Migrating Resources to Maui
49:35 Font Handling in Maui
51:37 Replacing Frames with Borders
53:10 Avoiding Tap Gesture Issues with Stack Layouts
55:12 Namespace Changes in XAML
56:45 Methodical Migration Process
59:28 Package of the Week: Maui Community Toolkit
</description>
  <itunes:keywords>dotnet, dotnet-maui, xamarin, xamarin.forms, forms, migration, upgrade assistant, compatibility, resizetizer, essentials</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss the migration experiences from Xamarin.Forms to .NET MAUI. They highlight the opportunity for architectural improvements during the migration process, such as cleaning up code and removing static untestable components. They also explain the evolution of Xamarin.Forms into .NET MAUI and the introduction of handlers. The benefits of the single project structure and the ease of migrating third-party libraries are discussed. The conversation also covers the customization of entry handlers and the migration of resources, including images and fonts. This conversation covers various challenges and solutions related to image management, including the use of vectors, app icons, and splash screens. It also discusses the migration process from Xamarin.Forms to .NET MAUI, highlighting the importance of a methodical approach. The conversation concludes with a recommendation for the Maui Community Toolkit as a valuable resource for developers.</p>

<h3>Takeaways</h3>

<ul>
<li>Migrating from Xamarin.Forms to .NET MAUI provides an opportunity to improve the architecture of the app.</li>
<li>The introduction of handlers in .NET MAUI allows for cleaner and more testable code.</li>
<li>The single project structure in .NET MAUI simplifies the development process and improves compile times.</li>
<li>Migrating third-party libraries may require finding alternatives or porting them to .NET MAUI.</li>
<li>Customizing entry handlers and migrating resources, such as images and fonts, can be done more easily in .NET MAUI. Image management in mobile app development can be challenging, especially when dealing with different resolutions and densities.</li>
<li>Using vectors can simplify image management by allowing for easy scaling to different sizes.</li>
<li>App icons and splash screens can be generated automatically in .NET MAUI, reducing the manual effort required.</li>
<li>When migrating from Xamarin.Forms to .NET MAUI, it is important to approach the process methodically, starting with dependencies and gradually bringing over pages and components.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Migration Experiences</li>
<li>01:11 Opportunity for Architectural Improvements</li>
<li>03:16 Evolution of Xamarin.Forms to Maui</li>
<li>06:27 Architecture of Maui Handlers</li>
<li>09:30 Benefits of Single Project Structure</li>
<li>13:56 Migration of Third-Party Libraries</li>
<li>18:13 Handling Dependency Service and Renderers</li>
<li>25:09 Porting Plugins and Controls</li>
<li>32:48 Customizing Entry Handlers</li>
<li>35:45 Migration of Resources</li>
<li>37:23 Image Management Challenges</li>
<li>39:25 Building a Solution: Resize-itizer</li>
<li>41:03 Vector Images in Maui</li>
<li>44:05 App Icons and Splash Screens</li>
<li>46:38 Migrating Resources to Maui</li>
<li>49:35 Font Handling in Maui</li>
<li>51:37 Replacing Frames with Borders</li>
<li>53:10 Avoiding Tap Gesture Issues with Stack Layouts</li>
<li>55:12 Namespace Changes in XAML</li>
<li>56:45 Methodical Migration Process</li>
<li>59:28 Package of the Week: Maui Community Toolkit</li>
</ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss the migration experiences from Xamarin.Forms to .NET MAUI. They highlight the opportunity for architectural improvements during the migration process, such as cleaning up code and removing static untestable components. They also explain the evolution of Xamarin.Forms into .NET MAUI and the introduction of handlers. The benefits of the single project structure and the ease of migrating third-party libraries are discussed. The conversation also covers the customization of entry handlers and the migration of resources, including images and fonts. This conversation covers various challenges and solutions related to image management, including the use of vectors, app icons, and splash screens. It also discusses the migration process from Xamarin.Forms to .NET MAUI, highlighting the importance of a methodical approach. The conversation concludes with a recommendation for the Maui Community Toolkit as a valuable resource for developers.</p>

<h3>Takeaways</h3>

<ul>
<li>Migrating from Xamarin.Forms to .NET MAUI provides an opportunity to improve the architecture of the app.</li>
<li>The introduction of handlers in .NET MAUI allows for cleaner and more testable code.</li>
<li>The single project structure in .NET MAUI simplifies the development process and improves compile times.</li>
<li>Migrating third-party libraries may require finding alternatives or porting them to .NET MAUI.</li>
<li>Customizing entry handlers and migrating resources, such as images and fonts, can be done more easily in .NET MAUI. Image management in mobile app development can be challenging, especially when dealing with different resolutions and densities.</li>
<li>Using vectors can simplify image management by allowing for easy scaling to different sizes.</li>
<li>App icons and splash screens can be generated automatically in .NET MAUI, reducing the manual effort required.</li>
<li>When migrating from Xamarin.Forms to .NET MAUI, it is important to approach the process methodically, starting with dependencies and gradually bringing over pages and components.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Migration Experiences</li>
<li>01:11 Opportunity for Architectural Improvements</li>
<li>03:16 Evolution of Xamarin.Forms to Maui</li>
<li>06:27 Architecture of Maui Handlers</li>
<li>09:30 Benefits of Single Project Structure</li>
<li>13:56 Migration of Third-Party Libraries</li>
<li>18:13 Handling Dependency Service and Renderers</li>
<li>25:09 Porting Plugins and Controls</li>
<li>32:48 Customizing Entry Handlers</li>
<li>35:45 Migration of Resources</li>
<li>37:23 Image Management Challenges</li>
<li>39:25 Building a Solution: Resize-itizer</li>
<li>41:03 Vector Images in Maui</li>
<li>44:05 App Icons and Splash Screens</li>
<li>46:38 Migrating Resources to Maui</li>
<li>49:35 Font Handling in Maui</li>
<li>51:37 Replacing Frames with Borders</li>
<li>53:10 Avoiding Tap Gesture Issues with Stack Layouts</li>
<li>55:12 Namespace Changes in XAML</li>
<li>56:45 Methodical Migration Process</li>
<li>59:28 Package of the Week: Maui Community Toolkit</li>
</ul>]]>
  </itunes:summary>
</item>
<item>
  <title>94: Anatomy of an App</title>
  <link>https://www.gonedotnet.io/94</link>
  <guid isPermaLink="false">74e0c4cd-1322-4155-9ea9-1728be9e6b58</guid>
  <pubDate>Fri, 16 Feb 2024 11:00:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/74e0c4cd-1322-4155-9ea9-1728be9e6b58.mp3" length="65662410" type="audio/mpeg"/>
  <itunes:episode>94</itunes:episode>
  <itunes:title>Anatomy of an App</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>How do we build mobile apps?  What are the various components and layers and pieces that we need to fit together to be successful in architecting a new app?</itunes:subtitle>
  <itunes:duration>1:01:18</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss the process of building a mobile app, starting with the analogy of building a lightsaber at Disney. They explore the anatomy of a mobile app, including the use of MVVM architecture and the importance of gluing logic together. They also delve into navigation and the use of Shell in Xamarin.Forms. The conversation then shifts to the benefits of using dependency injection in app development and the considerations for cross-platform development. In this episode, Allan and Jon discuss various aspects of app development, including dependency injection, core services, and cross-platform services. They emphasize the importance of creating a base set of services and thinking outside the box when faced with UI design challenges. They also highlight the significance of solving business problems first and introduce Prism as a comprehensive app architecture framework.
Takeaways
Building a mobile app involves various components, including the user interface, logic, and navigation.
MVVM (Model-View-ViewModel) architecture is a popular approach for separating the presentation logic from the user interface.
Shell in Xamarin.Forms provides a convenient way to handle navigation in mobile apps.
Dependency injection (DI) can simplify the management of dependencies and improve testability in app development.
Cross-platform development allows for code sharing and reduces development time and effort. Use dependency injection and service injection to manage dependencies and improve code maintainability.
Create a base set of services that are core to every page in your app to simplify dependency injection.
Think outside the box and consider alternative approaches when faced with UI design challenges.
Solve business problems first and focus on reusability only when patterns emerge.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Building a Lightsaber
03:11 Anatomy of a Mobile App
08:15 Gluing Logic with MVVM
17:36 Navigation and Shell
23:42 Using Dependency Injection
30:34 Cross-Platform Considerations
33:24 Dependency Injection and Service Injection
34:35 Core Services and Cross-Platform Services
36:25 Creating a Base Set of Services
37:11 Anatomy of a Maui App
38:19 The UI as the Top Bun
39:17 The Importance of Connectivity
41:14 Thinking Outside the Box in App Development
44:48 Navigating UI Design Challenges
48:09 Custom Controls and Creative Solutions
54:29 Solving Business Problems First
58:38 Prism: A Comprehensive App Architecture Framework
</description>
  <itunes:keywords>dotnet, dotnet-maui, mobile, services, interfaces, mvvm, architecture, anatomy</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss the process of building a mobile app, starting with the analogy of building a lightsaber at Disney. They explore the anatomy of a mobile app, including the use of MVVM architecture and the importance of gluing logic together. They also delve into navigation and the use of Shell in Xamarin.Forms. The conversation then shifts to the benefits of using dependency injection in app development and the considerations for cross-platform development. In this episode, Allan and Jon discuss various aspects of app development, including dependency injection, core services, and cross-platform services. They emphasize the importance of creating a base set of services and thinking outside the box when faced with UI design challenges. They also highlight the significance of solving business problems first and introduce Prism as a comprehensive app architecture framework.</p>

<h3>Takeaways</h3>

<ul>
<li>Building a mobile app involves various components, including the user interface, logic, and navigation.</li>
<li>MVVM (Model-View-ViewModel) architecture is a popular approach for separating the presentation logic from the user interface.</li>
<li>Shell in Xamarin.Forms provides a convenient way to handle navigation in mobile apps.</li>
<li>Dependency injection (DI) can simplify the management of dependencies and improve testability in app development.</li>
<li>Cross-platform development allows for code sharing and reduces development time and effort. Use dependency injection and service injection to manage dependencies and improve code maintainability.</li>
<li>Create a base set of services that are core to every page in your app to simplify dependency injection.</li>
<li>Think outside the box and consider alternative approaches when faced with UI design challenges.</li>
<li>Solve business problems first and focus on reusability only when patterns emerge.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Building a Lightsaber</li>
<li>03:11 Anatomy of a Mobile App</li>
<li>08:15 Gluing Logic with MVVM</li>
<li>17:36 Navigation and Shell</li>
<li>23:42 Using Dependency Injection</li>
<li>30:34 Cross-Platform Considerations</li>
<li>33:24 Dependency Injection and Service Injection</li>
<li>34:35 Core Services and Cross-Platform Services</li>
<li>36:25 Creating a Base Set of Services</li>
<li>37:11 Anatomy of a Maui App</li>
<li>38:19 The UI as the Top Bun</li>
<li>39:17 The Importance of Connectivity</li>
<li>41:14 Thinking Outside the Box in App Development</li>
<li>44:48 Navigating UI Design Challenges</li>
<li>48:09 Custom Controls and Creative Solutions</li>
<li>54:29 Solving Business Problems First</li>
<li>58:38 Prism: A Comprehensive App Architecture Framework</li>
</ul><p>Links:</p><ul><li><a title="Prism" rel="nofollow" href="https://prismlibrary.com/docs/">Prism</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss the process of building a mobile app, starting with the analogy of building a lightsaber at Disney. They explore the anatomy of a mobile app, including the use of MVVM architecture and the importance of gluing logic together. They also delve into navigation and the use of Shell in Xamarin.Forms. The conversation then shifts to the benefits of using dependency injection in app development and the considerations for cross-platform development. In this episode, Allan and Jon discuss various aspects of app development, including dependency injection, core services, and cross-platform services. They emphasize the importance of creating a base set of services and thinking outside the box when faced with UI design challenges. They also highlight the significance of solving business problems first and introduce Prism as a comprehensive app architecture framework.</p>

<h3>Takeaways</h3>

<ul>
<li>Building a mobile app involves various components, including the user interface, logic, and navigation.</li>
<li>MVVM (Model-View-ViewModel) architecture is a popular approach for separating the presentation logic from the user interface.</li>
<li>Shell in Xamarin.Forms provides a convenient way to handle navigation in mobile apps.</li>
<li>Dependency injection (DI) can simplify the management of dependencies and improve testability in app development.</li>
<li>Cross-platform development allows for code sharing and reduces development time and effort. Use dependency injection and service injection to manage dependencies and improve code maintainability.</li>
<li>Create a base set of services that are core to every page in your app to simplify dependency injection.</li>
<li>Think outside the box and consider alternative approaches when faced with UI design challenges.</li>
<li>Solve business problems first and focus on reusability only when patterns emerge.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Building a Lightsaber</li>
<li>03:11 Anatomy of a Mobile App</li>
<li>08:15 Gluing Logic with MVVM</li>
<li>17:36 Navigation and Shell</li>
<li>23:42 Using Dependency Injection</li>
<li>30:34 Cross-Platform Considerations</li>
<li>33:24 Dependency Injection and Service Injection</li>
<li>34:35 Core Services and Cross-Platform Services</li>
<li>36:25 Creating a Base Set of Services</li>
<li>37:11 Anatomy of a Maui App</li>
<li>38:19 The UI as the Top Bun</li>
<li>39:17 The Importance of Connectivity</li>
<li>41:14 Thinking Outside the Box in App Development</li>
<li>44:48 Navigating UI Design Challenges</li>
<li>48:09 Custom Controls and Creative Solutions</li>
<li>54:29 Solving Business Problems First</li>
<li>58:38 Prism: A Comprehensive App Architecture Framework</li>
</ul><p>Links:</p><ul><li><a title="Prism" rel="nofollow" href="https://prismlibrary.com/docs/">Prism</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>93: These aren't your grandma's Templates</title>
  <link>https://www.gonedotnet.io/93</link>
  <guid isPermaLink="false">92759c48-75f3-4154-9f5f-81a6cd13ab63</guid>
  <pubDate>Fri, 09 Feb 2024 10:00:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/92759c48-75f3-4154-9f5f-81a6cd13ab63.mp3" length="77736762" type="audio/mpeg"/>
  <itunes:episode>93</itunes:episode>
  <itunes:title>These aren't your grandma's Templates</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Project and Item Templates come in a variety of shapes and sizes - listen to hear about the great templates available in the MAUI ecosystem, and what they try and help you accomplish.</itunes:subtitle>
  <itunes:duration>48:22</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss the importance of templates for mobile app development. They explore the challenges of remembering details like Android manifest and info.plist, and how templates can help simplify the process. They also discuss the default templates in Maui and the benefits of item templates in VS Code. The conversation covers the balance between complexity and simplicity in templates, and the value of custom templates for saving time. They also touch on managing permissions and entitlements, and the power of MSBuild and CSProj files in customizing projects. The episode concludes with a discussion on the benefits of community templates. In this episode, Jon and Allan discuss different types of templates available for building mobile apps with .NET Maui. They cover item templates, Maui templates, solution templates, Visual Studio templates, VS Code templates, and command line templates. They also talk about the benefits of creating custom templates and how they can help standardize development practices within an organization.
Takeaways
Templates are essential for simplifying mobile app development and helping developers remember important details.
Default templates in Maui and item templates in VS Code provide a starting point for building mobile apps.
Custom templates can save time and help manage permissions and entitlements.
MSBuild and CSProj files offer powerful customization options for projects.
Community templates provide additional resources and options for developers. There are various types of templates available for building mobile apps with .NET Maui, including item templates, Maui templates, solution templates, Visual Studio templates, - VS Code templates, and command line templates.
Item templates are used to add specific elements, such as XAML pages or views, to an existing project.
Maui templates provide a starting point for building cross-platform apps with .NET Maui and include pre-configured project structures and dependencies.
Solution templates allow developers to generate a complete solution with multiple projects and project references.
Visual Studio templates offer a rich mechanism for creating templates with dynamic interfaces and advanced features.
VS Code templates focus on command line interactions and provide a more lightweight and streamlined experience.
Command line templates are used with the 'dotnet new' command and offer a simple and flexible way to generate project structures.
Creating custom templates can help standardize development practices within an organization and simplify the onboarding process for new projects.
Using templates can save time and effort by automating repetitive tasks and providing a consistent starting point for app development.
Consider using existing templates or creating your own templates to improve productivity and maintain coding best practices.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction
00:31 The Importance of Templates for Mobile Apps
01:38 Default Templates in Maui
02:35 Item Templates in VS Code
03:28 The Challenge of Remembering Details
04:11 Customizing Templates
05:38 Balancing Complexity and Simplicity in Templates
06:55 Different Needs for New and Experienced Users
07:45 Creating Custom Templates
08:23 Managing Permissions and Entitlements
09:44 The Power of Templates in Saving Time
11:05 The Challenge of Changing Requirements
13:21 Managing Permissions in Templates
14:42 Working with Templates in Different Environments
15:23 Using Conditional Logic in Templates
17:42 Generating Entitlements in Templates
19:14 Simplifying Project Files
21:17 The Power of MSBuild and CSProj Files
23:01 Overcoming Fear of Project Files
25:21 Using Project Files for Customization
26:41 The Benefits of Plugin Templates
30:51 Including Popular Packages in Templates
32:33 The Value of Community Templates
33:32 Introduction to Templates
34:05 Different Template Options
35:39 Item Templates
36:09 Maui Templates
37:46 Solution Templates
38:15 Visual Studio Templates
39:21 VS Code Templates
41:45 Command Line Templates
43:08 Creating Custom Templates
45:16 Standardizing Templates
45:58 Conclusion
</description>
  <itunes:keywords>dotnet, dotnetmaui, templates, visual studio, vs, dotnet new, shiny</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss the importance of templates for mobile app development. They explore the challenges of remembering details like Android manifest and info.plist, and how templates can help simplify the process. They also discuss the default templates in Maui and the benefits of item templates in VS Code. The conversation covers the balance between complexity and simplicity in templates, and the value of custom templates for saving time. They also touch on managing permissions and entitlements, and the power of MSBuild and CSProj files in customizing projects. The episode concludes with a discussion on the benefits of community templates. In this episode, Jon and Allan discuss different types of templates available for building mobile apps with .NET Maui. They cover item templates, Maui templates, solution templates, Visual Studio templates, VS Code templates, and command line templates. They also talk about the benefits of creating custom templates and how they can help standardize development practices within an organization.</p>

<h3>Takeaways</h3>

<ul>
<li>Templates are essential for simplifying mobile app development and helping developers remember important details.</li>
<li>Default templates in Maui and item templates in VS Code provide a starting point for building mobile apps.</li>
<li>Custom templates can save time and help manage permissions and entitlements.
MSBuild and CSProj files offer powerful customization options for projects.</li>
<li>Community templates provide additional resources and options for developers. There are various types of templates available for building mobile apps with .NET Maui, including item templates, Maui templates, solution templates, Visual Studio templates, - VS Code templates, and command line templates.
Item templates are used to add specific elements, such as XAML pages or views, to an existing project.</li>
<li>Maui templates provide a starting point for building cross-platform apps with .NET Maui and include pre-configured project structures and dependencies.</li>
<li>Solution templates allow developers to generate a complete solution with multiple projects and project references.</li>
<li>Visual Studio templates offer a rich mechanism for creating templates with dynamic interfaces and advanced features.</li>
<li>VS Code templates focus on command line interactions and provide a more lightweight and streamlined experience.</li>
<li>Command line templates are used with the &#39;dotnet new&#39; command and offer a simple and flexible way to generate project structures.</li>
<li>Creating custom templates can help standardize development practices within an organization and simplify the onboarding process for new projects.</li>
<li>Using templates can save time and effort by automating repetitive tasks and providing a consistent starting point for app development.</li>
<li>Consider using existing templates or creating your own templates to improve productivity and maintain coding best practices.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>00:31 The Importance of Templates for Mobile Apps</li>
<li>01:38 Default Templates in Maui</li>
<li>02:35 Item Templates in VS Code</li>
<li>03:28 The Challenge of Remembering Details</li>
<li>04:11 Customizing Templates</li>
<li>05:38 Balancing Complexity and Simplicity in Templates</li>
<li>06:55 Different Needs for New and Experienced Users</li>
<li>07:45 Creating Custom Templates</li>
<li>08:23 Managing Permissions and Entitlements</li>
<li>09:44 The Power of Templates in Saving Time</li>
<li>11:05 The Challenge of Changing Requirements</li>
<li>13:21 Managing Permissions in Templates</li>
<li>14:42 Working with Templates in Different Environments</li>
<li>15:23 Using Conditional Logic in Templates</li>
<li>17:42 Generating Entitlements in Templates</li>
<li>19:14 Simplifying Project Files</li>
<li>21:17 The Power of MSBuild and CSProj Files</li>
<li>23:01 Overcoming Fear of Project Files</li>
<li>25:21 Using Project Files for Customization</li>
<li>26:41 The Benefits of Plugin Templates</li>
<li>30:51 Including Popular Packages in Templates</li>
<li>32:33 The Value of Community Templates</li>
<li>33:32 Introduction to Templates</li>
<li>34:05 Different Template Options</li>
<li>35:39 Item Templates</li>
<li>36:09 Maui Templates</li>
<li>37:46 Solution Templates</li>
<li>38:15 Visual Studio Templates</li>
<li>39:21 VS Code Templates</li>
<li>41:45 Command Line Templates</li>
<li>43:08 Creating Custom Templates</li>
<li>45:16 Standardizing Templates</li>
<li>45:58 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="dotnet-maui-templates (egvijayanand)" rel="nofollow" href="https://github.com/egvijayanand/dotnet-maui-templates">dotnet-maui-templates (egvijayanand)</a></li><li><a title="Shiny Templates" rel="nofollow" href="https://github.com/shinyorg/templates">Shiny Templates</a></li><li><a title="Plugin.Maui.Feature" rel="nofollow" href="https://github.com/jfversluis/Plugin.Maui.Feature">Plugin.Maui.Feature</a></li><li><a title="MauiAppAccelerator" rel="nofollow" href="https://github.com/mrlacey/MauiAppAccelerator">MauiAppAccelerator</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss the importance of templates for mobile app development. They explore the challenges of remembering details like Android manifest and info.plist, and how templates can help simplify the process. They also discuss the default templates in Maui and the benefits of item templates in VS Code. The conversation covers the balance between complexity and simplicity in templates, and the value of custom templates for saving time. They also touch on managing permissions and entitlements, and the power of MSBuild and CSProj files in customizing projects. The episode concludes with a discussion on the benefits of community templates. In this episode, Jon and Allan discuss different types of templates available for building mobile apps with .NET Maui. They cover item templates, Maui templates, solution templates, Visual Studio templates, VS Code templates, and command line templates. They also talk about the benefits of creating custom templates and how they can help standardize development practices within an organization.</p>

<h3>Takeaways</h3>

<ul>
<li>Templates are essential for simplifying mobile app development and helping developers remember important details.</li>
<li>Default templates in Maui and item templates in VS Code provide a starting point for building mobile apps.</li>
<li>Custom templates can save time and help manage permissions and entitlements.
MSBuild and CSProj files offer powerful customization options for projects.</li>
<li>Community templates provide additional resources and options for developers. There are various types of templates available for building mobile apps with .NET Maui, including item templates, Maui templates, solution templates, Visual Studio templates, - VS Code templates, and command line templates.
Item templates are used to add specific elements, such as XAML pages or views, to an existing project.</li>
<li>Maui templates provide a starting point for building cross-platform apps with .NET Maui and include pre-configured project structures and dependencies.</li>
<li>Solution templates allow developers to generate a complete solution with multiple projects and project references.</li>
<li>Visual Studio templates offer a rich mechanism for creating templates with dynamic interfaces and advanced features.</li>
<li>VS Code templates focus on command line interactions and provide a more lightweight and streamlined experience.</li>
<li>Command line templates are used with the &#39;dotnet new&#39; command and offer a simple and flexible way to generate project structures.</li>
<li>Creating custom templates can help standardize development practices within an organization and simplify the onboarding process for new projects.</li>
<li>Using templates can save time and effort by automating repetitive tasks and providing a consistent starting point for app development.</li>
<li>Consider using existing templates or creating your own templates to improve productivity and maintain coding best practices.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>00:31 The Importance of Templates for Mobile Apps</li>
<li>01:38 Default Templates in Maui</li>
<li>02:35 Item Templates in VS Code</li>
<li>03:28 The Challenge of Remembering Details</li>
<li>04:11 Customizing Templates</li>
<li>05:38 Balancing Complexity and Simplicity in Templates</li>
<li>06:55 Different Needs for New and Experienced Users</li>
<li>07:45 Creating Custom Templates</li>
<li>08:23 Managing Permissions and Entitlements</li>
<li>09:44 The Power of Templates in Saving Time</li>
<li>11:05 The Challenge of Changing Requirements</li>
<li>13:21 Managing Permissions in Templates</li>
<li>14:42 Working with Templates in Different Environments</li>
<li>15:23 Using Conditional Logic in Templates</li>
<li>17:42 Generating Entitlements in Templates</li>
<li>19:14 Simplifying Project Files</li>
<li>21:17 The Power of MSBuild and CSProj Files</li>
<li>23:01 Overcoming Fear of Project Files</li>
<li>25:21 Using Project Files for Customization</li>
<li>26:41 The Benefits of Plugin Templates</li>
<li>30:51 Including Popular Packages in Templates</li>
<li>32:33 The Value of Community Templates</li>
<li>33:32 Introduction to Templates</li>
<li>34:05 Different Template Options</li>
<li>35:39 Item Templates</li>
<li>36:09 Maui Templates</li>
<li>37:46 Solution Templates</li>
<li>38:15 Visual Studio Templates</li>
<li>39:21 VS Code Templates</li>
<li>41:45 Command Line Templates</li>
<li>43:08 Creating Custom Templates</li>
<li>45:16 Standardizing Templates</li>
<li>45:58 Conclusion</li>
</ul><p>Links:</p><ul><li><a title="dotnet-maui-templates (egvijayanand)" rel="nofollow" href="https://github.com/egvijayanand/dotnet-maui-templates">dotnet-maui-templates (egvijayanand)</a></li><li><a title="Shiny Templates" rel="nofollow" href="https://github.com/shinyorg/templates">Shiny Templates</a></li><li><a title="Plugin.Maui.Feature" rel="nofollow" href="https://github.com/jfversluis/Plugin.Maui.Feature">Plugin.Maui.Feature</a></li><li><a title="MauiAppAccelerator" rel="nofollow" href="https://github.com/mrlacey/MauiAppAccelerator">MauiAppAccelerator</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>92: Background Tasks can be Shiny</title>
  <link>https://www.gonedotnet.io/92</link>
  <guid isPermaLink="false">30e4f40f-d92e-4afa-b86c-98971d08107f</guid>
  <pubDate>Fri, 02 Feb 2024 12:00:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/30e4f40f-d92e-4afa-b86c-98971d08107f.mp3" length="86496909" type="audio/mpeg"/>
  <itunes:episode>92</itunes:episode>
  <itunes:title>Background Tasks can be Shiny</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>While we long for the simpler days of background services and daemons on the desktop, mobile devices can do things in the background too with a bit more work.  Listen to this tell all episode on backgrounded things, Shiny, and more!</itunes:subtitle>
  <itunes:duration>58:28</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss backgrounding in mobile development. They start by reviewing the virtual list view and how it solved Allan's problem. Then, Jon reveals the story behind his nickname 'Red.' The conversation then shifts to backgrounding in mobile development, covering common scenarios such as data synchronization, image uploads, and real-time GPS. They explore the different approaches to backgrounding on Android and iOS, including the use of services, broadcast receivers, foreground services, and job scheduling. Finally, they discuss background transfers on both platforms. This episode explores background transfers, background tasks, and code execution in mobile apps. The hosts discuss the challenges of handling slow APIs, managing state in background jobs, and scheduling one-off and periodic jobs. They also delve into the intricacies of background GPS in iOS and Android, as well as the considerations for background tasks in Windows. The episode concludes with a brief mention of background tasks in CarPlay and Android Auto.
Takeaways
Backgrounding in mobile development is the ability to execute code when an app is not in the foreground.
Common scenarios for backgrounding include data synchronization, image uploads, and real-time GPS.
On Android, backgrounding can be achieved using services, broadcast receivers, foreground services, and job scheduling.
On iOS, backgrounding is more restricted, with foreground services and background transfers being the primary options.
Developers should consider the specific platform guidelines and limitations when implementing backgrounding functionality. Background transfers are useful for uploading or downloading large files or data sets.
Managing state in background jobs can be challenging, but there are various ways to handle it, such as using preferences or messaging frameworks.
Background GPS in iOS and Android allows for tracking location and other data, but it should be used judiciously to avoid excessive battery drain.
Background tasks in Windows can be achieved using WinRT APIs, but they may be less relevant in desktop scenarios.
Consider the specific use case and user needs before implementing background tasks, and be mindful of the impact on battery life and data usage.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Virtual List View
05:28 The Story Behind the Nickname 'Red'
08:50 Backgrounding in Mobile Development
19:21 Backgrounding on Android
27:45 Backgrounding on iOS
30:31 Background Transfers on Android
31:55 Background Transfers on iOS
32:42 Background Transfers
33:45 Handling Slow APIs
34:38 Background Tasks in iOS 13
36:46 Managing State in Background Jobs
37:45 One-Off and Scheduled Jobs
40:20 Background Execution in iOS
41:36 Passing State to Background Jobs
44:22 Challenges of Data Synchronization
45:45 Background Execution in Windows
46:19 Background GPS in iOS
47:39 Background GPS in Android
51:53 Considerations for Background Tasks
55:12 Background Tasks in CarPlay and Android Auto
</description>
  <itunes:keywords>dotnet, dotnet-maui, shiny, background, jobs, scheduler, service, mobile, android, ios, windows</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss backgrounding in mobile development. They start by reviewing the virtual list view and how it solved Allan&#39;s problem. Then, Jon reveals the story behind his nickname &#39;Red.&#39; The conversation then shifts to backgrounding in mobile development, covering common scenarios such as data synchronization, image uploads, and real-time GPS. They explore the different approaches to backgrounding on Android and iOS, including the use of services, broadcast receivers, foreground services, and job scheduling. Finally, they discuss background transfers on both platforms. This episode explores background transfers, background tasks, and code execution in mobile apps. The hosts discuss the challenges of handling slow APIs, managing state in background jobs, and scheduling one-off and periodic jobs. They also delve into the intricacies of background GPS in iOS and Android, as well as the considerations for background tasks in Windows. The episode concludes with a brief mention of background tasks in CarPlay and Android Auto.</p>

<h3>Takeaways</h3>

<ul>
<li>Backgrounding in mobile development is the ability to execute code when an app is not in the foreground.</li>
<li>Common scenarios for backgrounding include data synchronization, image uploads, and real-time GPS.</li>
<li>On Android, backgrounding can be achieved using services, broadcast receivers, foreground services, and job scheduling.</li>
<li>On iOS, backgrounding is more restricted, with foreground services and background transfers being the primary options.</li>
<li>Developers should consider the specific platform guidelines and limitations when implementing backgrounding functionality. Background transfers are useful for uploading or downloading large files or data sets.</li>
<li>Managing state in background jobs can be challenging, but there are various ways to handle it, such as using preferences or messaging frameworks.</li>
<li>Background GPS in iOS and Android allows for tracking location and other data, but it should be used judiciously to avoid excessive battery drain.</li>
<li>Background tasks in Windows can be achieved using WinRT APIs, but they may be less relevant in desktop scenarios.</li>
<li>Consider the specific use case and user needs before implementing background tasks, and be mindful of the impact on battery life and data usage.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Virtual List View</li>
<li>05:28 The Story Behind the Nickname &#39;Red&#39;</li>
<li>08:50 Backgrounding in Mobile Development</li>
<li>19:21 Backgrounding on Android</li>
<li>27:45 Backgrounding on iOS</li>
<li>30:31 Background Transfers on Android</li>
<li>31:55 Background Transfers on iOS</li>
<li>32:42 Background Transfers</li>
<li>33:45 Handling Slow APIs</li>
<li>34:38 Background Tasks in iOS 13</li>
<li>36:46 Managing State in Background Jobs</li>
<li>37:45 One-Off and Scheduled Jobs</li>
<li>40:20 Background Execution in iOS</li>
<li>41:36 Passing State to Background Jobs</li>
<li>44:22 Challenges of Data Synchronization</li>
<li>45:45 Background Execution in Windows</li>
<li>46:19 Background GPS in iOS</li>
<li>47:39 Background GPS in Android</li>
<li>51:53 Considerations for Background Tasks</li>
<li>55:12 Background Tasks in CarPlay and Android Auto</li>
</ul><p>Links:</p><ul><li><a title="Shiny Jobs" rel="nofollow" href="https://shinylib.net">Shiny Jobs</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss backgrounding in mobile development. They start by reviewing the virtual list view and how it solved Allan&#39;s problem. Then, Jon reveals the story behind his nickname &#39;Red.&#39; The conversation then shifts to backgrounding in mobile development, covering common scenarios such as data synchronization, image uploads, and real-time GPS. They explore the different approaches to backgrounding on Android and iOS, including the use of services, broadcast receivers, foreground services, and job scheduling. Finally, they discuss background transfers on both platforms. This episode explores background transfers, background tasks, and code execution in mobile apps. The hosts discuss the challenges of handling slow APIs, managing state in background jobs, and scheduling one-off and periodic jobs. They also delve into the intricacies of background GPS in iOS and Android, as well as the considerations for background tasks in Windows. The episode concludes with a brief mention of background tasks in CarPlay and Android Auto.</p>

<h3>Takeaways</h3>

<ul>
<li>Backgrounding in mobile development is the ability to execute code when an app is not in the foreground.</li>
<li>Common scenarios for backgrounding include data synchronization, image uploads, and real-time GPS.</li>
<li>On Android, backgrounding can be achieved using services, broadcast receivers, foreground services, and job scheduling.</li>
<li>On iOS, backgrounding is more restricted, with foreground services and background transfers being the primary options.</li>
<li>Developers should consider the specific platform guidelines and limitations when implementing backgrounding functionality. Background transfers are useful for uploading or downloading large files or data sets.</li>
<li>Managing state in background jobs can be challenging, but there are various ways to handle it, such as using preferences or messaging frameworks.</li>
<li>Background GPS in iOS and Android allows for tracking location and other data, but it should be used judiciously to avoid excessive battery drain.</li>
<li>Background tasks in Windows can be achieved using WinRT APIs, but they may be less relevant in desktop scenarios.</li>
<li>Consider the specific use case and user needs before implementing background tasks, and be mindful of the impact on battery life and data usage.</li>
</ul>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Virtual List View</li>
<li>05:28 The Story Behind the Nickname &#39;Red&#39;</li>
<li>08:50 Backgrounding in Mobile Development</li>
<li>19:21 Backgrounding on Android</li>
<li>27:45 Backgrounding on iOS</li>
<li>30:31 Background Transfers on Android</li>
<li>31:55 Background Transfers on iOS</li>
<li>32:42 Background Transfers</li>
<li>33:45 Handling Slow APIs</li>
<li>34:38 Background Tasks in iOS 13</li>
<li>36:46 Managing State in Background Jobs</li>
<li>37:45 One-Off and Scheduled Jobs</li>
<li>40:20 Background Execution in iOS</li>
<li>41:36 Passing State to Background Jobs</li>
<li>44:22 Challenges of Data Synchronization</li>
<li>45:45 Background Execution in Windows</li>
<li>46:19 Background GPS in iOS</li>
<li>47:39 Background GPS in Android</li>
<li>51:53 Considerations for Background Tasks</li>
<li>55:12 Background Tasks in CarPlay and Android Auto</li>
</ul><p>Links:</p><ul><li><a title="Shiny Jobs" rel="nofollow" href="https://shinylib.net">Shiny Jobs</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>91: ListViews and CollectionViews</title>
  <link>https://www.gonedotnet.io/91</link>
  <guid isPermaLink="false">6082bd0e-d609-4f85-9918-a18f51eb8c76</guid>
  <pubDate>Fri, 26 Jan 2024 13:30:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/6082bd0e-d609-4f85-9918-a18f51eb8c76.mp3" length="98941848" type="audio/mpeg"/>
  <itunes:episode>91</itunes:episode>
  <itunes:title>ListViews and CollectionViews</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Displaying lists of things is foundational to mobile apps.  We talk about the history and challenges of ListViews and CollectionViews as well as some alternate implementations!</itunes:subtitle>
  <itunes:duration>1:06:36</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>In this episode, Jon and Allan discuss the challenges and history of implementing lists in mobile apps. They start by addressing a listener question about the difference between CLI commands in MAUI and other UI frameworks. They then dive into the topic of dealing with lists in mobile apps, including the challenges of performance and dynamic sizing. They explore the history of list implementations on different platforms and the limitations of the current CollectionView in MAUI. They also discuss alternative list view controls and the misuse of observable collections in list views. In this episode, Allan and Jon discuss various aspects of building performant lists in mobile apps. They cover topics such as using observable collections for data in motion, optimizing list performance, choosing the right list control, and introduce the Virtualized List View plugin.
Takeaways
Implementing lists in mobile apps can be challenging due to performance and dynamic sizing issues.
The history of list implementations on different platforms, such as ListView, RecyclerView, and UICollectionView, has influenced the current state of CollectionView in MAUI.
The current CollectionView in MAUI tries to do too much and can be complex to use in certain scenarios.
Alternative list view controls, such as Sharpnado and Syncfusion, provide different approaches and features for handling lists in mobile apps.
Observable collections are often misused in list views, leading to performance issues. It is important to use them appropriately and consider using a regular list when the data is not changing frequently. Observable collections are useful for handling data in motion, such as real-time updates or changing distances.
Optimizing list performance should be done based on actual needs and user behavior, rather than prematurely optimizing for potential issues.
Consider the specific requirements of your app when choosing a list control, and don't be afraid to explore alternative solutions like Blazor or web technologies.
The Virtualized List View plugin by Jon is a powerful tool for building performant lists in Xamarin.Forms and can be a great solution for complex scenarios.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction and Weather
01:14 Listener Question: CLI Command in MAUI
05:36 Topic: Dealing with Lists in Mobile Apps
19:35 History of List Implementations
25:51 Challenges with Collection View in MAUI
30:17 Alternative List View Controls
35:38 Observable Collections and List Views
39:18 Observable Collection and Data in Motion
46:11 Optimizing List Performance
52:26 Choosing the Right List Control
56:25 Virtualized List View Plugin
01:00:53 Optimizing List Performance (Continued)
01:04:08 Conclusion and Plug-in of the Week
</description>
  <itunes:keywords>dotnet, dotnetmaui, listview, collectionview, virtuallistview, virtualization</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>In this episode, Jon and Allan discuss the challenges and history of implementing lists in mobile apps. They start by addressing a listener question about the difference between CLI commands in MAUI and other UI frameworks. They then dive into the topic of dealing with lists in mobile apps, including the challenges of performance and dynamic sizing. They explore the history of list implementations on different platforms and the limitations of the current CollectionView in MAUI. They also discuss alternative list view controls and the misuse of observable collections in list views. In this episode, Allan and Jon discuss various aspects of building performant lists in mobile apps. They cover topics such as using observable collections for data in motion, optimizing list performance, choosing the right list control, and introduce the Virtualized List View plugin.</p>

<h3>Takeaways</h3>

<p>Implementing lists in mobile apps can be challenging due to performance and dynamic sizing issues.<br>
The history of list implementations on different platforms, such as ListView, RecyclerView, and UICollectionView, has influenced the current state of CollectionView in MAUI.<br>
The current CollectionView in MAUI tries to do too much and can be complex to use in certain scenarios.<br>
Alternative list view controls, such as Sharpnado and Syncfusion, provide different approaches and features for handling lists in mobile apps.<br>
Observable collections are often misused in list views, leading to performance issues. It is important to use them appropriately and consider using a regular list when the data is not changing frequently. Observable collections are useful for handling data in motion, such as real-time updates or changing distances.<br>
Optimizing list performance should be done based on actual needs and user behavior, rather than prematurely optimizing for potential issues.<br>
Consider the specific requirements of your app when choosing a list control, and don&#39;t be afraid to explore alternative solutions like Blazor or web technologies.<br>
The Virtualized List View plugin by Jon is a powerful tool for building performant lists in Xamarin.Forms and can be a great solution for complex scenarios.</p>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<p>00:00 Introduction and Weather<br>
01:14 Listener Question: CLI Command in MAUI<br>
05:36 Topic: Dealing with Lists in Mobile Apps<br>
19:35 History of List Implementations<br>
25:51 Challenges with Collection View in MAUI<br>
30:17 Alternative List View Controls<br>
35:38 Observable Collections and List Views<br>
39:18 Observable Collection and Data in Motion<br>
46:11 Optimizing List Performance<br>
52:26 Choosing the Right List Control<br>
56:25 Virtualized List View Plugin<br>
01:00:53 Optimizing List Performance (Continued)<br>
01:04:08 Conclusion and Plug-in of the Week</p><p>Links:</p><ul><li><a title="Redth&#39;s MAUI VirtualListView" rel="nofollow" href="https://github.com/Redth/Maui.VirtualListView">Redth's MAUI VirtualListView</a></li><li><a title="Sharpnado CollectionView" rel="nofollow" href="https://github.com/roubachof/Sharpnado.CollectionView">Sharpnado CollectionView</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>In this episode, Jon and Allan discuss the challenges and history of implementing lists in mobile apps. They start by addressing a listener question about the difference between CLI commands in MAUI and other UI frameworks. They then dive into the topic of dealing with lists in mobile apps, including the challenges of performance and dynamic sizing. They explore the history of list implementations on different platforms and the limitations of the current CollectionView in MAUI. They also discuss alternative list view controls and the misuse of observable collections in list views. In this episode, Allan and Jon discuss various aspects of building performant lists in mobile apps. They cover topics such as using observable collections for data in motion, optimizing list performance, choosing the right list control, and introduce the Virtualized List View plugin.</p>

<h3>Takeaways</h3>

<p>Implementing lists in mobile apps can be challenging due to performance and dynamic sizing issues.<br>
The history of list implementations on different platforms, such as ListView, RecyclerView, and UICollectionView, has influenced the current state of CollectionView in MAUI.<br>
The current CollectionView in MAUI tries to do too much and can be complex to use in certain scenarios.<br>
Alternative list view controls, such as Sharpnado and Syncfusion, provide different approaches and features for handling lists in mobile apps.<br>
Observable collections are often misused in list views, leading to performance issues. It is important to use them appropriately and consider using a regular list when the data is not changing frequently. Observable collections are useful for handling data in motion, such as real-time updates or changing distances.<br>
Optimizing list performance should be done based on actual needs and user behavior, rather than prematurely optimizing for potential issues.<br>
Consider the specific requirements of your app when choosing a list control, and don&#39;t be afraid to explore alternative solutions like Blazor or web technologies.<br>
The Virtualized List View plugin by Jon is a powerful tool for building performant lists in Xamarin.Forms and can be a great solution for complex scenarios.</p>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<p>00:00 Introduction and Weather<br>
01:14 Listener Question: CLI Command in MAUI<br>
05:36 Topic: Dealing with Lists in Mobile Apps<br>
19:35 History of List Implementations<br>
25:51 Challenges with Collection View in MAUI<br>
30:17 Alternative List View Controls<br>
35:38 Observable Collections and List Views<br>
39:18 Observable Collection and Data in Motion<br>
46:11 Optimizing List Performance<br>
52:26 Choosing the Right List Control<br>
56:25 Virtualized List View Plugin<br>
01:00:53 Optimizing List Performance (Continued)<br>
01:04:08 Conclusion and Plug-in of the Week</p><p>Links:</p><ul><li><a title="Redth&#39;s MAUI VirtualListView" rel="nofollow" href="https://github.com/Redth/Maui.VirtualListView">Redth's MAUI VirtualListView</a></li><li><a title="Sharpnado CollectionView" rel="nofollow" href="https://github.com/roubachof/Sharpnado.CollectionView">Sharpnado CollectionView</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>90: Push Notifications are Hard!</title>
  <link>https://www.gonedotnet.io/90</link>
  <guid isPermaLink="false">168d05d0-eec1-42af-bf5f-e86571e6219a</guid>
  <pubDate>Fri, 19 Jan 2024 10:00:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/168d05d0-eec1-42af-bf5f-e86571e6219a.mp3" length="86426753" type="audio/mpeg"/>
  <itunes:episode>90</itunes:episode>
  <itunes:title>Push Notifications are Hard!</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>The complexities of implementing push notifications on iOS and Android are many.  In this episode we discuss the history of Push Notifications, the setup and configuration process on iOS and Android platforms, their lifecycle, the differences between platforms, as well as the server to server complexities of sending notifications.</itunes:subtitle>
  <itunes:duration>1:00:05</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>Summary
In this episode, Jon and Allan discuss the complexities of implementing push notifications on iOS and Android. They delve into the history of push notifications and the challenges developers face in tackling this topic. They explore the setup and configuration process for both platforms, including the use of certificates and entitlements on iOS and the use of Firebase on Android. They also discuss the lifecycle of notifications, handling background execution, and the differences between iOS and Android in terms of permissions and notification handling. In this episode, Jon and Allan discuss various aspects of push notifications on Android, including permissions and changes, setting up notifications, specifying intents in notification payloads, silent notifications, sending notifications to tags, handling multiple devices, and the Shiny Push library. They also touch on source generators and boilerplate code. Overall, the conversation provides valuable insights into the complexities and best practices of implementing push notifications on Android.
Takeaways
Push notifications are a complex topic that require careful setup and configuration on both iOS and Android.
Developers face challenges in implementing push notifications due to the differences between platforms and the evolving nature of the technology.
The setup and configuration process involves obtaining certificates and entitlements on iOS and using Firebase on Android.
The lifecycle of notifications and the handling of background execution differ between iOS and Android.
Permissions and changes in Android, such as the introduction of post-notifications, add another layer of complexity to push notification implementation. Permissions and changes in Android can impact the implementation of push notifications.
Notifications on Android can be set up to route directly to an activity by specifying an intent in the notification payload.
Silent notifications on Android can be used to wake up the app and perform background tasks.
Sending notifications to tags allows for logical grouping and targeted delivery on Android.
Handling multiple devices and ensuring notifications are received on all devices can be challenging.
The Shiny Push library simplifies the implementation of push notifications on Android.
Source generators can help reduce boilerplate code and make implementation easier.
People
Hosts: Jon Dick, Allan Ritchie
Audio Engineer: Jim Heath
Chapters
00:00 Introduction
01:09 Tackling Hard Problems
04:00 History of Push Notifications
08:30 Setup and Configuration on iOS
13:02 Registering for Notifications on iOS
15:22 Lifecycle of Notifications on iOS
17:43 Silent Notifications on iOS
19:27 Handling Background Execution on iOS
22:06 Complexity of Cross-Platform Implementation
24:19 Setup and Configuration on Android
28:35 Handling Notifications on Android
32:19 Permissions and Changes in Android
33:16 Permissions and Changes
35:27 Setting Up Notifications on Android
36:43 Specifying Intents in Notification Payloads
38:19 Silent Notifications on Android
41:48 Sending Notifications to Tags on Android
44:29 Handling Multiple Devices on Android
49:15 Shiny Push Library
52:21 Server-to-Server Notifications
56:08 Source Generators and Boilerplate
57:44 Plugin Pick: Shiny Push
</description>
  <itunes:keywords>dotnet, dotnetmaui, push, apns, c2dm, gcm, notifications, shiny</itunes:keywords>
  <content:encoded>
    <![CDATA[<h3>Summary</h3>

<p>In this episode, Jon and Allan discuss the complexities of implementing push notifications on iOS and Android. They delve into the history of push notifications and the challenges developers face in tackling this topic. They explore the setup and configuration process for both platforms, including the use of certificates and entitlements on iOS and the use of Firebase on Android. They also discuss the lifecycle of notifications, handling background execution, and the differences between iOS and Android in terms of permissions and notification handling. In this episode, Jon and Allan discuss various aspects of push notifications on Android, including permissions and changes, setting up notifications, specifying intents in notification payloads, silent notifications, sending notifications to tags, handling multiple devices, and the Shiny Push library. They also touch on source generators and boilerplate code. Overall, the conversation provides valuable insights into the complexities and best practices of implementing push notifications on Android.</p>

<h3>Takeaways</h3>

<p>Push notifications are a complex topic that require careful setup and configuration on both iOS and Android.<br>
Developers face challenges in implementing push notifications due to the differences between platforms and the evolving nature of the technology.<br>
The setup and configuration process involves obtaining certificates and entitlements on iOS and using Firebase on Android.<br>
The lifecycle of notifications and the handling of background execution differ between iOS and Android.<br>
Permissions and changes in Android, such as the introduction of post-notifications, add another layer of complexity to push notification implementation. Permissions and changes in Android can impact the implementation of push notifications.<br>
Notifications on Android can be set up to route directly to an activity by specifying an intent in the notification payload.<br>
Silent notifications on Android can be used to wake up the app and perform background tasks.<br>
Sending notifications to tags allows for logical grouping and targeted delivery on Android.<br>
Handling multiple devices and ensuring notifications are received on all devices can be challenging.<br>
The Shiny Push library simplifies the implementation of push notifications on Android.<br>
Source generators can help reduce boilerplate code and make implementation easier.</p>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>01:09 Tackling Hard Problems</li>
<li>04:00 History of Push Notifications</li>
<li>08:30 Setup and Configuration on iOS</li>
<li>13:02 Registering for Notifications on iOS</li>
<li>15:22 Lifecycle of Notifications on iOS</li>
<li>17:43 Silent Notifications on iOS</li>
<li>19:27 Handling Background Execution on iOS</li>
<li>22:06 Complexity of Cross-Platform Implementation</li>
<li>24:19 Setup and Configuration on Android</li>
<li>28:35 Handling Notifications on Android</li>
<li>32:19 Permissions and Changes in Android</li>
<li>33:16 Permissions and Changes</li>
<li>35:27 Setting Up Notifications on Android</li>
<li>36:43 Specifying Intents in Notification Payloads</li>
<li>38:19 Silent Notifications on Android</li>
<li>41:48 Sending Notifications to Tags on Android</li>
<li>44:29 Handling Multiple Devices on Android</li>
<li>49:15 Shiny Push Library</li>
<li>52:21 Server-to-Server Notifications</li>
<li>56:08 Source Generators and Boilerplate</li>
<li>57:44 Plugin Pick: Shiny Push</li>
</ul><p>Links:</p><ul><li><a title="Shiny Push Notifications" rel="nofollow" href="https://shinylib.net/server/push/">Shiny Push Notifications</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<h3>Summary</h3>

<p>In this episode, Jon and Allan discuss the complexities of implementing push notifications on iOS and Android. They delve into the history of push notifications and the challenges developers face in tackling this topic. They explore the setup and configuration process for both platforms, including the use of certificates and entitlements on iOS and the use of Firebase on Android. They also discuss the lifecycle of notifications, handling background execution, and the differences between iOS and Android in terms of permissions and notification handling. In this episode, Jon and Allan discuss various aspects of push notifications on Android, including permissions and changes, setting up notifications, specifying intents in notification payloads, silent notifications, sending notifications to tags, handling multiple devices, and the Shiny Push library. They also touch on source generators and boilerplate code. Overall, the conversation provides valuable insights into the complexities and best practices of implementing push notifications on Android.</p>

<h3>Takeaways</h3>

<p>Push notifications are a complex topic that require careful setup and configuration on both iOS and Android.<br>
Developers face challenges in implementing push notifications due to the differences between platforms and the evolving nature of the technology.<br>
The setup and configuration process involves obtaining certificates and entitlements on iOS and using Firebase on Android.<br>
The lifecycle of notifications and the handling of background execution differ between iOS and Android.<br>
Permissions and changes in Android, such as the introduction of post-notifications, add another layer of complexity to push notification implementation. Permissions and changes in Android can impact the implementation of push notifications.<br>
Notifications on Android can be set up to route directly to an activity by specifying an intent in the notification payload.<br>
Silent notifications on Android can be used to wake up the app and perform background tasks.<br>
Sending notifications to tags allows for logical grouping and targeted delivery on Android.<br>
Handling multiple devices and ensuring notifications are received on all devices can be challenging.<br>
The Shiny Push library simplifies the implementation of push notifications on Android.<br>
Source generators can help reduce boilerplate code and make implementation easier.</p>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>01:09 Tackling Hard Problems</li>
<li>04:00 History of Push Notifications</li>
<li>08:30 Setup and Configuration on iOS</li>
<li>13:02 Registering for Notifications on iOS</li>
<li>15:22 Lifecycle of Notifications on iOS</li>
<li>17:43 Silent Notifications on iOS</li>
<li>19:27 Handling Background Execution on iOS</li>
<li>22:06 Complexity of Cross-Platform Implementation</li>
<li>24:19 Setup and Configuration on Android</li>
<li>28:35 Handling Notifications on Android</li>
<li>32:19 Permissions and Changes in Android</li>
<li>33:16 Permissions and Changes</li>
<li>35:27 Setting Up Notifications on Android</li>
<li>36:43 Specifying Intents in Notification Payloads</li>
<li>38:19 Silent Notifications on Android</li>
<li>41:48 Sending Notifications to Tags on Android</li>
<li>44:29 Handling Multiple Devices on Android</li>
<li>49:15 Shiny Push Library</li>
<li>52:21 Server-to-Server Notifications</li>
<li>56:08 Source Generators and Boilerplate</li>
<li>57:44 Plugin Pick: Shiny Push</li>
</ul><p>Links:</p><ul><li><a title="Shiny Push Notifications" rel="nofollow" href="https://shinylib.net/server/push/">Shiny Push Notifications</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>89: Bound for greater Bindings</title>
  <link>https://www.gonedotnet.io/89</link>
  <guid isPermaLink="false">b69c6b3c-5b68-4f6f-86c7-3cf00efd6fc9</guid>
  <pubDate>Fri, 12 Jan 2024 10:30:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/b69c6b3c-5b68-4f6f-86c7-3cf00efd6fc9.mp3" length="67421920" type="audio/mpeg"/>
  <itunes:episode>89</itunes:episode>
  <itunes:title>Bound for greater Bindings</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Bindings are often used to integrate native libraries into .NET MAUI apps.  We talk about the challenges of creating bindings for Android and iOS platforms and some alternative techniques such as Slim bindings and Platform Channels for accessiong Swift/ObjC and Java/Kotlin code or libraries in your .NET MAUI apps.</itunes:subtitle>
  <itunes:duration>53:37</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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 (https://github.com/Redth/xamarin.binding.helpers) which helps make it easier to create slim bindings on Android, as well as Platform Channels (https://github.com/Redth/Microsoft.Maui.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
</description>
  <itunes:keywords>dotnet, dotnet-maui, maui, dotnetmaui, bindings, android, ios, swift, objective-c, java, kotlin, interop</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>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.</p>

<h3>Plugins, Packages, and Products</h3>

<p>This week we&#39;re talking about <a href="https://github.com/Redth/xamarin.binding.helpers" rel="nofollow">Xamarin.Binding.Helpers</a> which helps make it easier to create slim bindings on Android, as well as <a href="https://github.com/Redth/Microsoft.Maui.Platform.Channels" rel="nofollow">Platform Channels</a> which is an experiment for creating a message passing interface between native code and .NET MAUI apps.</p>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>01:09 Understanding Bindings in a Mobile.NET, Maui World</li>
<li>02:00 Projections of Native APIs into the Managed.NET World</li>
<li>03:41 The Evolution of Bindings</li>
<li>04:06 The Challenge of Android X Libraries</li>
<li>05:00 Dealing with Bindings in Xamarin</li>
<li>06:07 The Complexity of Android Libraries</li>
<li>07:03 Creating Android Bindings</li>
<li>07:30 The Process of Android Binding</li>
<li>08:16 Challenges with Java and Kotlin Libraries</li>
<li>09:08 Handling Complex Inheritance in Java and Kotlin Libraries</li>
<li>10:22 The Sprawl of Android X Libraries</li>
<li>11:31 The Challenges of Binding Android X Libraries</li>
<li>12:09 The Simplicity of Binding Platform APIs</li>
<li>13:16 The Differences Between iOS and Android Bindings</li>
<li>14:22 Creating iOS Bindings</li>
<li>15:48 The Challenges of Objective-C and Swift Libraries</li>
<li>18:36 The Need for Slim Bindings</li>
<li>20:00 The Challenge of Dependency Chains</li>
<li>21:54 The Concept of Slim Bindings</li>
<li>23:46 The Advantages of Slim Bindings</li>
<li>27:11 Determining When to Bind the Whole Library</li>
<li>29:34 Debugging Slim Bindings</li>
<li>34:52 The Concept of Platform Channels</li>
<li>38:58 Performance Considerations of Platform Channels</li>
<li>40:37 The Future of Bindings</li>
<li>40:46 Integration with Xcode Project</li>
<li>42:41 Challenges with Tooling</li>
<li>46:48 Handling AndroidX Dependencies</li>
<li>50:15 Platform Channels in Maui</li>
<li>53:00 Plugin Recommendation: Xamarin Binding Helpers</li>
</ul><p>Links:</p><ul><li><a title="Objective Sharpie" rel="nofollow" href="https://learn.microsoft.com/xamarin/cross-platform/macios/binding/objective-sharpie/">Objective Sharpie</a></li><li><a title="Xamarin.Binding.Helpers" rel="nofollow" href="https://github.com/Redth/Xamarin.Binding.Helpers">Xamarin.Binding.Helpers</a></li><li><a title="Platform Channels" rel="nofollow" href="https://github.com/Redth/Microsoft.Maui.Platform.Channels">Platform Channels</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>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.</p>

<h3>Plugins, Packages, and Products</h3>

<p>This week we&#39;re talking about <a href="https://github.com/Redth/xamarin.binding.helpers" rel="nofollow">Xamarin.Binding.Helpers</a> which helps make it easier to create slim bindings on Android, as well as <a href="https://github.com/Redth/Microsoft.Maui.Platform.Channels" rel="nofollow">Platform Channels</a> which is an experiment for creating a message passing interface between native code and .NET MAUI apps.</p>

<h3>People</h3>

<ul>
<li>Hosts: Jon Dick, Allan Ritchie</li>
<li>Audio Engineer: Jim Heath</li>
</ul>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction</li>
<li>01:09 Understanding Bindings in a Mobile.NET, Maui World</li>
<li>02:00 Projections of Native APIs into the Managed.NET World</li>
<li>03:41 The Evolution of Bindings</li>
<li>04:06 The Challenge of Android X Libraries</li>
<li>05:00 Dealing with Bindings in Xamarin</li>
<li>06:07 The Complexity of Android Libraries</li>
<li>07:03 Creating Android Bindings</li>
<li>07:30 The Process of Android Binding</li>
<li>08:16 Challenges with Java and Kotlin Libraries</li>
<li>09:08 Handling Complex Inheritance in Java and Kotlin Libraries</li>
<li>10:22 The Sprawl of Android X Libraries</li>
<li>11:31 The Challenges of Binding Android X Libraries</li>
<li>12:09 The Simplicity of Binding Platform APIs</li>
<li>13:16 The Differences Between iOS and Android Bindings</li>
<li>14:22 Creating iOS Bindings</li>
<li>15:48 The Challenges of Objective-C and Swift Libraries</li>
<li>18:36 The Need for Slim Bindings</li>
<li>20:00 The Challenge of Dependency Chains</li>
<li>21:54 The Concept of Slim Bindings</li>
<li>23:46 The Advantages of Slim Bindings</li>
<li>27:11 Determining When to Bind the Whole Library</li>
<li>29:34 Debugging Slim Bindings</li>
<li>34:52 The Concept of Platform Channels</li>
<li>38:58 Performance Considerations of Platform Channels</li>
<li>40:37 The Future of Bindings</li>
<li>40:46 Integration with Xcode Project</li>
<li>42:41 Challenges with Tooling</li>
<li>46:48 Handling AndroidX Dependencies</li>
<li>50:15 Platform Channels in Maui</li>
<li>53:00 Plugin Recommendation: Xamarin Binding Helpers</li>
</ul><p>Links:</p><ul><li><a title="Objective Sharpie" rel="nofollow" href="https://learn.microsoft.com/xamarin/cross-platform/macios/binding/objective-sharpie/">Objective Sharpie</a></li><li><a title="Xamarin.Binding.Helpers" rel="nofollow" href="https://github.com/Redth/Xamarin.Binding.Helpers">Xamarin.Binding.Helpers</a></li><li><a title="Platform Channels" rel="nofollow" href="https://github.com/Redth/Microsoft.Maui.Platform.Channels">Platform Channels</a></li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>88: Return of Gone Mobile and the State of .NET MAUI</title>
  <link>https://www.gonedotnet.io/88</link>
  <guid isPermaLink="false">d95fbf0f-be3e-4ad9-b5c9-1b2000ec51f4</guid>
  <pubDate>Fri, 05 Jan 2024 10:00:00 -0500</pubDate>
  <author>Jonathan Dick, Allan Ritchie</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/7030a7ff-40f9-4d15-94a3-873772db7997/d95fbf0f-be3e-4ad9-b5c9-1b2000ec51f4.mp3" length="62167052" type="audio/mpeg"/>
  <itunes:episode>88</itunes:episode>
  <itunes:title>Return of Gone Mobile and the State of .NET MAUI</itunes:title>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>Jonathan Dick, Allan Ritchie</itunes:author>
  <itunes:subtitle>Gone Mobile returns after a several year hiatus!  In this episode, Jon and Allan discuss the state of .NET MAUI, the challenges of mobile development, the benefits of using Blazor WebView in Maui apps and surprisingly more!</itunes:subtitle>
  <itunes:duration>48:48</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://a.fireside.fm/assets/v1/default/cover-1b0743b45cefaafc09a35208784af975fca29a3142661c359814c79a92a498af.jpg?v=5"/>
  <description>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 
</description>
  <itunes:keywords>.net, .net maui, dotnet, maui, dotnetmaui, c#, blazor, di, handlers, renderers, source generators</itunes:keywords>
  <content:encoded>
    <![CDATA[<h3>Summary</h3>

<p>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 &#39;Plugin Package or Product,&#39; 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.</p>

<h3>Takeaways</h3>

<p>The .NET Maui framework has made significant progress, with improvements in tooling, performance, and support for modern mobile app development.<br>
Blazor WebView in Maui allows developers to leverage their existing Blazor skills and codebase to build hybrid mobile apps.<br>
The transition from custom renders to handlers in Maui simplifies the development process and improves performance.<br>
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.<br>
Tools like DS router and DS dotnet trace can be used to profile apps and gather trace files and speed scope logs for analysis.<br>
Early measurement and optimization can help prevent performance issues and improve the overall user experience.<br>
Compiled bindings is a library that enhances the XAML experience by providing additional operators and reducing verbosity, making it easier to work with XAML.</p>

<h3>Plugins, Packages, and Products</h3>

<p>This week we&#39;re talking about Compiled Bindings: <a href="https://github.com/levitali/CompiledBindings" rel="nofollow">https://github.com/levitali/CompiledBindings</a> which provides {x:Bind} Markup Extension for WPF, MAUI and Xamarin Forms.</p>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Changes to the Podcast</li>
<li>06:17 State of .NET Maui</li>
<li>09:24 Dependency Injection in .NET Maui</li>
<li>11:12 Evolution of the Mono Runtime</li>
<li>13:14 Challenges of Mobile Development</li>
<li>19:22 Long-Term Release of .NET Maui</li>
<li>21:20 Blazor Hybrid App</li>
<li>23:43 Benefits of Blazor WebView</li>
<li>25:49 Mixing Blazor and Maui</li>
<li>31:35 Handlers in .NET Maui</li>
<li>35:13 Porting Custom Renders to Handlers</li>
<li>37:03 Source Generators in .NET Maui</li>
<li>38:56 App Profiling and Performance Optimization</li>
<li>41:29 Plugin Package or Product: Compiled Bindings</li>
<li>47:04 Closing Remarks and Call to Action</li>
</ul><p>Links:</p><ul><li><a title="CompiledBindings.Maui" rel="nofollow" href="https://github.com/levitali/CompiledBindings">CompiledBindings.Maui</a></li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<h3>Summary</h3>

<p>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 &#39;Plugin Package or Product,&#39; 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.</p>

<h3>Takeaways</h3>

<p>The .NET Maui framework has made significant progress, with improvements in tooling, performance, and support for modern mobile app development.<br>
Blazor WebView in Maui allows developers to leverage their existing Blazor skills and codebase to build hybrid mobile apps.<br>
The transition from custom renders to handlers in Maui simplifies the development process and improves performance.<br>
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.<br>
Tools like DS router and DS dotnet trace can be used to profile apps and gather trace files and speed scope logs for analysis.<br>
Early measurement and optimization can help prevent performance issues and improve the overall user experience.<br>
Compiled bindings is a library that enhances the XAML experience by providing additional operators and reducing verbosity, making it easier to work with XAML.</p>

<h3>Plugins, Packages, and Products</h3>

<p>This week we&#39;re talking about Compiled Bindings: <a href="https://github.com/levitali/CompiledBindings" rel="nofollow">https://github.com/levitali/CompiledBindings</a> which provides {x:Bind} Markup Extension for WPF, MAUI and Xamarin Forms.</p>

<h3>Chapters</h3>

<ul>
<li>00:00 Introduction and Changes to the Podcast</li>
<li>06:17 State of .NET Maui</li>
<li>09:24 Dependency Injection in .NET Maui</li>
<li>11:12 Evolution of the Mono Runtime</li>
<li>13:14 Challenges of Mobile Development</li>
<li>19:22 Long-Term Release of .NET Maui</li>
<li>21:20 Blazor Hybrid App</li>
<li>23:43 Benefits of Blazor WebView</li>
<li>25:49 Mixing Blazor and Maui</li>
<li>31:35 Handlers in .NET Maui</li>
<li>35:13 Porting Custom Renders to Handlers</li>
<li>37:03 Source Generators in .NET Maui</li>
<li>38:56 App Profiling and Performance Optimization</li>
<li>41:29 Plugin Package or Product: Compiled Bindings</li>
<li>47:04 Closing Remarks and Call to Action</li>
</ul><p>Links:</p><ul><li><a title="CompiledBindings.Maui" rel="nofollow" href="https://github.com/levitali/CompiledBindings">CompiledBindings.Maui</a></li></ul>]]>
  </itunes:summary>
</item>
  </channel>
</rss>
