- 291
- 2 868 828
SingletonSean
United States
Приєднався 28 вер 2019
Hi, I’m Sean! I’m a software developer with a long history of .NET development (mostly desktop). Outside of the .NET world, I have a huge passion for building web applications and I use Neovim btw.
This channel is focused on .NET desktop development and general software development topics. I try to present topics in a practical and entertaining way so that you can easily apply them to your own projects.
Overall, my goal is to further empower you with knowledge, skills, and experience to build a successful project… or in other words, be a “rockstar” software developer (yes, you heard that right)!
This channel is focused on .NET desktop development and general software development topics. I try to present topics in a practical and entertaining way so that you can easily apply them to your own projects.
Overall, my goal is to further empower you with knowledge, skills, and experience to build a successful project… or in other words, be a “rockstar” software developer (yes, you heard that right)!
The Most Wonderful Type of Tests
Learn how to write integration tests in a .NET application!
🕗 Timestamps:
0:00 - Introduction
0:30 - When to Integration Test
1:29 - Creating a Test Project
2:59 - Instantiating Test Dependencies (via Dependency Injection)
6:41 - Mocking the Boundaries (via NSubstitute)
9:14 - Getting the Test to Run and Celebrating the Benefits
11:10 - Creating Reusable Mocks
13:51 - Writing an Advanced Test
17:31 - Summary
📦 Source code: github.com/SingletonSean/streakathon
🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03hb55qLwnSC3yyxR2VIPOxI.html
🔗 Testing Trophy Video: ua-cam.com/video/8Tb61_EX3DM/v-deo.html
💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9Tf_NYcIg.htmljoin
🏠 Discord: discord.gg/6hkR98BaCz
🐤 Twitter: SingletonSean_
🏆 Donate: www.paypal.com/donate?hosted_button_id=UBZCZWX2UVWJE
✉️ Email: youtube@singletonsean.com
➖➖➖➖➖➖➖➖➖➖
© Credits
🎵 Outro: pixabay.com/music/synthwave-computer-love-121106/
🕗 Timestamps:
0:00 - Introduction
0:30 - When to Integration Test
1:29 - Creating a Test Project
2:59 - Instantiating Test Dependencies (via Dependency Injection)
6:41 - Mocking the Boundaries (via NSubstitute)
9:14 - Getting the Test to Run and Celebrating the Benefits
11:10 - Creating Reusable Mocks
13:51 - Writing an Advanced Test
17:31 - Summary
📦 Source code: github.com/SingletonSean/streakathon
🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03hb55qLwnSC3yyxR2VIPOxI.html
🔗 Testing Trophy Video: ua-cam.com/video/8Tb61_EX3DM/v-deo.html
💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9Tf_NYcIg.htmljoin
🏠 Discord: discord.gg/6hkR98BaCz
🐤 Twitter: SingletonSean_
🏆 Donate: www.paypal.com/donate?hosted_button_id=UBZCZWX2UVWJE
✉️ Email: youtube@singletonsean.com
➖➖➖➖➖➖➖➖➖➖
© Credits
🎵 Outro: pixabay.com/music/synthwave-computer-love-121106/
Переглядів: 939
Відео
Setup Logging in Your .NET MAUI Application (feat. Serilog)
Переглядів 77814 днів тому
Setup logging in a .NET MAUI application with Serilog! 🕗 Timestamps: 0:00 - Introduction 0:35 - Installing Packages 2:28 - Configuring 3:25 - Using the Logger 4:12 - Adding Sinks (Debug, File) 6:17 - Summary 📦 Source code: github.com/SingletonSean/streakathon/tree/video/serilog 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03gIo-USwFl-i9gUlvbW0BSS.html 🔗 Serilog Repository: github.com/serilog/seri...
Setup Authentication in .NET MAUI (feat. Firebase Authentication V4)
Переглядів 1,1 тис.28 днів тому
Learn how to setup Firebase Authentication in a .NET MAUI application! 🕗 Timestamps: 0:00 - Introduction 0:27 - Project Setup 1:46 - Installation 2:32 - Configuration [new FirebaseAuthConfig()] 4:27 - Boilerplate MVVM Pages… 5:51 - Sign In [FirebaseAuthClient.SignInWithEmailAndPasswordAsync()] 8:40 - Sign Up [FirebaseAuthClient.CreateUserWithEmailAndPasswordAsync()] 10:54 - Profile Details [Fir...
Automatic Versioning with Changesets - MAUI CI/CD TUTORIAL #5 (Windows)
Переглядів 471Місяць тому
Learn how to setup automatic versioning in a GitHub Actions CI/CD pipeline via Changesets! 🕗 Timestamps: 0:00 - Introduction 0:30 - The Problem w/ Manual Versioning 1:02 - Hello, Changesets! 2:46 - Setting up Changesets 4:34 - Using Changesets 6:52 - Running Changesets in GitHub Actions 15:55 - Testing and Fixing Permissions Issues 19:37 - Summary 📦 Source code: github.com/SingletonSean/maui-tu...
How I Launched A Website That Generated $3.98 In Revenue
Переглядів 1,5 тис.Місяць тому
I launched a website that (kinda) had users! Hear about what I built, how I built it, and what I learned so that you can potentially build your own product that makes way more money than I did. 🕗 Timestamps: 0:00 - Introduction 0:36 - Problem 1:17 - Initial Concept 1:50 - Validating the Idea 5:22 - Building the First Real Version! 9:05 - The Pivot 13:08 - Monetization?! 16:16 - Takeaways 🔗 Webs...
Why SingletonSean?
Переглядів 1,2 тис.2 місяці тому
Yes, SingletonSean is somewhat of an odd name. This is the story of how I chose the name SingletonSean! 🕗 Timestamps: 0:00 - Introduction 0:39 - The Internship 1:22 - Encountering Singletons 2:28 - Growth and Learning 3:25 - UA-cam Channel 4:28 - Thank You! 💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9Tf_NYcIg.htmljoin 🏠 Discord: discord.gg/6hkR98BaCz 🐤 Twitter: SingletonSea...
Automatic Updates - MAUI CI/CD TUTORIAL #4 (Windows)
Переглядів 8832 місяці тому
Learn how to setup automatic updates for a MAUI Windows application from a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 1:48 - Creating the App Installer File 6:00 - Uploading Release Assets for App Installer File 7:40 - Testing and Fixing Things 10:41 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03iO8MxhOt0U-Ib6...
Versioning and Releasing - MAUI CI/CD TUTORIAL #3 (Windows)
Переглядів 4512 місяці тому
Learn how to create versioned GitHub releases for a MAUI Windows application from a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 1:03 - Extracting the Version 2:35 - Creating a Version Tag 4:05 - Creating a Release 6:09 - Granting Workflow Permissions 6:40 - Testing 7:13 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials/blob/master/.github/workflows/deploy.yml...
Certificate Signing - MAUI CI/CD TUTORIAL #2 (Windows)
Переглядів 5712 місяці тому
Learn how to sign a MAUI Windows application with a certificate in a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 0:44 - Creating a Self-Signed Certificate 3:12 - Getting the Certificate Into GitHub Actions 5:44 - Signing the MSIX with the Certificate 7:32 - Testing and Fixing Things 9:01 - Trusting the Certificate and Installing! 9:33 - Summary 📦 Source code: github.com/Sin...
Publishing - MAUI CI/CD TUTORIAL #1 (Windows)
Переглядів 9012 місяці тому
Learn how to publish a MAUI Windows application in a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 0:49 - Workflow Definition 2:18 - Workflow Steps 6:23 - Testing 7:08 - Next Steps 📦 Source code: github.com/SingletonSean/maui-tutorials/blob/master/.github/workflows/deploy.yml 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03iO8MxhOt0U-Ib6zS97_aV7.html 🔗 GitHub Actions: docs.githu...
Contributing To Open-Source For The First Time
Переглядів 2,7 тис.2 місяці тому
I made my first ever contribution to an open-source project! Hopefully this story inspires others to try contributing to open-source projects out there 😁 🕗 Timestamps: 0:00 - Introduction 0:30 - Context 0:54 - Problem 2:03 - Running Locally 2:55 - Reproducing 4:04 - Fixing! 4:48 - An Alternate Solution… 6:29 - The Pivot 7:44 - Automated Testing! 9:42 - Opening the Pull Request 10:31 - Takeaways...
Is Your MAUI Application UI Responsive?
Переглядів 1,3 тис.3 місяці тому
Learn how to build a responsive, cross-platform UI in .NET MAUI! 🕗 Timestamps: 0:00 - Introduction 0:33 - Problem With Style Inheritance 1:54 - Solution With Style Classes 3:27 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials/tree/master/ResponsiveDesign 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03gIo-USwFl-i9gUlvbW0BSS.html 💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9...
I’m So Glad MAUI Has XAML Style Classes
Переглядів 1,4 тис.3 місяці тому
Learn how to efficiently compose styles in .NET MAUI! 🕗 Timestamps: 0:00 - Introduction 0:33 - Problem With Style Inheritance 1:54 - Solution With Style Classes 3:27 - Summary 🔗 MAUI Styling Documentation: learn.microsoft.com/en-us/dotnet/maui/user-interface/styles/xaml?view=net-maui-8.0 📦 Source code: github.com/SingletonSean/maui-tutorials/tree/master/StyleClassesRock 🔁 Full playlist: ua-cam....
How to Create Custom Code Snippets in Visual Studio (feat. MAUI Bindable Properties)
Переглядів 1,5 тис.4 місяці тому
Let's create a custom code snippet and make our lives easier! 🕗 Timestamps: 0:00 - Introduction 0:15 - Setup 0:41 - Metadata 1:29 - Code Template 2:06 - Variables / Literals 4:05 - Importing to Visual Studio 5:05 - Cleaning Up 6:16 - Summary 🔗 Example Snippet (propbp): singletonsean.s3.amazonaws.com/propbp.snippet 🔗 Code Snippets Documentation: learn.microsoft.com/en-us/visualstudio/ide/code-sn...
I Hope You’re Extracting MAUI Components
Переглядів 1,3 тис.4 місяці тому
Creating custom MAUI components is the way. 🕗 Timestamps: 0:00 - Problem 1:01 - Creating a Custom Component 1:58 - Defining Attributes (Bindable Properties) 3:40 - Using a Custom Component 4:42 - Referencing Attributes 6:21 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials/tree/master/ContentViewComponents 💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9Tf_NYcIg.htmljoin 🏠 D...
Accidentally Building the Greatest .NET MAUI Meta-Framework
Переглядів 2,7 тис.4 місяці тому
Accidentally Building the Greatest .NET MAUI Meta-Framework
Simplify Configuration via Polymorphism
Переглядів 1,9 тис.4 місяці тому
Simplify Configuration via Polymorphism
The Right Way to Conditional Render in .NET MAUI
Переглядів 3,6 тис.4 місяці тому
The Right Way to Conditional Render in .NET MAUI
Securely Persist Local Data in .NET MAUI (Secure Storage)
Переглядів 1,4 тис.5 місяців тому
Securely Persist Local Data in .NET MAUI (Secure Storage)
Do You Really Need a Data Transfer Object?
Переглядів 5 тис.5 місяців тому
Do You Really Need a Data Transfer Object?
Refactor Your App to The MVVM Community Toolkit (feat. WPF!)
Переглядів 9 тис.5 місяців тому
Refactor Your App to The MVVM Community Toolkit (feat. WPF!)
Why Are You Using Async/Await? (feat. WPF)
Переглядів 6 тис.6 місяців тому
Why Are You Using Async/Await? (feat. WPF)
Create a Custom Link Component in MAUI (via Inheritance)
Переглядів 1,1 тис.6 місяців тому
Create a Custom Link Component in MAUI (via Inheritance)
Binding MAUI Views to View Models (w/ Dependency Injection!) - MAUI TUTORIALS
Переглядів 2,8 тис.6 місяців тому
Binding MAUI Views to View Models (w/ Dependency Injection!) - MAUI TUTORIALS
A Readable and “DRY” Approach to Guard Clauses?
Переглядів 2,3 тис.7 місяців тому
A Readable and “DRY” Approach to Guard Clauses?
Navigation Made Easy (w/ MVVM) - MAUI TUTORIALS
Переглядів 4,9 тис.7 місяців тому
Navigation Made Easy (w/ MVVM) - MAUI TUTORIALS
Is It Okay To Put Properties on Interfaces?
Переглядів 2,8 тис.7 місяців тому
Is It Okay To Put Properties on Interfaces?
The Ultimate Guide to Testing in .NET
Переглядів 1,6 тис.7 місяців тому
The Ultimate Guide to Testing in .NET
Can Your .NET Application Run in Isolation? (feat. MAUI)
Переглядів 9318 місяців тому
Can Your .NET Application Run in Isolation? (feat. MAUI)
This is great, but you present things waaaaay too quickly. Remember, everybody's built differently so you need to always think of your audience. Apart from that - top job 👍👍
Best value for this topic. Thank you so much
What a great series of WPF Custom Controls!!! Keep up the great work.
How would I implement this Navigation Scenario, if I have a ContentControl displaying UserControls in my MainView, and then another ContentControl in one of the UserControls? If I want to use the NavigationStore and so on for all the ContentControls in my application, that wouldnt work. Do you put seperate NavigationStore / NavigationService instances for each ContentControl in the DI Container? Or how would you solve that scenario?
This was a great video, although I would've preferred more in depth explanations. My current issue with this implementation is that we authorize the user and create a dictionary of claims consisting of the user's info...but how do I access this in any way? That's the info I need to create a Model I can't seem to find a way to access it in this implementation.
Thank you for the wonderful video, Sean! I have just started learning about Firebase Authentication recently, and as I understand it, the token will expire after 3600 seconds (which is 1 hour) by default and needs to be refreshed. But in the case where the user logs in -> leaves the app open for more than 1 hour, and the token will automatically be refreshed to continue being used. Is there any solution for this?
You should checkout MAUI now it's so much better than it was from about a year ago!
I really love your videos. I have a problem though. Before you add the MainWindow into DI everything was working on my laptop. After this, when you changed the MainWindow into DI and using the funky method "services.AddScoped<MainWindow>(s => new MainWindow(s.GetRequiredService<MainViewModel>()));" i am getting this error: "System.InvalidOperationException: 'Unable to resolve service for type 'MyAgenda.WPF.State.Navigators.Navigator' while attempting to activate 'MyAgenda.WPF.ViewModels.MainViewModel'.'". My App.xaml is the same as yours also all my classes idk what is happening...
I found the issue, in my MainViewModel.cs i had in constructor Navigation as parameter and not a INavigation. Anyways i love your videos !!! Keep Going!
Hey @SingletonSean I am stuck since 2-3 weeks trying to fix the host notification errors. There is a problem with deserializing the FIREBASE_CONFIG String. I followed along the tutorials and the project works completly fine localy. Here is the error message from azure: Microsoft.Azure.WebJobs.Script: Error configuring services in an external startup class. Google.Apis.Auth: Error deserializing JSON credential data. Newtonsoft.Json: Error converting value {"type":"service_account","proje........." And unfortunatly since this string is sensible data, I havn't found anything online yet..
You don't need to run the project you just have to build it. That will also add your custom control to the toolbox if you prefer to just drag and drop it on your window from there.
Nice
i cant able to connect with sql
Thank you for sharing the video. DevExpress offers similar attached properties to media queries that you can utilize. Take a look at those. It would be beneficial to have a separate NuGet package for this instead of adding DevExpress just to create responsive MAUI apps.
One question. For Unit-test and E2E, it is rather easy to establish how much you covered, since the scenario's are rather clear. How does one do that proper for integrations, for there are so many specific combinations.
how to connect with sql database.... i just clone the code but i face difficulty to connect to sql
Unit tests: when you mock every single important part of the application and then all tests pass always E2E tests: when you fail a test because the windows input stack decided your mouse click wasnt worth anything Integration tests: testing a viewmodel which references 46 different UI frameworks and breaks MVVM purity in ways never seen before
Accurate and I still love integration tests
The most best explanation of "Bindable Property".
Please do a followup with the OAuth flows! Thanks!!!! Subscribed
Definitely, and welcome!!
Does this work with Android and iOS?
I haven't tried, but I think it will. Might have to bring in the FirebaseAuthentication.Maui package for this functionality. I'm honestly not sure - will have to explore this!
I tried something similar, deploying on android emulator the {Credential = credential} aspect showed, "children could not be evaluated".. I followed due process of inserting the json file inside the android.resources.blabla.. but still
Hello i got a problem if i remove startupUri programm starts but it doenst open the window. I did it like you show it, in the class app maybe someone can help
Dumb question but- how do the view models get passed to the constructor? I'm guessing DI automatically handle that (even with URI Navigation) when you register the pages and view models as singletons in MauiProgram.cs?
Sean, 4+ years after making, this video is still meaningful to people out there. I'm enjoying this series very much as I work on a solution for my company. Thank you for this, and the others in the series. Much, very much, appreciated!
MAUI will grow up and i also believe there is hope for it.
🤞🤞🤞
Very good explained. This is the best explantation I found in three languages :D
Cool! Thanks!
Thanks for your advice ! I improve my Maui code !
Fantastic!
What if you set Thickness to 0? ;D You can't divide by zero and i guess you haven't add a check for this xD I like finding bugs
Uh-oh! Nice find, you're hired
I mean this is cool but you could have just used ViewBox!
thanks! perfect lesson
Fantastic tutorial. It's very educational. Thank you for taking the time to make them.
You know what, this Xaml cannot do conditional rendering easily. Too sad
Properties are literally methods lol. Yes it's okay. I really don't know why this is a question. C# devs need to spend some time in early Java land.
To distribute windows application only in maui so i have remove other target platforms when try to publish using side loading. Generateappx package does not exist issue occur. How to resolve?
Hey Sean, this is a wonderful explanation - however, its not environment specific. This is build type specific. In turn, if you have a local, dev, qa, and prod deployed environments (almost all will be built using Release) its not useful. Please consider renaming the video. Misleading.
Thank you so much. I'm also developing MAUI App and I want to implement logging and file persistence logs but if you notice that to access these file logs is a bit complicated for the end-user. What would you recommend to add in the App to access these logs and send it to the developer or any other approaches ?
Can you tell me nugets for Fireabse database , firebase pushnotification also which works great for maui
🎯 Key points for quick navigation: 00:00 *🏨 Understanding MVVM architecture for WPF applications* - MVVM architecture separates the view layer into models (M), views (V), and view models (VM) - Exploring the concept of models and how domain logic is encapsulated within them - Creating classes for a hotel, reservation book, reservation, and room id to represent the domain model 02:07 *🛠️ Implementing model functionality* - Organizing classes into folders within the project structure - Defining methods within the model layer to interact with the domain logic - Handling reservation conflicts and implementing exception handling within the model layer 08:13 *📝 Refining model functionality for user interactions* - Introducing user identification within the reservation class - Opting for a list data structure over a dictionary for simplicity and ease of use - Defining methods in the model layer to support user actions such as viewing and making reservations Made with HARPA AI
Your video is certainly one of the best.
This was really really helpful video. Turned out I was using serilog wrong way. I had been referencing ILogger from serilog instead of Ilogger from Microsoft logging package.
Thank you :)
What's the deal? If it's too fast, you're too old? 🤔
Thanks. You helped to solve my problem at work. Highly appreciated.
Woohoo, glad this helped!
Oh wow, I heard Ninja has figma too
Granted I'm not exactly a beginner but I actually do like the speed. I tend to just watch videos like these without following along and then implement the concepts in my projects at a later time. I disagree with the people who say it's bad I think it's just an intermediate level tutorial that assumes a certain level of familiarity. For those with problems I would remind you that MVVC and design patterns in general tend to be more advanced programming concepts. There is no shame in wanting a slower format that goes into more details but for people who are just looking to pick up MVVC and little else I believe this is actually a pretty good tutorial which is why it's the first result when searching for such a thing.
I’m actually a bit surprised that MAUI does not provide something more elegant than that since it aims at targeting mobile platforms. This trick is totally applicable and practical for traditional WPF apps. Looks like stagnating 🤔
If ItemControl has suppose 10 items. I want to show left and right arrow instead of scrollbar so that user can click those arrows to navigate to different items itemcontrol. How to achieve this ?
At 15:30 it is mentioned that we create LoadMajorIndexViewModel method to avoid calling LoadMajorIndexes method via constructor each time MajorIndexViewModel is instantiated, but with line 25 we instantiate MajorIndexViewModel so it is becoming the same thing. The catch here is that in both cases we still instantiate MajorIndexViewModel, where is the benefit of this approach?
I love U