First day of parental leave - I love it!

OK - my first parental leave day is well on the way. You should try this - it’s great!

I thought that I would upload some photos of Albert as the time progress to see how he is developed. Here is one from a few days back.

Albert - he knows that he can't go there...

Right now he’ll walk if I hold his hands, and he talks a lot with two words: Pappa and Albert.

Read More

Sprint Planner Helper – Session 1

I started off very pure and true to the noble principles of TDD and Extreme OOP. Actually I did decided on a few naming conventions first, the name of the product is Sprint Planner Helper and it will reside in the namespace Marcusoft.SprintPlannerHelper. I also created four projects like this (idea stolen from ASP.NET MVC Storefront):

  • Marcusoft.SprintPlannerHelper.Models - my domain model
  • Marcusoft.SprintPlannerHelper.Service - any services need for the model, such as database access and so on.
  • Marcusoft.SprintPlannerHelper.Web - the ASP.NET MVC Web Application.
  • Marcusoft.SprintPlannerHelper.Test - the unit test of the application.

Then I removed all the Class1.cs from all the projects that default them to me. At this point I realized that I was missing Visual Studio 2008 Power Commands and Resharper at the computer I was using. Had to download them - you can live without them. The 1 h /day...

Read More

Sprint Planner Helper - administration

OK - in order to be able to work with this at all I thought I first should do some administrative stuff for the project. So I have setup a CodePlex-project where I will keep my sources. You’ll find it at: http://www.codeplex.com/sprintplannerhelper/. You can apply for getting part of the project there in order to get hold of the sources as I move along.

During the setup-process of that I learned that the Team Explorer Client that is used to connect to a TFS Server is actually free (!). You can download it from here.

I also decided to keep it quite freeware-ish. I will not use any products that cost money. In order for any other to “reproduce” the project on their computers.

OK - the project will soon be up - kind of. I have just created the solution and added my Read More

What to do now - Sprint Planner Helper Initialization

I’m free!!! So what do I do now. I have been talking to my colleagues that now that don’t have to do boring work with them ;) I need another project in order to stay in touch with the IT-business.

Here is the reasons for me doing this at all:

  • Have fun! - the second it’s boring or takes to much time I’ll end it. Promise
  • To learn about DDD, TDD and ASP.NET MVC. These three things has attracted a lot of my interest I would like to try them out out. Oh yeah - it will be in C#! No more VB.NET for me - thank you very much.
  • Cannot take to much time (max 1 hour a day) - as stated earlier. I am not working!
  • Document my progress here on the blog. This idea is a complete rip off from a lot of...
Read More

Clean code - the pragmatic approach

As I wrote in the previous post I am right now reading Clean Code by Robert “Uncle Bob” Martin. It is great!

But having 200 hundred pages book that contains rules about how to code will pretty soon get hard. Especially if you try to adopt it in a team.

A while back we discussed an essay by Jeff Bay called Object Calisthenics a lot in the Microsoft community at Avega. This is a very pragmatic approach with 9 rules that states how to code.

Here is a pdf-version of the rules.

What I found was that many of the rules that Uncle Bob is talking about in Clean Code will be followed automatically if you adhere to the rules in Object Calisthenics.

I’ll try it out sometimes - but it looks like a quite bitter pill to swallow when you look at the list…...

Read More

Last day - new chapter

I have come to a fork in the road of my life (that almost sound like a poem :)).

Today is the last day on the assignment where I have, as ever, learned a lot. This time I have picked up SOA, WCF, TFS, AOP and build scripts - and of course SCRUM.

The Scrum part of this was almost a religious experience.  I am a different and better consultant after learning SCRUM. I won’t ever go back.

The future hold six months together with Albert and Elin. I will be “daddy-free” (direct translation of “pappaledig” for all you Swedish readers). This is a truly amazing thing that we have in Sweden where you actually get money from the government to be home with your kids. Amazing!

Elin is working nights right now which means that she has...

Read More

Create textfile on the fly in build scripts

Yesterday we did a final touch to our build script (by we I mean “I talked about it for five minutes, Christer did it”).

We wanted to create a bat-file that installs our database in a certain version to a certain environment. So - the information we need to be able to do that is only know at runtime in the build-script.

From what I could remember there was a MSBuild community task for this - this was my input.

Christer then found the task WriteLinesToFile and wrote the following target that creates a bat-file as above.

<ItemGroup> <CmdLine Include = “@ECHO OFF”/> <CmdLine Include = “ECHO About to install version $(BuildVersion) on environment $(DeployEnv)”/> <CmdLine Include = “SET /p passw=Enter DB password for $(DeployEnv): “ /> <CmdLine Include = “CALL main.bat $(DeployEnv) . $(BuildVersion) %passw%”/> <CmdLine Include = “PAUSE”/> </ItemGroup> <WriteLinesToFile File=”$(PublishWebSitePath)\Database\Installera_$(DeployEnv)_version_$(BuildVersion).bat” Lines=”@(CmdLine)” Overwrite=”true”/>

...
Read More

NMock2 RemotingException ByRef value type parameter cannot be null

OK this might be the most misleading error message I’ve seen. I cannot decide on how to describe it… What this means… or what this try to … Actually this happens when one of your mocked objects is mocking a method that returns something and your mocking doesn’t return anything. Eeeeh - that was quite tricky. Got it? Here is an example: When I mock this method:

Public Class FacadeObject 
     Function CreateSomeThing(ByVal aName As String) As Long
               End Function

        End Class

by using the following code to do the mock

Expect.Once.On(m_mockadFacadeObject).Method("CreateSomeThing")

an exception of RemotingException (ByRef value type parameter cannot be null) will be thrown. Here is another description that you might find easier to understand

Read More

Update AppSettings with XmlUpdate in build scripts

I know I will chase this one for ever if I don’t put it up here…

We ran into a situation where we needed to tweak the AppSettings-section of an configuration before tests in the build script.

Luckily there is help to be found. With the XmlUpdate-task (in the MSBuild Community Tasks) this can be accomplished. IF you know how to write the XPath-query.

Here is how (found it here):

<XmlUpdate Namespace=”http://schemas.microsoft.com/.NetConfiguration/v2.0” XmlFileName=”$(SourceDir)\Core\ABSuite\ABClient\App.config”

Xpath=”//configuration/appSettings/add[@key=’Main.ConnectionString’]/@value” Value=”$(DatabaseConnectionString)” />

Also here is a great site to pick up some XPath-skills.

Read More