DevOpsFiguring out Stages in YAML pipelinesStages are an essential part of a successful CI/CD pipeline. Discover how to use them and get the most value with Azure DevOps
Weekly notesWeekly Notes - #46Stay up to date with the latest news in the .NET world: Networking, Microservices, F#, ASP.NET, Docker
Weekly notesWeekly Notes - #45Stay up to date with the latest news in the .NET world: .NET, F#, C#, Tests, Azure, ASP .NET
dotnetSolving the Advent of Code 2020 with F#Each year I participate in the Advent of Code challenge. Yes, it's an advent calendar for geeks! I also give myself the challenge to complete it in F#
Weekly notesWeekly Notes - #44Stay up to date with the latest news in the .NET world: .NET, F#, C# Performance, Functional programming
Weekly notesWeekly Notes - #43Stay up to date with the latest news in the .NET world: ORM, Git, C#, F#, Microservices, PowerShell, Windows Terminal
Weekly notesWeekly Notes - #42Stay up to date with the latest news in the .NET world: PowerShell, MediatR, CQRS, Microservices, Azure, ServiceBus, RubberDocking, Functional Programming, .NET Translation
Weekly notesWeekly Notes - #41Stay up to date with the latest news in the .NET world: Visual Studio, GitHub actions, Docker, .NET, Azure, Feature Flags, Infer#, Tests, DDD, React, Vue
Weekly notesWeekly Notes - #40Stay up to date with the latest news in the .NET world: ASPNET Core, .NET Core, DDD, CosmosDB, Azure, Pentest
dotnet.NET 5 & C# 9 with me in the VisualStudio TalkShow Podcast (FR)Retrouvez-moi dans le VisualStudio Talk Show où on discutera de .NET 5 et C# 9! Nous ferons aussi un survol de l'histoire de .NET depuis ses débuts jusqu'à aujourd'hui.
DevOpsBuild a complete Web App hosting a SPA in Azure DevOps YAMLDiscover how to build a flexible YAML pipeline in Azure DevOps to support both back-end-only applications and more complex applications like ASP.Net back-end with a SPA.
Weekly notesWeekly Notes - #39Stay up to date with the latest news in the .NET world: YAML, Azure DevOps, Tests, BDD, .NET 5, Identity, C# 9.0
DevOpsEfficiently manage your YAML pipelines in Azure DevOps with reusable templatesAzure DevOps offers a powerful way to reuse parts of your build pipelines with YAML templates. Discover the recipe that I use in all my projects.
Weekly notesWeekly Notes - #38Stay up to date with the latest news in the .NET world: GitHub, .Net, AspNet, C# 9, CAP, Microservices, DDD, DevOps, yaml, UX
Weekly notesWeekly Notes - #37Stay up to date with the latest news in the .NET world: .NET 5, C# 9, F# 5, AspNet Core, EF, VS, WindowsTerminal, Cake, DDD, Micro FrontEnd, OpenApi, AutoRest
dotnet.NET 5 - The breaking changes you need to know about.NET 5 is here, and there's also some breaking changes coming with it that you need to be aware of.
Weekly notesWeekly Notes - #36Stay up to date with the latest news in the .NET world: .NET Conf, KEDA, Blazor, DevOps, Unit testing, F#, C#, CQRS, Farmer
Weekly notesWeekly Notes - #35Stay up to date with the latest news in the .NET world: gRPC, .NET 5, OpenAPI, Angular, React, Blazor, Test, Azure, SQL
CSharpC# 9 The unknown goodiesDiscover all the hidden gems in C# 9 that nobody talks about. Module initializers simplified null check, covariant returns, and native sized integers
Weekly notesWeekly Notes - #34Stay up to date with the latest news in the .NET world: Dapr, Farmer, Azure, C#, F#, Test, architecture, SQL, EF, Azure DevOps
Weekly notesWeekly Notes - #33Stay up to date with the latest news in the .NET world: ASPNet, .Net 5, C# 9.0, WindowsTerminal, Kubernetes, TDD, Pure functions, gRPC, Azure DevOps, CodeSpaces
CSharpC# 9: Partial Methods get more flexibilityC# 9 brings a lot of new flexibility around partial methods, making them a useful tool to extend third-party generated code and unlock new extensibility scenarios
Weekly notesWeekly Notes - #32Stay up to date with the latest news in the .NET world: CosmosBD, OOP, Git, Windows Terminal, C#, Blazor, Sagas, agile
Weekly notesWeekly Notes - #31Stay up to date with the latest news in the .NET world: .NET 5, Functional Programming, C#, Blazor, Microservices, CodeSpace, Git, AspNet, Dapr
Weekly notesWeekly Notes - #30Stay up to date with the latest news in the .NET world: Ignite, K8s, Azure, .NET, Blazor, serverless, SOLID, ASPNET, Functional programming, microservices
ConferenceMy full recap of Microsoft Ignite 2020 for devsAll you need to know about Microsoft Ignite 2020, must-watch sessions, announcements, and more
ConferenceMy Ignite watchlist for developersHere's my personal watchlist of session for developers. Ignite 2020 sept 22-24
Weekly notesWeekly Notes - #29Stay up to date with the latest news in the .NET world: .NET5, GitHub, AspNet, EF, WSL2, SOLID, Microservices, WASM, JS, F#, CQRS
CSharpC# 9.0: Target-typed expressionLearn all about the new target-typed capabilities in C# 9.0. It helps simplify your code and make it more readable.
javascriptHow to dynamically add a query string to all links in a pageLearn how to dynamically rewrite links on a page or even a whole website with an unknown yet simple javascript trick
Weekly notesWeekly Notes - #28Stay up to date with the latest news in the .NET world: CodeSpaces, CSharp 9, Azure, Blazor, AspNet, Functional Programming, CSS, CQRS, DDD, Git, ARM template
CSharpC# 9.0: Improved pattern matchingDiscover all about the new logical expressions in C# 9.0 and how they improve pattern matching
Weekly notesWeekly Notes - #27Stay up to date with the latest news in the .NET world: Windows Terminal, TDD, Functional Programming, F#, ASP.Net Core, Microservices, Containers
Weekly notesWeekly Notes - #26Stay up to date with the latest news in the .NET world: C# 9.0 init-only properties, WSL 2, .NET 5, F# 5, Blazor, REST
CSharpC# 9.0: Init-only propertiesObject initializer is one of the most loved features of C#. However, it comes with some annoying limitations. Fortunately, it's getting fixed in C# 9.0 with init-only properties.
Weekly notesWeekly Notes - #25Stay up to date with the latest news in the .NET world: C# 9.0 Records, CosmosDB, Functionnal Programming, Microservices, TDD, DevOps, Azure, API, JS
CSharpC# 9.0: RecordsImmutability as always been challenging to implement properly in C#, or at least was very painful. C# 9.0 introduces the concept of records which will greatly simplify all of that.
Weekly notesWeekly Notes - #24Stay up to date with the latest news in the .NET world: C# 9.0, Blazor, Angular, Functionnal programming, AAD, VisualStudio, Micro frontend, Azure, F#, OpenSilver
CSharpC# 9.0: Primary constructorsDiscover how you can simplify your POCOs with the new syntax introduced by the primary constructors of C# 9.0
Weekly notesWeekly Notes - #23Stay up to date with the latest news in the .NET world: VisualStudio, TypeScript, Angular, F#, AspNet, DDD, Roslyn, eventual consistency, microservices
dotnetC# 9.0 PreviewMicrosoft is doubling down in the evolution of the C# language. They released C# 8.0 last year with many new features, and there's already a preview of C# 9.0 in the making.
dotnetA big thank you for my MVP awardI'm thrilled and humbled to receive my first MVP award in the Developer Technologies category.
Weekly notesWeekly Notes - #22Stay up to date with the latest news in the .NET world: DevOps, WSL, Microservices, DDD, Markdown, EventSourcing, Blazor, Messaging
Weekly notesWeekly Notes - #21Stay up to date with the latest news in the .NET world: Docker, VsCode, Windows Terminal, EF, Tests, DDD, async, AspNet, Coyote
dotnetC# 9.0 Top-Level programsLearn all about the new simplified way to write top-level program statements.
dotnetThe code smell every project suffers fromDiscover how to fix a code smell (primitive obsession) that plague almost every project.
Weekly notesWeekly Notes - #20Stay up to date with the latest news in the .NET world: F#, .NET 5.0, Coyote, EF, JS, EventSourcing, Microservices, DDD, Azure function
Weekly notesWeekly Notes - #19Stay up to date with the latest news in the .NET world: Microservices, F#, TDD, Blazor, NuGet, EventSourcing, C# 9.0, js
Weekly notesWeekly Notes - #18Weekly notes: AspNet Core, EF, TypeScript, F#, Tests, Microservices, SQL, CQRS, C# 9.0, EventSourcing, Blazor
DockerIntroduction to network communication between Docker containersLearn the basics of Docker virtual networks, how to diagnose connections issues and how to fix them.
TestLetters order | Solving the diamond kata with property-based testingDiscover the last and final property that will conclude our journey of creating a complete implementation of the diamond kata using TDD and property-based testing.
Weekly notesWeekly Notes - #17Weekly notes: Azure, Docker, IdentityServer, CSharp 9, Test, AspNet, PairProgramming, EventSourcing, Microservices, performance
TestNo padding for input letter row | Solving the diamond kata with property-based testingDiscover a new kind of property that will reinforce our test suite and help us get to a working implementation of the diamond kata
Weekly notesWeekly Notes - #16Discover the latest announcements in the .NET world: Windows Terminal, gRPC, MAUI, EF, AspNet, SQL, Blazor, Microservices, DDD
dotnetSymmetry around the horizontal axis | Solving the diamond kata with property-based testingIn this article, we'll inspect our diamond to find some symmetry and make it a property based test.
Weekly notesWeekly Notes - #15Discover the latest announcements in the .NET world: DotNet 5.0, FSharp, Blazor, Azure, Serilog, Seq, Docker, EventSourcing, AKS
dotnetSymmetry around the vertical axis | Solving the diamond kata with property-based testingIn this article, we'll inspect our diamond to find some symmetry and make it a property based test.
dotnetOutside space symmetry | Solving the diamond kata with property-based testingIn this article, we'll try to find some patterns in the global shape of our diamond, specifically with the spaces surrounding each row.
Weekly notesWeekly Notes - #14Discover the latest announcements in the .NET world: Enum, IaC, Pure Function, Concurrency, Feature flags
dotnetHeight equals Width | Solving the diamond kata with property-based testingIn this article will try to find some patterns in the global shape of our diamond.
Weekly notesWeekly Notes - #13Discover the latest announcements in the .NET world: EF Core, CosmosDB, Git, Feature flags, Performance, Serilog, DDD
Weekly notesWeekly Notes - #12Discover the latest announcements in the .NET world: MS Build, VisualStudio, VS Code, Blazor, SQL, F#, C# 9.0, LiveShare
dotnetMy full MS Build 2020 recapDiscover my notes on MS Build 2020 in this exhaustive recap of everything I was able to watch.
CSharpFirst and Last line content | Solving the diamond kata with property-based testingIn this article will try to find some patterns in the first and last line of our Diamond.
Weekly notesWeekly Notes - #11Get the latest news from the .NET world: VisualStudio, TypeScript, Blazor, SQL, F#, EventSourcing
Weekly notesWeekly Notes - #10Get the latest news from the .NET world: Helm, CNCF, MS Certification, VS CodeSpace, Source generator, EventSourcing, Azure, LINQ, and more
TestInput generators in property-based tests with FsCheckDiscover how to write your first property-based test using FsCheck
Weekly notesWeekly Notes - #9Get the latest news from the .NET world: #msbuild, #Blazor WASM, #DevOps, #Kubernetes, #Exception, #dapr, #EventSourcing, #Database
Weekly notesWeekly Notes - #8Get the latest news from the .Net space: .NET 5, #Azure, #Git, #DevOps, #Messaging, #YAML, #FP
dotnetHow to get started with Property-based Testing in C#Discover how to apply TDD with Property-Based testing while solving the Diamond Kata
Weekly notesWeekly Notes - #7Get the latest news from the .Net space: CosmosDB, Git, Blazor, VS Code, GitHub, MS Teams, JS
Weekly notesWeekly Notes - #6Get the latest news from the .Net space: Azure monitor sourceMaps, DB integration tests, CQRS + ES, Https, LiveShare
TestHow many unit tests are good enoughOne of the biggest problems with unit testing is to know for sure when we have enough tests to be confident to release in production.
Weekly notesWeekly Notes - #5Get the latest news from the .Net space: Stability during pandemic, Regex Performance, Secure DNS, Remote pairing tools, FP JS, Test C# api, DDD, Tech Debt
Weekly notesWeekly notes - #4Get the latest news from the .Net space: Blazor WebAssembly 3.2.0 Preview 3 release now available, CQRS, Getting Started With .NET Localization, Easily adding Security Headers to your ASP.NET Core web app and getting an A grade, What's wrong with the current state of unit testing
dotnetEverything Wrong With The State of Unit Testing TodayExample-based testing is simple but tends to fall short in some scenarios. Discover an alternative approach: Property-based testing.
Weekly notesWeekly notes - #3Every week, I share my engineering notes. They include everything I can dig up on the internet, and that is worth sharing.
Weekly notesWeekly notes - #2Every week, I share my engineering notes. They include everything I can dig up on the internet, and that is worth sharing.
Weekly notesWeekly notes - #1Every week, I share my engineering notes. They include everything I can dig up on the internet, and that is worth sharing.
dotnet5 tips to improve your productivity in C# 8.0Microsoft added a lot of new syntax goodies in their latest release of C#, namely: index from the end, range operator, null coalescing operator, using variables, verbatim string with interpolation.
dotnetWhat are default interface methods in C# 8.0?In this post, we'll explain what are Default interface methods, show a few examples and provide guidance to avoid common pitfalls.
dotnetC# 8.0 Indices and rangesCompared to other languages, C# was way behind in capabilities to handle data efficiently. Well, those days are over now. Microsoft just improved the C# syntax, making it easier for developers to manage data in arrays.
dotnetAsynchronous streams in C# 8.0Asynchronous streams are a new way to iterate over a stream of data. It was previously possible to do this synchronously in C#. Now you can do it even if the stream producer is asynchronous! Woot, woot!
dotnetWhat's pattern matching in C# 8.0?Is it me or Functional programming (FP) seems to be trending lately? FP languages like Haskell, Elixir and F# are stronger than ever and large frameworks try to adopt a more functional approach. Even C# tries to include functional constructs in the language.
dotnetC# 8.0 Nullable Reference types are here!C# 8.0 just rolled out with a lot a new features. One of the most important one is the support of nullable reference types (NRT). Lot of words that doesn't seem to explain what it does. I mean aren't all types (except value types) already nullable?
dotnetBounded-Context | Our Journey to World class DevOpsIf microservices are the foundation of our DevOps practices, Bounded-Contexts are probably the glue that holds it all together.
dotnetDeploy Ghost blog with Azure DevOps - Part 2Let's build an Azure DevOps pipeline that will automatically deploy Ghost Blog
DevOpsDeploy Ghost blog with Azure DevOpsLearn how to create a build pipeline in Azure DevOps to deploy Ghost blog automatically on every new release.
Micro ServicesMicroservices | Our Journey to World class DevOpsLearn the story of our DevOps transformation. In this first chapter we talk about the foundation of our system and how we applied microservices principles.
AzureHow to backup your Azure Storage AccountsAzure Storage Account is one of the foundation services of Azure. Pretty much all other services use it under the cover in a way or another. This service is simple, works great, and has crazy SLA and redundancy capabilities. However, it doesn't provide a point in time restore. Meaning that if you corrupt or delete some data, there's no way to recover it. There are some solutions that you can find over the internet, but unfortunately, none of them is a silver bullet. Let's explore and compare som
dotnetWhy null in C# is so badIn my career, more than half of the bugs I encountered were related in a way or another to a null value being propagated where it shouldn't have been—therefore resulting in unexpected behaviors or a nasty NullReferenceException. The problem Why is null such a problem in C#? Well... the null problem (a.k.a the billion-dollar mistake) breaks many assumptions you can make about the programming language. In more theoretical terms, it breaks the Liskov substitution principle. (One of the famous SOL
dotnetSimplified approach to the Decorator pattern with AutofacThe Decorator pattern is an elegant way to compose behavior without changing existing code. It makes the separation of concerns very clear between each class. Everything is then very easy to test and reuse.
dotnetYou need these tools to be more efficient at Testing with AutoFixture and FakeItEasyDiscover a simplified approach to write unit tests to be more efficient.
SecurityHow to mix Security and Productivity with Service FabricService Fabric is a great framework, but yet a complicated one. Often, when we try to improve the security of the cluster, we end up adding a lot of complexity in our development pipeline. The local development experience become a nightmare and there's a big lost in productivity for team. But! It doesn't have to be that way. Productivity and security could play well together if you think about them from the start. Let's take a look at how we can improve our cluster security following all the in
AzureAzure Governance - Part 2 - Naming conventionsA good naming convention will help a lot to build a strong Azure governance
AzureAzure Governance - Part 1 - How to organize your subscriptionsMoving to the cloud is pretty exciting. When you open the door to your dev teams it can go crazy fast and next thing you know you have a big mess of Azure resources all over the place. Putting in place a good set of governance guidelines will help you keep everything under control. The first thing to think about is your Azure Subscriptions structure. This is the very first step that will drive many of your following decisions in order to achieve a good Azure governance. Goals 1. Security 2.
AzureAzure Application Gateway for Micro ServicesAzure Application Gateway is a pretty neat and cheap service offered by Azure. It’s a level 7 load balancer which means it understand HTTP and can route traffic according to a specific URL pattern. In my opinion it’s a must have in a micro service world these days. Here’s why: The problem If you are like us, you probably have an infrastructure with one hostname per micro service finance.contoso.com user.contoso.com sales.contoso.com This seems fine at first, but it comes with some issues 1
dotnetSemantic Logging with .net EventSourceApplication logging is the kind of software problem that has been solved so many times, in so many ways. It makes it really hard to choose THE right framework to use when starting a new project. Sometimes it almost feel like coding your own framework will be a good idea (Please don’t do that). The first thing you should ask yourself is what are your requirements. Try to think about what will the development, testing, and debugging experience be like. How will you search through your logs to find