Sunday, September 9, 2012

It is good to be busy.. or is it?

As you may have noticed I started and run my own business.
(I’m sure that this must be a parents worst nightmare.)
“Mom, dad… I have quit my job and I’m going into business on my own.”
I can just image them thinking to themselves “aarrggghh – should probably clear out his old room…”

Two years later and I’m struggling to keep up with the work load, every time my parents ask “how are things going?” and I reply “very busy”. Then the inevitable reply comes (with a hint of relief no doubt) “that is good”.

One thing I fear that they are missing is that there are in fact various different types of “busy”. I have tried to explain it before, but I think I’ll just send them to this post in the future..

Lets break down busy. In my opinion, there are a different levels of busy and where some are good others are down right bad.

1) Busy with things that pay you “decent” money

This is a good busy. This is you doing work and being paid for it at a decent rate. If you are not doing work under this category in any way, form or shape you could effectively be losing money. You should spend most of the time busy with this type of work or with activities that will induce more work under this category.

2)  Busy with things that merely pay

Yes, this does differ from number 1. As with anybody that is still finding their space and niche, you tend to take on “other work” that you do not charge the “full” rates for. This could include long term jobs, (in my case) maintenance work (something like retainer) or just plain work you cannot justify charging the full rate for.

Don't get me wrong, this type of work is important when things are slow, when you do not have any other income in the month this could be a “life saver”.
However, when this work starts getting to the volumes that the “initial allocation time” starts increasing uncontrollably, problems start occurring.
You spend more time on this than being focused on either performing or hunting down those “decent” income jobs, effectively losing potential revenue!

3) Busy with things that do not pay……..yet

This is a difficult one. These things you need to do to ensure future revenue. In my case these activities would include for example doing presentations at events or going to see clients to discuss or chat about their problems or even writing blogs. This is a good place to promote myself and my business in terms of who I am and what I can do, basically marketing.

As I mentioned at the beginning of the paragraph this is a difficult one in that it takes a fair amount of time, yet you do not have direct returns.
Without it however, you probably will not have any “returns”.
This is something that you do “need” to do, and in my case probably after hours and over weekends (if you are not busy with something in one of the other categories).

4) Low/no income and very low/no real gain

Unfortunately this is a nasty one. Think of those “quick” projects that just kept on going forever, without payment and with scope creep through the roof. Promises that payment will come if you deliver x,y and z, but on delivery it is not good enough and the requirements have changed etc. etc. etc.

You have made commitments and there is no easy way out of this. Every moment that you are spending on this one you are losing out on any of the other categories.
Other than to just walk away I do not really know how else to handle these.
Obviously things like reputational risk come into play, just in general leaving a bad taste in the mouth.


I think these (or a combination of these) cover the main point of being “busy”. So next time someone says they are busy, ask them is it a “good busy” or a “not so good busy”.


Tuesday, August 7, 2012

Code Lab 2012 : Refactoring Talk

I can hardly believe it has been a week already since Code Lab 2012 kicked off in Somerset West. I must admit, I did gain a bit of insight into topics I have not really given much thought to previously. It was indeed an educational experience, I would definitely recommend it when Code Lab comes around again.

A couple of people have asked for the presentation slides and code on my talk “You want me to do what…” in which I took people through some patterns and conventions when refactoring an application.
I decided I’ll post it online in case anybody else is interested.

You can download the slides and the start and end solution here.

Thursday, August 2, 2012

Visual Studio and Team Foundation Server 2012 Launch Dates

Microsoft has finally “lifted their skirt” regarding the release of the much anticipated VS and TFS 2012.

For more info Jason Zander is the man

Wednesday, July 11, 2012

Code Lab 2012

Instead of a Scrum Gathering this year, SUGSA is hosting Code Lab. It will be 2 days of hands on sessions and talks all around the technical practices you need to be successful with agile.

I almost feel out of my depth being a presenter amongst the list of revered people, both local and international.

For more information and a list of sessions visit :

Hurry up – tickets are limited!

Friday, June 1, 2012

Visual Studio & Team Foundation Server 2012 RC

Yes, Visual Studio vNext or VS 11 has finally got a name.
Microsoft has dropped the release candidate for Visual Studio 2012 and Team Foundation Server 2012.

There seems to be quite a significant amount of changes, and I’m glad to see that a lot of them were requests and issues raised from the “community”.

For more information have a look at these:

Download the bits over here.

So much goodness, so little time…

Thursday, May 17, 2012

Rename or Clone TFS 2010 Server

Ever been in the situation where you wanted to make a clone of a production TFS environment, or just needed to rename the server?
Well, I needed to do exactly that for a client recently and spent a couple of hours banging my head on SharePoint in particular.
SharePoint is a very problematic renamer, and I will need to cover that in a separate post, but the rest is fairly straight forward.

Note: I’m assuming that the the login used to perform these tasks is a administrator on the server..

MSSQL Server:

Open up SQL Server Management Studio (or your favourite SQL tool) and connect to the database server. You will notice that if you execute “select @@servername” it will return the “old” or previous server name.

To update this you need to execute the following (replacing the <<oldserver\instance>> and <<newserver\instance>> with your appropriate server names (and instances if applicable):

exec sp_dropserver ‘<<oldserver\instance>>’
exec sp_addserver ‘<<newserver\instance>>’, local

Reporting Services:

Open up “Reporting Services Configuration Manager” and connect to the server, then select “Database”.
Select “Change Database” to display the change wizard.

Select “Choose an existing report server database”, enter the new server name in the next page. Next select the “ReportServer” database and then “Next” until you can “Finish” after verifying settings and applying security scripts.

That should take care of SQL and Reporting Services

TFS 2010:

If you were to open up TFS Administration Console you would find something like this:

I must admit that I was surprised (after a bit of digging) that the only change needed to point it to a new server was in the web config file. So go to the TFS web services directory ( By default : %system drive%\Program Files\Microsoft Team Foundation Server 2010\Application Tier\Web Services) and open up the web.config file. In the config file, find the <appSettings> and change the connection string for the “applicationDatabase” to point to your new server name.

Open up TFS Administration Console and you should see some values pulling through now.

The next step is to change the url’s for TFS. In the TFS Administration Console under “Application Tier” select “Change URL’s” and update accordingly.

Now we need to “fix” reporting services. Select “Reporting” in the tree view and click “Edit”. Go to the “Reports” tab of the edit dialog and change the server name. Select “Populate URLs” to reload the correct config.


If you do have “schema problems” with either the warehouse or analysis services database, you can change the name and TFS will re-create the databases for you.

Now all that is left to do is to make sure that the project collection’s SharePoint site bindings are correct and you should be A for away..

If this is too dodgy, the next option would be to create a new server from scratch and “port” your existing environment over. I can tell you from experience that is is also not as straight forward as you may think, after all “it is just SQL databases…” backup and restore – right?! …. wrong - but I’ll leave that for another post.…

Tuesday, April 17, 2012

VS 11 : Team Explorer

One of the many things that has received a redesign in VS 11 is Team Explorer.


(Notice the “Search Work Items”)

Yes – if you are sharp, you may have noticed that this is from the “dull” Visual Studio 11 Beta.

Now this is a tricky one to get to grips with. I’ve been using it almost daily for the last 2 or so months and I’m yet to get used to the navigation between the “pages” or views.

Where we were used to having everything in a tree view, things have changed a bit and everything is grouped into its own page.

Take the work item view for example:


One thing that I’m sure the TFS guys will still work on is the association between work items and the check in.
To associate a work item (if you do not know it’s id) to the check in you follow the following steps:

  1. Go to the work item view, select the query to run and display all the work items
  2. Navigate to the home page and select the “Pending Changes” option
  3. Drag the selected work item from the result view into the “Related Work Items” section

A bit laborious if you are new to TFS.
Now in all fairness, and after you figure out how to use it, there is (yet) another view that manages your “work” a bit better. It does work like a charm if you are using TFS and follow the conventions that the work item flow imposes on you.

One thing that I think is absolutely amazing is the code review functionality. Like I said before, I’ve been using VS 11 for a couple of months and primarily work in a distributed team environment. The code review works like a charm for us – especially when you are not available to do the review at the point in time that it is requested.

You go to the “Pending Changes” or your “My Work” view and select “Request Review” to open up the request view.


Select one or many reviewers from the team members assigned to the project and then submit the request.

This sends a request to the reviewer, and when he/she opens up the “My Work” view, the request is waiting. The reviewer can then accept the request and use the brand spanking new diff tool to perform the review, adding notes on a line or file level and finally send the resulting comments back to the requestor.


Behind the scene this process is achieved by using a mix of work items and shelve sets, and this was one of the big drivers that I had to adopt TFS 11.

I’m sure that there is still going to be some work involved and this is not the absolutely final version, but it sure does make me excited for when the RTM lands…