Ode to versioning

Unless you keep your programs only for yourself, you would want to give them a version. Versioning is a popular technique where a unique version number is assigned to a program to denote a specific state of the code of that program at a specific time. A version number is used as a reference to what the program, as a deliverable, includes in terms of functionality. This reference is expressed in words that your users would understand. Furthermore, if your users experience a problem, you could try to reproduce it on that same state of the code.

There are many versioning schemes that dictate how to generate new version numbers. When trying to implement continuous integration (and delivery), though, you may face some challenges. In this blog post I will try to explain some of these challenges and what options there are.

Continue Reading…

Load balancers can much more

Load balancing is a popular technique when you need to be able to serve thousands and more concurrent requests in a reliable manner. Load balancers distribute incoming network traffic across a group of backend servers (a.k.a. server pool or server farm) to increase throughput. Although many people associate load balancing primarily with the higher throughput, this technique can be used in other important scenarios as well.

Load balancing

Continue Reading…

Model binding in ASP.NET MVC can be fun

Model binding is a technique that allows you to map data to your controller actions in ASP.NET MVC. In the old days one would manually call Request["param"] to get the value of а parameter, but this could quickly become annoying as you get many parameters (f.x., via form POST). Model binding abstracts away this tedious activity and allows us to focus on designing our controllers. The process itself looks like this:

Model binding mechanism

A nice bonus is that we can map our models from any kind of request, for example a form POST or AJAX. Continue Reading…

The power of feature toggles

Many organizations employ a complex deployment process where every code change has to go through a series of different steps in order to reach the production environment. This is typically due to organizational rules, which require many people to approve the deployment. The result is a big package with many updates to the code that is supposed to be deployed at once. At deployment time the level of stress rises drastically, as there often are unexpected errors – missing configurations, misunderstandings in the team, or special (not well-tested) scenarios. Moreover, if the deployment fails, it needs to be rolled back, which could be a painful process.

Long deployments process

Continue Reading…

taskhostw.exe high CPU usage on Windows 10

I have had my Dell XPS 13 for more than 2 years now and I am still very happy with it. When I bought it initially, it came with Windows 8. Later on I upgraded it to Windows 8.1. And lastly I upgraded it to Windows 10 – the free upgrade offered to many people. Windows 10 suits my computer well as it can be used both as a regular laptop and as a tablet (its screen can be flipped around). Moreover, there are a lot of performance optimizations and configuration improvements in this version of Windows that makes my life better. However, after the upgrade one problem occurred. Continue Reading…