It was with great honour and sense of privilege that I received that email this Wednesday: I had been renewed as Microsoft Most Valuable Professional (MVP) again, for the period 2026-27! It is the third time in a row, and the 8th (I had previously been awarded from 2014-15 and until 2019. It is really a great privilege to be part of such a fantastic family, and I guess it's a recognition for…
Introduction When using AWS for development, sometimes it is useful to have some sort of emulator, so that we don't incur in costs while doing development and debugging. For that, we have local cloud emulators, and LocalStack used to be the standard one not too long ago; the problem is, its licence changed and it is now generally not free. The good news is that there are alternatives that are…
Introduction C# records and record structs are relatively new. Records offer some advantages over regular classes and structs, which I will cover here, but they are essentially another way to declare them. This is another back to basics article. We essentially use records for: Entities, such as the ones we would store in a database Value objects/ Data Transfer Objects Immutable classes Let's now…
Introduction Some of you may remember - and hopefully have even tried! - my Isolator project . Isolator is a framework for running isolated code for .NET. What this means is that possibly unsafe code can be run in a secure, isolated, way. It offers some quite different isolation strategies: Process isolation : the code to execute runs in another process, possibly under a different identity (on…
Introduction This post picks up where this one left. It will be my second post on using LLMs, and AI, in general. This time I'm going to cover integrating MCP tools with the LLM's response. MCP stands for Model Context Protocol , and it is an open standard . In a nutshell, it is a protocol designed to help LLMs communicating with the real world, for example, accessing a database, getting real-time…
I started posting on Medium about my PhD adventure. Nothing much, for the time being, but you are more than welcome to check it out: https://medium.com/@rjperes75 . I plan to write a bit more about what I'm doing, how I got here, and what challenges/accomplishments I encounter along the way. Always for free, of course! ;-) Posts so far: My PhD adventure — Part I My PhD adventure — Part II
Introduction This will be the first post on AI that I write, which is really a shame, as it's such an interesting and vast topic; you should expect more in the future! This time I'm going to talk about code generation from inside .NET using OpenAI and it's Azure integration , in a structured way. As you know, code generation is one of the typical usages for Large Language Models (LLMs); it is part…
Introduction Note: some people complained that what I actually called Dependency Injection is actually Inversion of Control. I won’t get into that fight, to me, Dependency Injection is a form of Inversion of Control. The Strategy Pattern (sometimes known as Policy) originated in the seminal book Design Patterns , by the Gang of Four. It is a behavioural design pattern that allows picking a…
Introduction We all know EF Core Migrations . They have been around for quite some time, some people like them, others prefer alternatives (hello, Flyway , DbUp , FluentMigrator !). I'm not going to discuss that, but, instead, how to seed data to a database, either using EF Core migrations or not. This is, of course, for inserting initial/reference data that must always be present, for Microsoft's…
Introduction This is the second in a series of posts on .NET synchronisation: In-process synchronisation Out-of-process synchronisation on the same machine (this post) Distributed synchronisation This time I'm going to talk about using the synchronisation APIs I described on the first post , dedicated to in-process synchronisation, but in out-of-process context, meaning, to synchronise different…