If you've been following this blog, you might have noticed that my main blogging platform is... let's call it "enthusiastically engineered." PostgreSQL AND vector databases, semantic AND full-text search with GIN indexes, automated translation to 14 languages,…
From 89 articles to 487 (including >80 totally new ones)! Well November is almost over so I thought I'd add some highlights and information about what we've done this month. AI & LLM Deep Dive The MAIN goal of this month for me was to get myself updated on all…
When testing code that uses HttpClient, the traditional approach involves mocking HttpMessageHandler using frameworks like Moq. While this works, it can be verbose, ceremony-heavy, and frankly a bit ugly. There's a cleaner alternative: using DelegatingHandler…
If you've built traditional ASP.NET Core MVC applications, you know the problem: that dreaded "click flash" when users navigate between pages. Full page reloads, the browser chrome flickering, content jumping around as the new page renders. It works, but it…
Playwright is Microsoft's official solution for modern browser automation, offering multi-browser support (Chrome, Firefox, Safari) with a single API, built-in trace debugging, and mobile emulation. This guide covers everything from setup to advanced testing…
Modern E2E (End-To-End, using your site like users would) testing doesn't have to be painful. This comprehensive guide shows you how to use PuppeteerSharp for fast, reliable browser automation in .NET-covering everything from basic testing to PDF generation…
Theory is one thing; production code is another. In Part 1 we covered the abstractions—now let's see how they're applied in a real codebase. This article walks through actual background services from this blog platform: file watchers with Polly retry policies,…
Every modern web application has work that shouldn't block an HTTP request—sending emails, processing files, syncing with external services, running scheduled maintenance. ASP.NET Core provides multiple approaches for handling this background work, from simple…
Need to test a snippet of C# code without spinning up a full project? C# Script files (.csx) let you write and run C# code like a scripting language. No Program.cs, no .csproj, no build step - just write and run. Perfect for testing APIs, validating logic, or…
I've been running this blog for a while now, writing detailed technical articles on ASP.NET Core, Entity Framework, HTMX, and all sorts of .NET goodness. Yet my search rankings were... underwhelming. After finally investigating why, I discovered I'd been…
"We're building an AI-powered knowledge assistant that will revolutionise how our employees access information..." Every job advert, pitch deck, and consultancy proposal in 2024-2025 Introduction I've spent the past month or so properly immersing myself in the…
Want to get nice, descriptive alt text for images on your sites or jsut extract text from them? mostlylucid.llmalttext uses Microsoft's Florence-2 vision language model to generate high-quality alt text automatically - running entirely locally on your machine,…
📖 Part of the RAG Series: This is Part 4a - core implementation: Part 1: RAG Origins and Fundamentals - What embeddings are, why they matter Part 2: RAG Architecture and Internals - Chunking, tokenisation, vector databases Part 3: RAG in Practice - Building…
📖 Part of the RAG Series: This is Part 4b - search features and UI: Part 1: RAG Origins and Fundamentals - What embeddings are, why they matter Part 2: RAG Architecture and Internals - Chunking, tokenisation, vector databases Part 3: RAG in Practice -…
Well I finally wrote an app to use Archive.org to fetch all the old content from my first blog. Which ended in 2010. mostlylucid.co.uk. Apparently I changed the server AND how I updated it throughout the years so TRICKY. Hence why it's so customized; it's the…
My system, DiSE, is a self-optimizing, self-assembling, software engineering grounded workflow builder. It generates testable code artifacts, evaluates them objectively, and evolves them over time without constant human supervision. But here's the thing:…
So you might have noticed hundreds of "new" blog posts appearing recently. Well, they're not new at all - they're OLD. Like, 2004 old. I finally built a tool to rescue my content from the digital graveyard that was my old blog at mostlylucid.co.uk. Why…
Just a very quick response to a query someone had. Even though it says "© Scott Galloway 2024" at the bottom it's technically incorrect (well copyright is automatic but YOU have the absolute right to do what you want with it). The entire goal of this site is…
Backpressure is the unsung hero of distributed systems. It's what keeps your queues from bursting at the seams when producers are firing messages faster than consumers can chew through them. Put simply: it's the system saying "hold on a moment" when things get…
📖 Related to the RAG Series: This article provides a deep dive into Qdrant, the vector database used in: Part 4: ONNX & Qdrant Implementation - Building semantic search Part 5: Hybrid Search & Auto-Indexing - Production integration Qdrant (pronounced…