S08E21 55mSeason 8

Episode Summary
In this episode, developer, international speaker, and first-time book author Codrina Merigo joins Jamie to talk about her new Apress title “AI-Enabled Apps with .NET MAUI” — and to push back on the assumption that “adding AI” to an application means bolting on yet another chatbot.
Codrina frames AI-enablement as a much broader toolbox: speech-to-text and text-to-speech, image recognition, sentiment analysis, recommendations, and translation — all of which can be wired into an existing .NET MAUI app to make it smarter without ever opening a chat window. She walks Jamie through the choice between frontier cloud models (Azure OpenAI, Microsoft Foundry) and tiny on-device models (Whisper for speech, Custom Vision for bespoke image detection, community models from Hugging Face), and argues that the right answer is usually hybrid: route the easy intents locally, and only reach for the big model when you genuinely need it. As she puts it, you don’t need a Porsche to go grocery shopping.
Privacy sits at the centre of the conversation. Drawing on her cybersecurity background and her day job as a product manager in healthcare, Codrina makes the case for privacy-by-design under GDPR — keeping data close to its source, considering fully offline models for regulated industries, and being honest about which workloads can even leave the device. Jamie and Codrina also dig into accessibility wins that AI unlocks for MAUI apps (personalised voices for text-to-speech, on-device translation, sentiment-aware diaries), the environmental cost of routing every “thank you” to a large language model, and why intercepting trivial prompts with old-fashioned if-then-else is often the better engineering decision.
For developers wondering how to get started, Codrina recommends the Azure and Microsoft Foundry playgrounds as a low-friction way to experiment with the catalogue of available models before writing a line of integration code, and points listeners at the book’s companion GitHub repository for working examples — including an offline stop-sign detector built with Custom Vision and an offline mood tracker.
Whether you’re a MAUI developer curious about where AI actually fits into a cross-platform app, an architect weighing edge versus cloud for a privacy-sensitive workload, or simply tired of every AI demo being yet another chatbot, this conversation lays out a pragmatic, hybrid-first approach to building genuinely useful AI-enabled experiences on the devices your users already carry.
Episode Transcription
The common definition of AI is a chatbot. And this is&helip; So something we haven’t really mentioned is that .NET MAUI it’s an evolution of Xamarin, which was the previous name and the previous platform for cross-platform development. And as a Xamarin developer, I was just, you know, adding the chatbot to an application was really an offline one.
Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I’m your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem.
Today, we are joined by Codina Merigo to talk about the cross section of .NET MAUI and AI, her new book “ AI-Enabled Apps with .NET MAUI”, and some of the scenarios where you might want to include AI in your applications.
To get privacy by design nowadays is really impossible. So if you need to really have something disconnected from the internet maybe you’ll need a tiny offline model that just, I don’t know, does speech-to-text.
Along the way, we discuss the differences between local (on device) AI models and the frontier (online) models, we talk about where models really help with the accessibility of your applications, and we talk about where you can go to get started learning about this new world.
So let’s sit back, open up a terminal, type in dotnet new podcast and we’ll dive into the core of Modern .NET.
Jamie
Codrina
Jamie
Codrina
I started a long time ago in the year 2000, when I was studying in Romania, thanks to a European project that was getting computers into schools, and I was fascinated. We started developing some crazy things back then, and I feel that I never stopped. I studied ICT in high school, and when I moved to Italy, I graduated in cybersecurity. I started working as a software engineer, more on the .NET side and the Microsoft technologies.
Recently — I mean, not so recently — when I discovered cross-platform and mobile development, it really changed my idea, because we all had a phone in our hand, and it was really exciting to see your ideas coming to life. For me, the normal evolution was to go into the .NET MAUI part, and just start seeing what it has to offer to developers and to everyone.
On a professional level, I’m a product manager and I work in healthcare, but my hobby is still developing. Every time I have some free time. So yeah, that’s me.
Jamie
Codrina
Jamie
I feel like, from an engineering to a management point of view, that discussion has a wide chasm. For people who are in management who have never been engineers, they can switch off when an engineer is discussing “yeah, we can do this, but also here’s the reason why we can’t.” I think it’s a problem on both sides. It’s not just management switching off; it’s also engineers being super interested in what they can and can’t do, and not really being able to explain to the management side why it can’t happen from a non-engineering perspective. But then management comes to that conversation without having that information. So I think it’s a good idea for engineers who go into a management role to keep an eye on what’s happening, and keep trying it outside of their day-to-day work.
Codrina
On the other side, sometimes I was in a position when a dev would tell me “I need five days to do that,” and I would be like, “do you really need five days?” So maybe they hate me or they love me, but it’s really nice to optimise meetings and just tell me whatever — don’t try to over-explain things that are really direct, at least for me.
Jamie
One of the things that I’ve noticed — I’ve got kids, they’re all teenagers now, which makes me feel really old — they all have phones, and they don’t interact with computers. There’s a whole side story about digital literacy that I could go on a tangent for for hours, but I grew up in the era where my first computer didn’t have an operating system. It didn’t have windows and menus, icons and pointers. It booted into an interpreter, and you had to run your applications from there, one at a time. It didn’t do multitasking or anything like that.
I’ve seen the evolution of going from a purely text-based interface, through the many different versions of Windows icons, menus and pointers, and the many different graphical interfaces, to a point where — I brought this up in an earlier episode this season, actually — a family member, who is in that teen bracket, needed to print off their resume, their CV, and they didn’t know how to do it. So I sat them down in front of the computer and I said, “well, open it on here.” Okay. We went through the journey of opening a file on a desktop computer. Then I said, “so to print it, you push the print button.” They said, “which one’s the print button?” I said, “the one that looks like a printer.” Then they turned to me and said, “what does a printer look like?” They have no idea.
Codrina
Jamie
Codrina
On the other hand, I feel like the new generation — I have a family friend, he has a kid, and he will start tapping on the TV every time, because he expected it to be touch screen. Things that, when I was a child, I never even imagined touching — apart from the electricity that would have come out back then. But now it’s just so crazy.
Even my parents now, they want an app for everything — and there’s not yet an app for everything. They want to have everything, I don’t know, to pay their bills and everything. I feel the struggle, because I don’t feel like people still have printers in their home — everything is digital. I feel your kids saying “what does a printer look like?”, because it feels old to have things on paper now. Or a fax machine — I think no one really knows what one looks like.
Jamie
Cool, okay. So you’ve got this book coming out. We’ll come back to cross-platform development in a moment. But just before we get any further, what is the book called? I mean, the listeners and I already know what the book’s called — I’m trying to help you out here. What is the book called, and what’s it about?
Codrina
Jamie
Codrina
I know we only spoke about mobile things, so you can target Android, iOS, but you can also target Windows, macOS, Linux and Samsung TV. So it’s really one single shared codebase for all these platforms, and it works on phones, tablets, desktops, and some offline environments too. I want to emphasise the fact that, at the end, you’ll have native applications, and you can easily interact with all the sensors and all the capabilities you have in your phones, in your tablet — camera, microphone, and everything.
In a nutshell, if you know Microsoft technologies, it’s really easy to start your cross-platform development journey.
Jamie
As long as you have the GTK libraries installed, or have a desktop environment that supports GTK, then you can target that Linux distribution for .NET MAUI apps now. I’ve had to say a whole bunch of stuff there to caveat that.
If you don’t know what Linux is, just ignore all of that. Or if you’ve never used Linux on the desktop, ignore all of that, and just take the unintentional ignorance of: it now targets Linux. For the Linux users out there — yes, okay, if you’re on KDE, if you’re on Plasma, if you’re on Cinnamon, if you’re on MATE, if you’re on any of these other desktop environments that are not maybe a hundred percent supporting GTK, then you will have a bad time. But fellow Linux people will know — because I’m a part-time Linux user — fellow Linux people will know that there is no one Linux, and there is no one desktop.
On macOS, I’m talking to Codrina right now on macOS, I have Finder, which is effectively my desktop experience. On Windows, you have Explorer, which is effectively your desktop experience. On Linux, there are a million of them — they all use different toolings, different versions of different tools — and so targeting Linux, in bunny quotes, is super different. It’s a non-trivial task.
So I fully understand why the MAUI team and the contributors have targeted GTK, because it likely covers most of the users of Linux on the desktop. Sorry, I just wanted to jump in and share a bit of expertise there before somebody listening goes, “well, actually, you know…”
Codrina
Jamie
This is neither a good thing nor a bad thing. I’m not trying to say that it is either of those things, but what I’ve noticed is that every time I mention, or a guest mentions, Linux support on the show, somebody jumps into the comments and says, “well, actually…” I’m like — I totally get that on your build of Arch Linux, where you’ve stripped everything out, and you don’t have libcurl, and you don’t have this, that, and the other, which means .NET won’t run on that. I get that — it won’t run on your machine. But your machine is not, you know, representative of maybe the 80% of Linux on the desktop users, right?
Codrina
Jamie
Right, so we can create these cross-platform, rich GUI apps. Now, here comes the difficult question. When you say “AI-enabled,” what do you mean by that?
Codrina
With “AI-enabled,” I wanted to add something that is a little bit broader. It’s not just adding a chatbot to an application — you can add a lot of different services. You can understand speech, have some speech-to-text capabilities, even recognise images, have recommendations, and a lot of things that are outside of the chatbot experience. Even if I started the example with all the chatbots, it’s more than that — as we developers know what AI is really about.
Jamie
Or maybe you’re out and about in a foreign country and you can’t read the signs, so you point your phone at the sign and it translates the sign, and then overwrites the image, if that makes sense — re-renders the image. Is that the thing we’re talking about?
Codrina
Jamie
Codrina
Also, some examples of industries that can use offline models and put them on a phone: take a picture and recognise what it is, and that’s it. So it’s really important — and this is general — when you choose your model, to really understand what you want to achieve with it every time, because you might run into additional costs that you don’t really want. You also want to target your use case exactly.
As I said, as a product manager, I’m really focused all the time on what the application needs to do, what is actually the intent of it. This is also how I structured the book: what do you want to do? Is there already a model, or do you need to build a model?
On a side note, I’m not a data scientist, so I prefer just searching all the models that we have, and seeing if it really is something we can just use. For sure, if you have a good data scientist, just work with that to create your perfect model for you. In the book, I’ve used the most famous one from Azure OpenAI, and some local models. For sure, you can expand that to your enterprise offline models, if someone has that in their company. It’s really easy to just add them to your application.
Jamie
So — actually, before I say “let’s say” — what are some of the reasons why you may go for an online model versus an offline model, or an offline model versus an online model? For folks who are listening: the online models scale very, very quickly, and they’re the most powerful ones, because they’re sitting on a server, or maybe a rack of servers, or maybe in a data centre. Whereas the local models are constrained by the hardware that you have — if you don’t have very powerful hardware, it probably isn’t going to run very well. Is that the only reason, or are there other reasons?
Codrina
I think maybe the future is more hybrid nowadays. Depending on the scenarios, you might just need to call a really powerful model, or use a tiny one. As you said, it really depends on the hardware, and what you can afford to spend on these different scenarios, and how accurate you want your model to be. So there are really a lot of things to consider to really get the best of the AI model that you’re using.
Jamie
Now, whether there should be worries about privacy, I don’t know. Whether it’s just a bunch of people saying “let’s move everything to the EU,” I don’t know. But your point about privacy is a very, very important one that touches on things that I really care about.
So — okay, this may be a question you may not be able to answer — but I thought that if you use an Azure-based model, it’s constrained within the area in which you are using that model. That’s probably a really horrible way of putting it. But I know, for instance, in the UK, if I use an Azure-provided model, the idea — and the promise that they make — is that your data never leaves the UK data centre. Whether it gets used for other things whilst it’s in the UK data centre, I don’t know. But is that not a thing? I guess what I’m asking is, there are industries where online models are just completely forbidden, right?
Codrina
But there might be some industries that don’t really want to be on cloud. Maybe they have their own server — I’m thinking more about some banks. I think they still have servers in the basement. I’m not saying that’s where you should put your server, but I know for sure, working as a consultant in the past, that they are really strict about those things, because they just want to be very careful about the privacy and where the data stays.
Also, in the way that some tiers work around Europe, they don’t want anything to get online, because hackers might be there. I might be biased by my cybersecurity degree, because I know that as soon as there is a door to the outside world, someone can break through it. So they don’t want doors, and not even windows — everything can be totally offline in some really regulated industries that we may have.
Jamie
Is that the thing you’re thinking of, where you try to do it locally, offline, and if it can’t entirely be done offline, take pieces of it and push it to an online model, and say, “hey, just focus on this one task, not the whole overarching goal that we want to achieve” — just like, “here’s user story number one of our app,” if I was to use an agile idea — carve a bit of the task off and give it to an online model?
Codrina
We can also dig more into the user experience part, so as to really let the user know what you’re doing, and to make it so that they have the power — and, as you said, under the hood, to understand if you need to use something offline, quick, or something really powerful, like a large language model in the cloud.
Jamie
Codrina
The more you work with these things, you can really go into all these details. That’s why I really think that hybrid — and maybe going back to the old if-then-else — to really try to make the best of the experience for you, your pocket, and your users.
Sponsor Message
Today's episode of The Modern .NET Show is brought to you by RJJ Software: strategic technology consulting for ambitious SMEs.
You know me as the host of this podcast, but here's what you might not know: I'm also a former Microsoft MVP who's helped businesses from Formula 1 teams to funded startups transform technology from a cost center into a competitive advantage. At RJJ Software, we specialize in three things that matter to growing businesses:
- AI that actually delivers ROI: not hype, just practical implementations that pay for themselves
- Developer Experience optimization: we've helped teams achieve 99% faster deployments and 3x productivity gains
- Strategic technology decisions: from architecture reviews to fractional CTO services
The difference? We don't just advise. We ensure successful implementation through knowledge transfer to your team.
If you're an SME leader wondering why your technology investments aren't delivering, or you're facing critical decisions about AI, modernization, or team productivity, let's talk.
Visit rjj-software.co.uk/podcast to book a strategic consultation.
Now, let's back to today's episode...
Jamie
I would much rather live in a world where people are saying “thank you” to their AI assistants. Not because of some fuzzy-wuzzy “it’s great to tell the AI thank you, because when it takes over the world it won’t come and kill me,” but more a case of: if we are telling our users not to say “thank you,” then we’re putting them in a mode where they are less likely to say thank you in the real world, right? We’re teaching people to be slightly less polite.
Whereas actually keeping that idea alive, and dealing with it locally on the device — that’s a great way to deal with that. I think there was an earlier episode of the show, I think season seven, so last year at this point, where I talked to Amit Bahree, who at the time was one of the folks who was pretty high up in the AI space, and we talked about passing a message to a small language model first — passing a prompt to a small language model whose job is not to answer the query, but to figure out where I should route this prompt to. Like, there’s a large language model for accounting, there’s a large language model for finance, there’s a large language model for C#, and a separate large language model for Python. If I ask the small language model a question about Python, it’s just going to reroute my prompt to the Python LLM. I love that idea, and it fits with your idea of hybrid models as well.
Codrina
Jamie
Codrina
Jamie
Codrina
Jamie
Codrina
One thing that’s easy to add — and this can open the chapter on accessibility — you can hook services to your existing application to create text-to-speech. There are some people that are maybe visually impaired, and they are using some built-in things to create speech-to-text. But you can personalise that experience and use personal voices, tones, and maybe, I don’t know, accents — so your user can really integrate with their application in a new way. That’s a scenario that came to my mind.
For sure, another thing that’s really hard to do is translations. So when you want to localise your application, you just need to translate everything. Maybe you can also use a model that does that for you, without a lot of agencies or colleagues that speak different languages. So these things can be added really simply to an existing application, and then you can really use the best of these models that are already available.
Jamie
Codrina
Jamie
Codrina
Jamie
For instance — this is giving away a whole bunch of stuff about how I work — if I need to add alt text to an image on a website, the first thing I do is I throw it at LLaVA, because LLaVA has the ability to see images. I’ll say, “hey LLaVA, give me a starting point for the alt text for this image.” 60%, 70%, 80% of the time it gets it right; other times it just fails miserably. But it gives me — I don’t just copy-paste that content — it gives me a place to start, because I suck at describing what an image is, right? But I do know that alt text is required for folks with accessibility issues.
So are there any — what would be Codrina’s top three models for specific tasks? Like we said, Whisper — so that could be one of them, Whisper for either transcribing text or doing text-to-speech. What are two other local models that folks maybe don’t know about? Because — remember — folks listening to this, they’re going, “I haven’t had a chance to play with AI yet, you’re talking about doing it locally, which models do I use for what?”, right?
Codrina
So if you’re working in some industries that need to, I don’t know, recognise faulty things, you can create your tiny models directly with Custom Vision. Some other tiny models that I’ve been experimenting with are still related to image recognition — so, I’m a plant lover. I know that there are big models that help you recognise your plants, but I was having an idea to slice it based on the area. I also love going hiking, so maybe if I’m going in the Alps, I can have a tiny model on my phone that would recognise the plants in there. So sometimes you just need to narrow what you want to achieve with your model, and you can create a tiny one with Custom Vision, without being a data scientist.
Or you can go to the Hugging Face community — there are lots of examples in there. So that was also where I was trying to get some other examples for the book, and to see if there are tiny models that do voice recognition, as I said, text-to-speech, speech-to-text, and some other tiny things that can work. I was more focused on the phone, but for sure, if you have a server that is a little bit more powerful, you can also increase the size of the model, and see what it has to offer for you.
Jamie
I mentioned LLaVA earlier on. I have a whole bunch of models I’m running locally on this machine — it’s a MacBook Air M2, right? So it’s not super-duper powerful, but it can run them on this machine. It’s a case of seconds-per-token rather than tokens-per-second, but it still runs on this machine, and I’m blown away by that.
Because in 2018, I went to a conference — we’ll get back to the question in a minute, but I’m just having this memory of 2018 — I was at a Microsoft conference, and there was — not Scott Hunter, not Scott Hanselman — Scott Guthrie on stage showing an app that he’d built that recognises whether something has a cat in it or not. That was frontier in 2018, and now you can do that on your phone, right? That’s crazy.
Codrina
It’s really interesting to see that it works, and you don’t need a lot of time to just implement that. That’s why I also love .NET MAUI, because if it works on an old Android, for sure it works on the latest iPhone, or some other phones, and it helps us to connect with our user regardless of their device. So this is how I put these two things together, and just looking at the power of AI in different examples.
Offline AI is also known as edge AI, and there are a lot of examples — also from Microsoft. I think they’re also expanding to Android now on the edge AI part, so hopefully we’ll have more models to just use AI on our devices soon.
Jamie
So let’s pretend I’ve been working in enterprise, and I haven’t had the chance to do anything with AI yet, for a whole bunch of reasons, and now we’re six years in, and I’m going, “oh no, now I need to learn about AI.” How in the heck do I get started?
Codrina
I think I lost count — we’d need to check as we are speaking how many models are there — to try to play with them in the playground. From a developer point of view, lots of them are just APIs and endpoints to call, like any other thing you have on Azure. So we might be biased by Microsoft, but I really love all the playgrounds. You can see the token consumption already — this coin that is used for AI — and it already gives you an idea of how this thing works. So yeah, Azure can be a really nice starting point, or the new Microsoft Foundry platform that’s built on Azure.
Jamie
Then, maybe people are listening to this going, “Codrina’s awesome, I want to be able to keep up with what she’s doing in the social media space — maybe LinkedIn or whatever — so that I can find out more things as Codrina shares her expertise.” What’s the best way for folks to do all of those things?
Codrina
I think the fastest way to get in contact with me is on LinkedIn — so just look for Codrina Merigo. You can also find me on Twitter, Bluesky, Instagram, but usually on LinkedIn I have all the up-to-date information, like the next conferences I’m speaking on, and all the other things that I’m working on and updating. So I would say go on LinkedIn, and then don’t be shy — write me a message. If you have any issue, if you need any help — I’m also a mentor — so don’t be shy, as I said.
You can just contact me, and we can see everything you have — maybe your ideas, your issues, and everything that’s connected to .NET MAUI, AI applications, and also Microsoft Foundry, which is another topic that I’m speaking on at conferences lately.
Jamie
Codrina, I have learned so much about local models, and attaching them to .NET MAUI apps. We talked about privacy concerns, we’ve talked about accessibility concerns, and a whole bunch of stuff, and we’ve only really scratched the surface. But what I would like to say is: thank you ever so much for spending some time with us today to talk about all of this, and I wish you the best of luck with your book.
Codrina
Jamie
Wrapping Up
Thank you for listening to this episode of The Modern .NET Show with me, Jamie Taylor. I’d like to thank this episode’s guest for graciously sharing their time, expertise, and knowledge.
Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at the podcast's website, and there will be a link directly to them in your podcatcher.
And don’t forget to spread the word, leave a rating or review on your podcatcher of choice—head over to dotnetcore.show/review for ways to do that—reach out via our contact page, or join our discord server at dotnetcore.show/discord—all of which are linked in the show notes.
But above all, I hope you have a fantastic rest of your day, and I hope that I’ll see you again, next time for more .NET goodness.
I will see you again real soon. See you later folks.
Useful Links
- Codrina Merigo on:
- AI-Enabled Apps with .NET MAUI
- Supporting the show:
- Getting in touch:
- Podcast editing services provided by Matthew Bliss
- Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show
- Editing and post-production services for this episode were provided by MB Podcast Services