A New Role
June 30, 2009
On Monday this week an internal announcement was made about my future at Readify. The big news is that I’m transitioning out of a full-time consulting role to become Readify’s Chief Technology Officer (CTO). On one hand I am really excited about the opportunity but also humbled by the challenge ahead of me.
As a consultant I had the certainty that when I got up in the morning I would head out a client engagement, be confronted a challenge and throw myself into it knowing that I had the intellectual might of other Readify consultants behind me – in a way I couldn’t fail.
In a lot of ways my success still depends on those people who surround me, both consultants and the rest of the management team but ultimately I have to stand up and say “that is what I’m responsible for”.
As I am the first CTO at Readify I’m able create my own role description but I suspect that will be a fairly dynamic thing depending on what the precise needs of the organisation are as it grows and evolves. Perhaps my role description is defined by the challenges I know I will face over the next twelve months.
For the past week or so we have been having some stability problems with our Internet connection at home where it would be going up and down every thirty seconds or so (variable depending which direction you were holding your tongue).
We finally got some engineers out this morning and they were trying a few things and of course I had to keep jumping back onto the computer to test if it was working. In the end I decided it was much more fun just to write a quick program in PowerShell. Here is what I came up with.
$ping = new-object –type System.Net.NetworkInformation.Ping
for (;;) { $ping.Send(“www.google.com”).Status; sleep 5; }
Hey presto! The Telstra guys were suitably impressed
Switches for Windows Services
May 31, 2009
Brian Noyes just posted up about adding a –c switch to Windows Service applications (actually he was talking specifically about self hosted WCF services). I completely agree that this is a good practice, you would be surprised how many times I see developers doing crazy stuff like commenting lines of code in and out as they alternate between their debug and release code.
I’d like to add a few things to the list of recommended command line arguments for Windows Service executables:
/install <username> <password>
/uninstall
/help
As a practice I also recommend always adding a ConsoleTraceListener to the list of listeners at start-up of the executable (in code, not via configuration). I spend a fair bit of my time looking at the deployment challenges related to software development and getting this right significantly helps the deployment process.
I could have used Autofac!
May 30, 2009
Late last year I was working with Graeme Foster on a project which used ASP.NET MVC. We wanted the code base to be somewhat testable so when we built our controllers we were thinking about using some kind of dependency injection framework. Eventually, given the number of controllers we actually needed we decided that manual constructor injection would be the easiest way to go and just create a custom ControllerFactory.
This evening I’m reading through some of my feeds and I noticed this episode of .NET Rocks with Nicholas Blumhardt on the topic of Autofac. Just looking at the API it looks nice and tidy and minimal (which is what I want from my IoC container technology).
The cool thing is, it seems like it comes with a built in ControllerFactory. I haven’t used Autofac, but I think I will give it a shot next time I need a container.
P.S. The reason it triggered as I was reading my feeds is that I remember Graeme Foster saying that using Lambda expressions to initialise types in a container would be cool. Looks like Autofac supports something like this.
Effectiveness of Twitter
May 23, 2009
Recently on a locally focused .NET developer mailing list a participant (Greg Keogh) posted an item about his recent experiments with twitter and how he is now deleting his user account. This spawned a little bit of discussion on the mailing list both for and against twitter.
To give you some context Greg started using Twitter at Code Camp Oz when many of the other attendees were participating in a background conversation about the content of the presentations as well have having a bit of fun.
One of the criticisms often levelled at any mass communication format (blogs, twitter, forums, newsgroups) is that the signal to noise ratio is so more that it is ineffective. I can see a point to a degree, if I added up the total amount of data flowing towards me out of something like Twitter vs. what I actually find useful then that number would rapidly approach zero. But maybe that is the wrong equation?
Personally, I don’t use twitter every day, and in the rare occasions that I do use it I usually have one of the following agendas:
- I just want to vent.
- I want to ask a question of people I know watch Twitter.
- Watch for the response from #2.
- I’m bored, entertain me.
It is really #2 which is the most important. I’m not on Twitter because I want to tell the world whether my coffee is good or not, I’m on it because it is the appropriate medium to reach some people with low priority broadcast messages.
The reality is that if you use Twitter like I do, the signal to noise ratio is pretty good. I’m using it on my terms and I’m not letting it run my life.
How Microsoft is getting its groove back.
May 15, 2009
I’ve been watching the press around things like Windows 7, Visual Studio 2010 and Office 2010. It seems that for the most part the new operating system, tools and suite will be well received by the technical community.
I suspect that after Windows Vista (which I didn’t really mind by the way) most people are actually looking for a good news story to get them to upgrade from Windows XP. From a developers perspective, Visual Studio 2010 is going to be a stellar development environment with lots of good incremental enhancements in the runtime which extend its reach, but also a big focus on quality and architecture tools in the higher editions.
Things are looking up if you are a Microsoft developer.
Features on the cutting room floor.
May 12, 2009
When a collection of people get together to make a movie they use more film that ends up in the movie itself. For sure some of that film contains outtakes and errors which mean that they simply can’t be used, but other film contains perfectly good scenes – so why does it get left out?
The reason is that the director is trying to tell a story and sometimes scenes from the film that they have recorded, whilst related, don’t add value to the overall story.
I see this as an analogy for building the product backlog for a software development project. When the project kicks off everyone involved in the endeavour are going to put forward suggestions for things that can make it into the product. But ultimately you have a target budget (length) that you need to work to and if it isn’t going to add any value then you should cut the feature.
The question is – who is the director? Is the director the person who sold the idea of the project? Is the director the person who is paying for the project? Is the director the person who is using the software? Is the software developer or Scrum Master?
I don’t know, and chances are neither does your peers. This is why in the Scrum process we enshrine the role of Product Owner to help make these tough decisions. The Product Owner is an absolutely critical role on any Scrum Project and this person once identified needs to be given a pair of scissors so that they can make the appropriate cut.
We reap the code we sow.
April 9, 2009
Just over six years ago I was working on a project with a team of developers who were new to the .NET platform. The project was to develop what was essentially a CRM system optimised for the processes of a utility company. I was involved only in the first phase of the project where we were charged with delivering the backbone of the solution including some framework components to assist development moving forward.
Because it was .NET 1.0 we didn’t have all of the features which meant we built more scaffolding than you would these days. It wasn’t too bad but you never know when building this kind of stuff whether it is going to come back and bite you in the future.
This week I visited the same client on a related piece of work and got the opportunity to see what had become of the code base that we created all those years ago. Surprisingly the architecture hadn’t eroded too much and had been well maintained. Going through the code I was able to spot bits and pieces that I had written all those years ago as my knowledge of how it all hung together came flooding back.
Fortunately because the structure had been kept in tact it is going to be a straight forward process to bring the code-base into Team Foundation Server (from Visual SourceSafe) which is my current scope of work.
It is a good day when you can look at code you wrote six plus years ago and not look at it with horror. The big thing I would do though is collapse a large number of assemblies into just five or six (there are about 100+ assemblies in the overall system). Back then it made sense to maintain modularity, but the dependency management is a bit tricky.
Code Camp Oz 2009: Aftermath
April 6, 2009
I posted my sign-off for Code Camp Oz yesterday afternoon but a few folks have posted up some material (not an exhaustive list but will let you get started:
- Liam McLennan
MarkHamilton (correction Matt Hamilton)- Steve Godbold (Resources & Q&A)
Most folks are posting links and stuff to the #ccoz09 hashtag so check out that as well. I got home at about 10pm last night after the drive back and slept the best I had in months
Code Camp Oz 2009: Day 2
April 5, 2009
In to the home stretch at Code Camp Oz 2009 now. David Burela is currently on stage (just got applause for his dev fabric demo) then we have Corneliu I. Tusnea giving us some more SaaS love.
We started out the day with a panel with Graeme Strange, Adam Cogan and Roger Lawrence which was pretty slow to get started but got a little bit more animated when we started talking about things like certification and estimation. I thought there was some good advice given out overall.
So we are pretty much done for the year so I am going to sign off and enjoy the last few moments, but I just wanted to thank Charles Sturt University, Microsoft (DPE and MVP teams) and Readify for sponsoring the event as well as all of the presenters.
- Nick Randolph
- Chris Anderson
- Adam Cogan (panelist and speaker)
- Liam McLennan
- Chris Hewitt
- David Kean
- Paul Stovell
- Omar Besiso
- Bill Chesnut
- Steve Godbold
- Graeme Strange (panelist)
- Roger Lawrence (panelist)
- Justin King
- Michael O’Dea-Jones
- David Burela
- Corneliu I. Tusnea
I’d also like to thank all the attendees who made the trek to Wagga Wagga. The sense of community at the event has been fantastic. See you all next year!