Writing custom EsLint rules

In statically compiled languages, we usually lean on the compiler to catch out common errors (or plain stupidities). In dynamic languages we don’t have this luxury. While you could argue over whether this is a good or a bad thing, it’s certainly true that a good static analysis tool can help you quite a bit […] Read More...

Iterators and Generators in Javascript

Last week I wrote about the yield return statement in c# and how it allows for deferred execution. In that post I explained how it powers LINQ and explained some non-obvious behaviors. In this week’s post I want to do the same thing but for Javascript. ES6 (ES2015) is becoming more and more mainstream, but […] Read More...

Yield return in C#

The yield return statement is probably one of the most unknown features of C#. In this post I want to explain what it does and what its applications are. Even if most developers have heard of yield return it’s often misunderstood. Let’s start with an easy example: IEnumerable<int> GetNumbers() { yield return 1; yield return […] Read More...

Impressions as a rookie Microsoft MVP

Last week I attended my first Open MVP day since I got the Microsoft MVP award. It was a great experience and I wanted to share what I learned and shout out to the great professionals I met there. For me, it’s an honor to be part of this community. Not only does it feel […] Read More...

Javascript sandbox pattern

A few years ago I wrote a post about Javascript namespaces and modules. In that post I discussed a pattern for isolating your code from outside code. I also promised to write up another pattern, the javascript sandbox pattern. I never did though. Lately I received a few emails about this and decided to write […] Read More...

Technical debt: managing code quality

Technical debt is usually seen as a negative factor in a development process. While having too much technical debt is indeed a good indicator for a project gone bad, technical debt is not always a bad thing. What is technical debt? When you start writing code you usually have a choice: either do it quick […] Read More...

Code Reviews: why and how?

Of all the practices implemented to improve code quality, such as unit testing, continuous integration, continuous deployment, daily stand-ups, I find the most important one is doing proper code reviews. Code reviews have a lot of advantages: It’s much easier to spot problems with other people’s code than with your own Knowledge of the codebase […] Read More...

Build 2016 announcements

Build 2016 is finished and as always it was great to see Microsoft bringing new opportunities to businesses and developers. Unfortunately I wasn’t able to attend, but luckily, the live stream of all the important sessions, especially for the keynotes, made up for that. These are the announcements that excited me the most. Microsoft Bot […] Read More...

Dependency management: strategies and pitfalls

In the wake of the issue with NPM, I wanted to share my view and experience with dependency management. First of all, what happened? I’m not going to go too deep on what actually happened (there’s plenty of information about that), but essentially, because of a copyright dispute a package was removed and replaced with […] Read More...

Vertical slices in ASP.NET MVC

Why? In ASP.NET MVC, applications are divided into horizontal layers, which is reflected in the project structure: Controllers Views Models Scripts Style It’s a good idea to divide you application into logical parts. While the idea of horizontal slices might look like a good idea, in practice I have noticed that it’s not necessarily the […] Read More...