How to recruit an IT professional

“Hi person! Did you enjoy your breakfast? I have the best job ever for you, but I will not tell you much about it. Call me today to find out more!”

In my few years of experience as an IT professional, I have been approached by quite a few recruiters whose messages I have not given more than 1 minute of my time. Some of them did get a response, but mostly a negative one. I would say only about one in ten messages warrants reading further than the first paragraph.

Why is this though? Surely helping potential employers and potential employees get together is a worthwhile venture for all parties involved? Since I am convinced that not all recruiters have the “spam-do” attitude and that people can improve, I’ve written this post to hopefully make the world a better place :-)

Looking through my e-mail and LinkedIn message history, I’ve made a list of things recruiters could do to pique my interest. Most of these points will probably apply to other fields of business as well.

Continue reading

Help! My build broke after Windows Updates!

On October 14th, 2014, Microsoft released several patches for ASP.NET. Three of these were for MVC, and they had some nasty side effects for the project I’m currently on. I will explain the three snags we hit with this update and how we solved them.

The updates in question are: 2993937 (MVC 3.0), 2993928 (MVC 4.0) and 2992080 (MVC 5.0).

MVC solution won’t compile anymore

This is the most obvious of the three. After installing the update, we got all sorts of compiler errors, like:

Could not locate the assembly "System.Web.Mvc,Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL"

This error is sort of buried in all kinds of resulting errors:

The type or namespace name 'Controller' could not be found (are you missing a using directive or an assembly reference?)

Continue reading

Persisting business data in MS Workflows

At my current job we have built an application that supports long running processes (up to about 8 months) using Microsoft Workflow Foundation. We have currently made about 15 releases in 2 years, with an ever changing process definition. In this post I will explain one of the most important lessons we have learnt during this time.
Continue reading

Minecraft mod – Fast Leaf Decay

One thing that’s always bothered me while playing Minecraft, is that when you cut down a tree the leaves stay in the air for what seems like an eternity. I’m currently running a small Minecraft server for a few colleagues and friends, and since I’ve made the move to modded Minecraft quite a while ago, I was sure there is would be a mod that fixes this. And there is – Random Things by lumien.

The problem is that we currently use a mod pack which does not include this mod, and I would prefer not to have to tell the players on my server that they have to add a separate mod every time they update the pack. So, being a developer and considering Random Things is open source and under the MIT license, I extracted the desired functionality into a mod of my own: FastLeafDecay (GitHub).

This was my first foray into Java since I left university, as well as my first GitHub project. I have to say I’m impressed with the work MCP and Forge take off your hands when it comes to making mods, despite how difficult Mojang insists on making it. After setting up the project, all that was left was finding the code that “fixes” the leaves. While I’m still not entirely sure what it does, it certainly looks impressive and I take my imaginary hat off to lumien for this!

I hope someone enjoys this. This version of the mod only fixes the leaf decay, has no configuration settings and most importantly does not need to be installed on the clients.

Visual Studio CodedUI – Another control is blocking the control

An issue I have been running into while trying to automate our web application is that some controls appear to be blocked. I would get error messages like this:

Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnBlockedControlException: 
Another control is blocking the control. Please make the blocked control visible and retry the action.
 ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0xF004F003

I removed some of the lines to keep the message short. The main point here is the text “Another control is blocking the control.”
Continue reading

Visual Studio CodedUI – Cannot perform ‘Click’ on the hidden control

Introduction

A few weeks ago, a colleague of mine – Marcel de Vries – gave a presentation on a wednesday evening as he regularly does. This time it was about Visual Studio CodedUI and I was instantly sold. Think of the time we could save on our project by automating our regression test set! I immediately set about (in my spare time, since nobody asked for this – yet) to try and automate a full run-through of the project I’m currently working on.

I chose the manual route of automating the various controls on the web application we’re developing, rather than using the record and playback feature. As I’m doing this, I sometimes run into things that require some investigation. I will use this article, and perhaps a few of the following articles, to discuss the issues I ran into and how I solved them.

I am automating a web application that was not built with automation in mind. As such, we did not add IDs to elements that did not strictly require them. Instead of changing that, I chose to view this as a challenge and see if I can still build an efficient set of page objects.

Cannot perform ‘Click’? Why not?

That’s what I was wondering. Continue reading

Visualizing Team Foundation Server source control history

I thought this was pretty cool:

I wanted to make something like this after seeing a similar visualization of the Minecraft source repository. Obviously it looks a lot better with multiple people working on a long running project, but my employer would probably not appreciate me posting images of their repository. So I used my repository from a little HTML5 Tower Defense game I started earlier this year.

Continue reading

Verifying validity of Workflow Service in Unit Test

Introduction

At work we’ve been having a little bit of trouble verifying that a Workflow Service still “works” after we change something. This is because our custom activities are in a separate assembly. When we change the activities and run MSBuild, we’ll notice that the unit tests still work and that the workflow still compiles. Only after we deploy the service and try to hit it, do we see errors that indicate that the workflow can not be instantiated, for instance because we removed a parameter from an activity. We need some kind of regression testing to prevent this.

To solve this, we now instantiate the workflow in a Unit Test as I will describe in this post.

Problem description

Suppose I have a very simple CodeActivity that takes two values and multiplies them:

public sealed class CodeActivity1 : CodeActivity
{
    public InArgument Input { get; set; }
    public InArgument Factor { get; set; }
    public OutArgument Result { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        var input = Input.Get(context);
        var factor = Factor.Get(context);

        var result = input*factor;

        Result.Set(context, result);
    }
}

I then have a Workflow Service which calls this activity with a value for Input that it gets from a service call, and a constant value of 3 for the Factor:

workflowservice1
Continue reading