This video, from evolve 2016 covers Test Driven Development in Xamarin.Forms.
Best Posts & Podcasts of 2022 – JesseLiberty.com
Picking the best blog posts is pretty painless as I’m the only one posting, so there is no one to insult, but picking the best podcasts risks slighting some of the amazing people who came on Yet Another Podcast.
5 Best Blog Posts
The best blog posts are those that either alone or in a series teach something valuable and current. For 2022, these stand out:
- Forget Me Not – a non-trivial application built in .NET MAUI (series, part 1)
- A Dozen Utilities for programmers
- Learning .NET MAUI – part 1 of 15
- Advanced Data Binding part 1 of 4
- The Miracle of IQueryAttributable – honorable mention from 12/21
5 Best Podcasts
We had 11 fantastic podcasts in 2022, how do I pick the top five? The only reasonable approach is by their popularity. In date order, they are:
- James Montemagno on .NET MAUI
- Uncle Bob Martin on Agile Programming
- C# 11 with Mads Torgerson and Dustin Campbell (parts 1 and 2)
- Bill Wagner on C# 11 Documentation
- David Ortinau on .NET MAUI
It was quite a year for me as well. I started my newest book .NET MAUI for C# Developers (Packt) to be released at the end of the summer (or, I hope, earlier!)
I also moved from Twitter to Mastodon, which was a big and terrific change. I opened my tiny book store, mostly to keep track of my favorite books, and I opened a new web site for my novel in search of an agent.
Along the way I shed 100 pounds, trained my dog not to pull and, oh yeah, worked full time writing mobile applications for CNH Industrial.
Welcome to what someone on Mastodon called 2020 v3. Let’s hope it is a good and safe year.

David Ortinau on .NET MAUI
David Ortinau, Program Manager .NET and voice of .NET MAUI discusses MAUI as a platform, Blazor Hybrid, Community Toolkits, as well as what’s on the road map for .NET MAUI.

Bill Wagner on C# 11 – Part 1
Bill Wagner creates C# learning and reference materials for https://learn.microsoft.com. He works with colleagues on the C# team, related content teams, and customers to provide resources for everyone that wants to learn more about C#. He’s also a member of the ECMA C# Standardization committee, working to update the C# standard.
I asked Bill, to come talk about C# 11 and to do so from the perspective of a programmer who stopped following the newest additions to C# as of C# 7 or 8 or so. That is, how do we catch up if we’ve fallen behind on the latest features?
This is part one, in which we discuss, among other things, Pattern Matching.
Here is a link to the tutorial Bill describes.
And here is a link to the top of the C# documentation.

Mark Price on C# 11
Mark Price joined me to discuss C# 11 and his books, C# 11 and .NET 7 and Apps and Services with .NET 7. Both books are available in my tiny book store, listed under Favorite books for programmers.
Note: A gremlin got into the original audio; fixed now. I apologize for the inconvenience.

.NET MAUI – Forget Me Not – 7 – Unit Testing
Picking up where we left off, I want to add unit tests to my program. Now, I know, I should have been using unit tests all along. I have no excuse and hang my head in shame.
To get started, I’ve decided to add xUnit through NuGet. Easy peasy. But it won’t work. The full explanation is here. Great article. Here, in a nutshell are the steps you need to perform:
- Create an xUnit test project in the same solution as ForgetMeNot
- Make sure it runs
- Add a reference to the ForgetMeNot project
- This wil not run yet. Here is where the fun begins
- First, open up the ForgetMeNot project and change the TargetFrameworks to
<TargetFrameworks>net6.0;net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
6. Replace the output statement with
<OutputType Condition="'$(TargetFramework)' != 'net6.0'">Exe</OutputType>
7. Unload ForgetMeNot, reload it, close Visual Studio, open Visual Studio and voila! it will work
(The whys and wherefores are explained very well in the article referenced above)
NSubstitute for mocking
Continue reading.NET MAUI Forget Me Not – Part 6.5
I have posted the (incomplete) code at https://github.com/jesseliberty/GraniteStateForgetMeNot and a video of much of the material captured in this series is now on YouTube
Mads Torgersen & Dustin Campbell Part 2
Part 2 of my discussion with Mads and Dustin on what’s new in C# 11 with a focus on when application developers will use the new features.
Favorite Fiction
I’ve started a tiny bookstore of my favorite books.
C# 11 with Mads Torgersen & Dustin Campbell Part 1
Joined today by Mads and Dustin to discuss what’s new in C# 11 with a focus on when application developers will use the new features.

that the person he is talking to (cropped out) is Dustin!
.NET MAUI – Forget Me Not – Part 6
Building on the previous postings, today I want to discuss the magic of Dependency Injection (DI)
Dependency Injection makes for cleaner and more testable code. We’ll get into testing and Mocks in a later blog post, but using DI allows you to substitute a mock service for a real one. In any case, it is magical.
Even though this is powerful, this posting will be short, because once you know how to do it, it is very easy.
Let’s look at BuddyPreferences. This is the page that lists all the preferences of a specific buddy. We start, in BuddyPreferences.xaml.cs by creating BuddyPreferencesViewModel so that it can be our BindingContext. We pass the ViewModel into the constructor. Here is the complete class:
public partial class BuddyPreferences : ContentPage
{
private BuddyPreferencesViewModel vm;
public BuddyPreferences(BuddyPreferencesViewModel vm)
{
this.vm = vm;
BindingContext = vm;
InitializeComponent();
}
}
Continue reading






































