TL;DR We had a single-tenant Angular + .NET 10 SaaS where every row was scoped by UserId. To support firms (multiple lawyers sharing data), we needed multi-tenant workspaces — but rewriting every query was off the table. EF Core's HasQueryFilter made it possible to flip 9 tables to multi-tenant in a single weekend, with zero query call sites changed. Here's the pattern. I'm building NeoJurídico,
TL;DR We had 11 free-trial users on a paid Colombian legaltech plan over 30 days. Trial→paid conversion: 0%. Spoiler: it wasn't a PMF problem. It was a billing-architecture bug. If your trial doesn't tokenize a card upfront, your cron job has nothing to charge when the trial ends. The user silently downgrades to free, and your "trial conversion rate" is mathematically impossible. Here's how we f
If you are building a FiveM roleplay server, Discord Rich Presence is one of those small details that makes a big difference. It replaces the generic "Playing FiveM" status with your server name, logo, and player count. Every player on your server passively advertises your brand to their entire Discord friends list. The setup is straightforward but the implementation differs depending on your fram
The File Search tool in the Gemini API now supports multimodal retrieval by adding support for Gemini Embedding 2. This update allows images, such as charts, product photos, and diagrams, to be natively indexed and searched in the same store as your text-based documents. This post covers how to use the File Search tool end-to-end: creating a store, uploading documents and images, querying with gro
Hi everyone, my name is P Swyom Sanjog. Welcome back to my blog—I hope you’re all doing well. Today, I’m bringing a new topic: Virtual DOM. Let’s understand what the Virtual DOM is in simple terms. We’ll cover key questions like what it is, why it’s used, and how it works. So, let’s get started! Virtual Dom So, let’s break down the topic into “Virtual” and “DOM.” Virtual means something that exi
Your phone will connect to the strongest tower it hears. It does not ask for ID first. It assumes trust, and that assumption is the entire problem. I first noticed this in 2019 outside a security conference in Las Vegas. My test Android dropped from LTE to 2G for 47 seconds, then returned to normal. No user notification. The baseband logs showed a cipher downgrade to A5/0, a location area code tha
I have been working on a .NET assertion library called Axiom Assertions. It started as a way to learn how assertion libraries work, then grew into an experiment around deterministic output, batching, analyzers, and AI-focused test assertions. The repo is here: https://github.com/spearzy/Axiom-Assertions This did not start as a plan to overthrow every assertion library in .NET. That would be a bit
This technical post walks through the design and implementation of Secure Playground: a local web app that simulates prompt-injection attacks against large language models and demonstrates simple defenses. Provide a minimal, reproducible environment to test payloads and defensive strategies. Make it easy to add new providers and run mutation-based red-team experiments. Offer a leaderboard and scor