Best practices for good PR's To understand what constitutes a good pull request, we must first define the reason why we use the pull request process: - PR's are a great way of sharing information about the code base. - It creates an extra gate before our code goes to production - It improves code quality.
What's new and coming in C# 8.0 Another year, another C# update. This time we’re up for already C# 8. I want to dive into the most likely new C# 8 features, what they look like and why they’re useful. Disclaimer: The information in this blog post was written
Refactoring taken too far I came across a tweet today about refactoring badly written code. I’m always interested in that, so I saw a few fellow devs had taken some badly written code and then applied refactoring to it, following good software design principles. It all started
Git as a NoSql database Git’s man-pages state that it’s a stupid content tracker. It’s probably the most used version control system in the world. Which is very strange, since it doesn’
Open source software on company time Most developers love open source software, and often we come across a piece of software that we’re writing and think “it would be great if that already existed as an open source package”, but then, it doesn’t. Since we’re writing software
Avoiding code ownership Creating development silos, is a practice I have seen in many different teams. What I’m talking about is having developers specialize in parts of the domain, i.e. one developer handles all the code related to invoicing, another one does everything around order
Database migrations made simple I make no secret of the fact that I don’t like ORM’s. One part of why I don’t like them is the way they handle database migrations. To successfully create and execute database migrations, you often need to know quite a
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
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
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
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
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
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
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.
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
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
.NET 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
.NET Testing REST clients With the proliferation of REST API’s, external ones and internal ones (think microservices), we very often find ourselves depending on these external services in our applications. Usually we have
.NET New features in C# 7, part 2 In my previous post about probable new features in C# 7, I talked about Tuples, Record Types and Pattern Matching. These are the most obvious candidates for inclusion. In this post I want to highlight a few more new features that are not getting
.NET C# 7: New Features It seems like only yesterday we got C# 6, but as it goes in software development land, the next thing is already on its way. In this post I want to describe the most likely new C# 7 features, what they look like and
best practices Programming in the zone Much has been written and said about programming in “the zone”. Most articles give you tips on how to get in the zone and keep there. I haven’t found any article though that challenges the usefulness of ‘being in the zone’ (If I
.NET The test pyramid The test pyramid is a concept that was developed by Mike Cohn. It states that you should have an appropriate amount of each type of test. In the pyramid he distinguishes different types of tests: Exploratory tests: Performed manually by a tester System tests:
Acceptance Testing Running SpecFlow Acceptance Tests in parallel on BrowserStack Automated acceptance tests play a vital role in continuous delivery. Contrary to unit tests though, they’re quite hard to get right. This is not only because end-to-end testing is harder than testing single units, but also because of the way they need to
best practices Simple code: a sample app In my last few posts I have hammered a lot on simplicity in software. In my first post (Simplicity in software) I explained what the difference is between easy and simple code (or hard and complex code). On the basis that introducing frameworks and
best practices Using partial application for dependency injection In my post on how to simplify code by using composition instead of an AOP-framework I showed a way of substituting attribute based programming with a more composable paradigm. The result of that transformation will be my starting point for today’s post. For