<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Allan Ritchie</title><description>Ramblings of a old Software Engineer</description><link>https://allanritchie.com/</link><item><title>Introducing Shiny.AiConversation — Text, Voice &amp; Wake Word in One Service</title><link>https://allanritchie.com/blog/2026/05/ai-conversation/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/05/ai-conversation/</guid><description>Shiny.AiConversation wraps chat clients, speech recognition, text-to-speech, audio playback, message persistence, and state management into a single IAiConversationService interface for .NET.</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate></item><item><title>The Feedback Service — One Hook to Rule Them All</title><link>https://allanritchie.com/blog/2026/05/feedback-service/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/05/feedback-service/</guid><description>Shiny Controls v1.0 ships with IFeedbackService — a single injectable service that every interactive control calls. Implement it once for haptic, TTS, sound effects, analytics, or any combination.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate></item><item><title>DocumentDb AI Tools — Give Your LLM a Database</title><link>https://allanritchie.com/blog/2026/04/documentdb-ai-tools/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/04/documentdb-ai-tools/</guid><description>Shiny.DocumentDb.Extensions.AI turns your document store into a set of LLM-callable tools. Register types, set capabilities, and let the agent query, insert, update, and delete documents through natural language.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Turn Any Interface Into an AI Tool — Shiny DI 3.0</title><link>https://allanritchie.com/blog/2026/04/di-ai-tools/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/04/di-ai-tools/</guid><description>Mark a service interface with [Tool], add [Description] to your methods, and a source generator produces fully typed AIFunction classes compatible with Microsoft.Extensions.AI. AOT-safe, zero boilerplate.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate></item><item><title>One Contract, Three Transports — Mediator AI Tooling</title><link>https://allanritchie.com/blog/2026/04/mediator-ai-tools/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/04/mediator-ai-tools/</guid><description>Write a single C# record and have it automatically become a fully typed AI tool — with zero adapter code. Shiny Mediator 6.3 delivers contract-first source generation for AI tools, HTTP clients, and ASP.NET endpoints.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate></item><item><title>AI-Powered Navigation in Shiny MAUI Shell — Chat to Navigate, Intent to Form</title><link>https://allanritchie.com/blog/2026/04/shiny-shell-ai/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/04/shiny-shell-ai/</guid><description>How Shiny MAUI Shell uses source generation and Microsoft.Extensions.AI to let an AI chat agent discover your app routes, match user intent, and navigate with pre-filled forms.</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate></item><item><title>UI Automated Testing for .NET MAUI with MauiDevFlow — And How AI Wrote the Tests</title><link>https://allanritchie.com/blog/2026/03/maui-ui-testing-mauidevflow/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/maui-ui-testing-mauidevflow/</guid><description>How I used MauiDevFlow and Claude Code to go from zero UI tests to full screen coverage in minutes — inspecting live apps, adding AutomationIds, and generating real automated tests from actual app screens.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Shiny Client v4 - Windows Support, .NET 10, and a Ton of Improvements</title><link>https://allanritchie.com/blog/2026/03/shiny-client-v4/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/shiny-client-v4/</guid><description>Shiny Client v4 brings Windows support for BLE, HTTP Transfers, and Locations, moves to .NET 10, and delivers major improvements to GPS, HTTP Transfers, Push, and BluetoothLE</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Shiny.DocumentDb v3 — One API, Four Databases</title><link>https://allanritchie.com/blog/2026/03/shiny-documentdb-v3/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/shiny-documentdb-v3/</guid><description>The SQLite document store grows up. v3 adds MySQL, SQL Server, and PostgreSQL support with a clean provider abstraction — same fluent LINQ queries, same AOT support, any backend.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Shiny.Maui.ContactStore — Device Contact Access That Does It All</title><link>https://allanritchie.com/blog/2026/03/shiny-contactstore/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/shiny-contactstore/</guid><description>A cross-platform .NET MAUI library that gives you full CRUD access to device contacts with LINQ queries, native query translation, and zero platform ceremony.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Shiny MAUI Shell — A Library That Takes Shell to the Next Level</title><link>https://allanritchie.com/blog/2026/03/shiny-maui-shell/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/shiny-maui-shell/</guid><description>How Shiny MAUI Shell transforms .NET MAUI navigation from error-prone string routing into type-safe, testable, source-generated goodness.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Shiny.SqliteDocumentDb v2.0.0 — Table-Per-Type, Custom Ids, Diffing, and Batch Insert</title><link>https://allanritchie.com/blog/2026/03/shiny-sqlitedocumentdb-v2/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/shiny-sqlitedocumentdb-v2/</guid><description>v2.0.0 introduces table-per-type mapping, custom Id properties, document diffing via GetDiff, batch insert, a standalone core library without DI dependencies, and a convenience constructor — all fully AOT-safe</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Introducing Shiny.Music — Cross-Platform Music Library Access for .NET MAUI</title><link>https://allanritchie.com/blog/2026/03/shiny-music/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/shiny-music/</guid><description>A new library that provides a unified API for browsing, searching, and playing music from the device music library on iOS and Android — with permissions, metadata, playback controls, and file export</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Introducing Shiny.Spatial — A Dependency-Free Spatial Database and GPS Geofencing for .NET</title><link>https://allanritchie.com/blog/2026/03/shiny-spatial/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/03/shiny-spatial/</guid><description>A new library that turns SQLite into a spatial database with R*Tree indexing, custom geometry algorithms, polygon-based GPS geofencing with no OS region limits — zero native dependencies, fully AOT-compatible</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Introducing Shiny.SqliteDocumentDb — Schema-Free JSON Documents in SQLite</title><link>https://allanritchie.com/blog/2026/02/shiny-sqlitedocumentdb/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/shiny-sqlitedocumentdb/</guid><description>A new library that turns SQLite into a document database with a fluent LINQ query builder, streaming, pagination, aggregates, indexes, projections, and full AOT support — no migrations required</description><pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Introducing Shiny.Maui.TableView — Settings-Style Pages for .NET MAUI, Without the Platform Pain</title><link>https://allanritchie.com/blog/2026/02/shiny-maui-tableview/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/shiny-maui-tableview/</guid><description>A pure .NET MAUI TableView control with 15 cell types, cascading styles, drag-sort, dynamic sections, and full MVVM support — no custom renderers required</description><pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate></item><item><title>CarPlay &amp; Android Auto with .NET MAUI</title><link>https://allanritchie.com/blog/2026/02/maui-carplay/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/maui-carplay/</guid><description>A practical guide to extending your .NET MAUI apps to the car dashboard — Apple CarPlay and Android Auto from the same codebase</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate></item><item><title>.NET MAUI on Apple TV &amp; macOS (AppKit) — Yes, Really</title><link>https://allanritchie.com/blog/2026/02/maui-appletv-macos/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/maui-appletv-macos/</guid><description>An exploration of the GoneDotNet/mauiplatforms project that brings .NET MAUI to Apple TV (tvOS) and native macOS (AppKit) — platforms Microsoft never officially supported</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate></item><item><title>The Importance of Open Source Libraries in the Age of AI</title><link>https://allanritchie.com/blog/2026/02/opensource-in-age-of-ai/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/opensource-in-age-of-ai/</guid><description>Why open source matters more than ever — AI amplifies its reach, but the human craft of building and maintaining libraries remains irreplaceable</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Shiny Mediator &amp; AOT - Zero Reflection, Full Speed</title><link>https://allanritchie.com/blog/2026/02/shinymediator-aot/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/shinymediator-aot/</guid><description>A deep dive into every source generator and design choice that makes Shiny Mediator fully AOT &amp; trimming safe — zero reflection required</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Shiny Mediator vs MediatR vs FastEndpoints</title><link>https://allanritchie.com/blog/2026/02/shinymediator-comparison/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/shinymediator-comparison/</guid><description>An honest comparison of three popular .NET mediation/CQRS libraries — what each does best and where they fall short</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate></item><item><title>What&apos;s New in Shiny Mediator 6</title><link>https://allanritchie.com/blog/2026/02/shinymediator-whats-new-v6/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/shinymediator-whats-new-v6/</guid><description>A look at all the new features, improvements, and breaking changes in Shiny Mediator v6</description><pubDate>Sun, 08 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Shiny Mediator - Getting Started</title><link>https://allanritchie.com/blog/2026/02/shinymediator-gettingstarted/</link><guid isPermaLink="true">https://allanritchie.com/blog/2026/02/shinymediator-gettingstarted/</guid><description>A Mediator Pattern with a focus on Apps written with .NET</description><pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate></item></channel></rss>