SDD Workshop: IdentityServer

A couple of weeks ago I finally got to learn IdentityServer from its creator, Dominick Baier. A three-day workshop in London, as part of SDD Deep Dive, was indeed a deep dive into identity and access control in ASP.NET Core applications. It was a nice mix of presentations, live-coding, hands-on labs, and lots of cautionary tales based on Dominick’s experience. Looking at the current training schedule, this 3-day version was a really unique chance to learn a lot and without a rush.

[Read More]

.Net DeveloperDays 2017: impressions

Last week I went to my second tech conference of this fall, .NET DeveloperDays in Warsaw. It was an event of a smaller scale than TechDays or NDC, but still one of the biggest in Eastern Europe. The list of notable speakers included Michele Leroux Bustamante, Dino Esposito, and Sasha Goldshtein, the majority of others being representatives of local software development companies. Frankly, some organizational aspects left to be desired (over-crowded space, a lot of ambient noise during the sessions, too much attention to sponsors sometimes), but there was still some very good content. Also, I got the ticket for free by winning it in a lottery, so, as Dutch people would say, een gegeven paard moet men niet in de bek kijken

[Read More]

TechDays NL 2017: impressions

This week I attended my first Microsoft’s conference in the Netherlands, TechDays 2017. It was super exciting to be there and to learn from the top experts in the field. Also, finally got a better overview of the Dutch companies doing software development and consulting with Microsoft technology stack: it’s funny how easy it is to keep working in your own bubble after moving to another country.

[Read More]

LINQ-like functions in JavaScript with deferred execution

Let’s admit it: as C# developers, we are quite lucky. Not only the language is well-designed, but it also keep evolving and getting amazing new features. Moreover, Microsoft has changed the release strategy, so that we get both stable new versions and the “point releases”. The current stable major release is C# 7.0, but you can already use 7.1 and 7.2 is coming soon. Also, everything is now happening in the open, so here we can see the C# language roadmap and feature status.

[Read More]

Redis-based distributed cache in ASP.NET Core

One of the things I particularly like about the new ASP.NET Core is that it’s been designed as a framework with very sensible defaults. The flexibility of rewiring everything the way you like is still there, but the defaults cover what the majority of developers will probably need in most typical scenarios. Also, the definition of the “typical scenario” has significantly changed since the early days of ASP.NET. For instance, caching has always played an important role in web development, but the way we normally cache things today is different than it was 10 years ago.

[Read More]

Null checking, allocations and mass refactoring with ReSharper

Imagine any .NET codebase you have worked on. What would be the most common usage of if statement in this code? Given the notion of The Billion Dollar Mistake, I bet it is the null check. Reference types in .NET are allocated on the managed heap, so when an instance of such a type is assigned to a variable, this variable essentially points to an adress in this managed heap. The default value of such a variable is null, meaning that it points to nothing and can’t be dereferenced. For instance, if you write a method with a reference type argument, you can’t always predict how this method is going to be invoked and there is no guarantee that it won’t be a null value. To protect your code from an unexpected NullReferenceException, you would typically write something like this:

[Read More]

5 Ways To Manage Database Schema Changes in .NET

Most useful applications these days store some data in some storage. Sometimes this storage is a relational database with a well-defined schema. This schema might evolve with time, requiring production databases to be updated. In some cases, this is a rare occasion and perhaps can be done manually. However, if a company follows an agile approach and is trying to deliver new releases continuously, then these manual updates can quickly become too much of a headache even for experienced DBAs.

[Read More]