Monday, July 17, 2006

Just testing trackbacks to word press.

Sunday, July 16, 2006

Nick Randolph points us to the blog of the Australian Computer Society’s Professional Development Board. They have put up their first post which outlines the kind of material that they are going to be covering.

2022 Obituaries - John Smith, Paul Johnson, John Williams

The new paul johnson obituary 2022 has been released and you can read it. There is also the john williams obituary 2022 that you may find interesting. Death logs like that of the john smith obituary 2022 may also be interesting to you.
 



I think that this is a really positive step for the ACS! My only advice to those posting is to not hold back, tell us what is on your mind, and introduce yourselves personally so that we can learn to trust you.

Saturday, July 15, 2006

Darren raises a good point about the benefits of just jumping in and building tooling. One of the examples he uses is Grant’s TfsBlame utility which extends some of the functionality found in the Team Foundation Server Power Toy (tfpt.exe).

It’s all about leverage!

Tools get you leverage, and its something that can be calculated or at least predicted. My suggestion is if you ever have a discussion with someone who argues whether building a tool is worth building or not during the course of a project, whip out an Excel spreadsheet and just prove what kind of impact it will have. I’ve taken a stab at doing that below!

File Attachment: Tool Leverage Calculator.xls (49 KB)

Interestingly I can use this spreadsheet to justify the time I’ve taken writing this blog post. For example, if I argue that having a discussion about whether to build a tool or not will take about an hour, and that over the course of the next year I have that discussion ten times (conservative estimate), and that it cost me five minutes to write this blog post (and the spreadsheet), and that it will cut the unit cost in half (30 minute argument), then I predict that I’ve got myself a leverage of 1.9. That is to say I’ve saved myself about five hours!

P.S. Hope my calculations are right!

 

I read this great post on Escape from Cubicle Nation where you can use a bus as a metaphor for life – some questions:

  • Are you even driving? 
  • Do people get on and off at random stops, or do you go to a specific place and pick up the right person at the right time?
  • What is the atmosphere like inside the bus?  Is it like a Cheech and Chong movie or a ride to school with a strict teacher?
  • Who do you wish would get off?
  • Who do you wish would get on?
 

BBC: Brain sensor allows mind-control (via change is good).

I thought that the head-line was a bit alarmist, but all is good. Basically they are plugging into the brain to pick up motor cell activity and using that to control things like limbs. This is an exciting development (we’ve seen some things moving this direction in the past but nothing to this extent I don’t think). I would think the transhumanists are thinking there day is getting closer as well.

 

Darren points to a great article over on Coding Horror (Jeff Attwood) about the folly of trying brute force attack keys. While I agree that this is true – especially for keys, I would like to point out that this is not true for relatively short passwords. For example, if someone gave me a SHA1 hashed password my laptop would probably be able to crack it in about three or four days (assuming a six character alpha numeric password which lots of web-sites use these days). If I had a network of a thousand or so machines I could have the answer in about five minutes.

Mind you, I’d have to first get my hands on an unsalted password to commence the attack which means I would had to have punched a hole through into someones data centre to rip the password out of their database. It would normally be easier to mug someone to steal their credit card :P

Tuesday, July 11, 2006

Like Nick, I too spotted the timesheeting/timetracking thread on the the aus-dotnet mailing list. We’ve recently invested a fair bit of time re-engineering some of our internal processes and part of that was adopting Microsoft CRM to help manage the sales pipeline, resource management and reconciliation process.

CRM itself seems quite capable of doing lead/opportunity/order tracking but there is a bit of a divide when it comes to relating that to the actual service activities that take place. Basically what we have ended up doing is putting a customised front-end on CRM for timesheet entry and generation of service appointments. Time will tell whether it is the correct way to go, but I can say that it now takes me a lot less time to fill in my Readify timesheet and I can do it from my Windows Mobile 5.0 device.

I like it because I was involved in building it, but time will tell whether the other consultants like it. If they do we may unleash it onto the world (gotta go – the timesheeting system just e-mailed me and told me I have have times that need to be confirmed).

Saturday, July 08, 2006

I just noticed as I was putting some information into a work item in Team Foundation Server that our internal installation reached task one thousand today. Not bad for only a handful of folks actively using it – oh the stories some of those work items could tell!

 

Paul, Geoff and Damian have all posted up their top three reasons for going to TechEd. Here are my top three:

  • Catch up with co-workers face to face.
  • Share the things that I am passionate about.
  • Listen to people who are passionate about other things.
 

Well, Pete LePage has let the cat out of the bag about “By the Community, For the Community” along with Ken Cox. The idea is that a few MVPs from the ASP.NET developer community offer a few ideas about what community projects they would like to build and Microsoft (via the ASP.NET site) throws them out for everyone to vote on. Which ever suggestion wins the popular vote gets built!

Right now the votes stand at:

  • Event Organisation Site (47%)
  • Track Back for Everything (20%)
  • Creating RSS and Atom feeds from your website (13%)
  • Adding MSN Search to your website (7%)
  • Creating a Mashup (14%)

I’m particularly interested in the vote since I’m going to be the first person cutting the code! At this point the Event Organization Site looks like its going to be the clear winner. It was actually one of my suggestions based on a requirement that I see to have a really targetted site for organising community events like Code Camp Oz.

One thing that I am not going to be doing is developing in a silo, and for this run I’ve got Jonathan Goodyear (thats right, the original angryCoder) as my co-pilot, or is that drill sergeant?

Friday, July 07, 2006

Correlating binaries to a particular build in Team Foundation Sever is actualy quite useful for developers, testers and support staff. The guys over at Vertigo Software show us how to modify the big build script to make this happen inside Team Build.

Tuesday, July 04, 2006

I feel that this post requires musical accompaniment. Internally at Readify we have been looking at ways that we can extend our Team Foundation Server environment. One of the key ways you can do this is write code that subcribes to and listens for event notifications so that when things like check-ins or builds occur, you can respond.



https://obits.postandcourier.com/us/obituaries/aikenstandard/name/john-williams-obituary?id=32250468

The process for implementing event listening services typically involves going and downloading Howard van Rooijen's pre-baked TFS Notification Web Services template, implementing your specific logic and deploying them to a box.

One of the issues that I have with Howard's templates is that they are implementing using the new web-site project type as opposed to the even newer (but more reliable) Web Application Project template types, but on top of that I just don't like the hassle of having to deploy a web-site and much around with IIS configuration settings (even once) to get the listener working, and that is before we even get to dealing with state management and constantly cycling application pools.

Enter Windows Communication Foundation

If something bothers me I like to do something about it, and this IIS configuration dependency was definately bothering me so I decided that I would attempt to host an event subscriber notification service inside WCF as a bit of a demonstration (I'll probably expand on this a little in my presentation at TechEd 2006 in Sydney).

I wanted the demonstration to do two things, firstly I wanted it to automatically subscribe itself to the TFS event notification services when it started up and clean itself up when it shuts down, but also the specific tweaks that are required to the service endpoint documentation in the Visual Studio 2005 SDK. You can download the demo code from here, but the real active ingredient is the implementation of the WCF service.

[ServiceContract(
    Namespace = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]
public interface INotificationService
{
    [OperationContract(
        Action = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify",
        ReplyAction = "*")]
    [XmlSerializerFormat(Style = OperationFormatStyle.Document)] /* Took me hours to figure this out! */
    void Notify(string eventXml, string tfsIdentityXml);
}

public class NotificationServiceImpl : INotificationService
{
    public void Notify(string eventXml, string tfsIdentityXml)
    {
        Console.WriteLine(eventXml);
    }
}

So why the musical accompanyment? Well, it took me hours to figure out the reason the Notify method was silently failing to be executed was because I hadn't specified that I wanted it to use document style encoding for the operation – "we are the champions" is the tune I had playing in my head when I finally got it working and was running around the house cheering like a soccer player that had just won the World Cup!

 

Matthew Cosier re-introduced me to ConferenceXP yesterday. Its a product of Microsoft Research which enables developers to plug in and build conferencing capabilities directly into their applications (sweet). I’d love to see some of these capabilities baked into Visual Studio to enable virtual development teams to keep in constant contact throughout the day (which means you still have to get dressed for work, even when you are working from home).

 

Wow! Frank has chosen a grouptrio of bloggers to represent TechTalkBlogs in the lead up to TechEd 2006. Congratulations guys, I’ll have to watch what I say around you now – mind you, you were always bloggers and not afraid to spill the beans.

 

I love syntax posts, I love the syntax of programming languages because it often reveals common insights that language designers do or do not have when it comes to certain kinds of problems. One of the nice things about the using statement in C# is the way that you can nest them. For example:

using (Foo f = new Foo())
using (Arb a = new Arb())
using (Bar b = new Bar())
{
    // F A B, thunderbirds are go!
}

I call it nesting, but its not visually nested so the syntax is more compact. The Visual Basic implementation due to the VB code block syntax has a lot more visual noise. Its not a good reason for choosing one language over the other, you just need to train yourself to filter it out in VB, but subconsciously recognise the nesting in C#.

 

Darren seems to have started a personal campaign against/for the mass media asking them to clean up what they are reporting. He has a point . . .

When I attended University of Queensland one of the majors that I was studying for was journalism. I managed to get through the first semester before changing subjects because I was so disgusted with the way that stories could be edited to be sensationalist rather than just conveying the facts – and it had nothing to do with the words you added, it had all to do with the facts that you omitted.

Television is time limited, and the newspaper is space limited so they need to trim the material down to make it fit, but the way you trim it down has a big impact on the way the audience consumes the material. Roy Osherove’s blog post about the Pallywood video is certainly thought provoking.

Monday, July 03, 2006

One of the things that I love about consulting is that its a very two-way kind of thing. The consultant brings a lot of exposure to different technologies, software development patterns and first hand observations, and the client typically brings unique challenges, new and interesting team dynamics. Today I had a meeting with a client that reminded me why I still do this job.

We were discussing the shape of a possible consulting engagement where I would spend a day or more with their team looking at their particular problem, listening to how they were going to tackle it and suggesting some additional things that they might like to try. They are also in the throws of adopting Team Foundation Server and since that is one of my strengths we thought that we might throw in some time to look at how they were going to use that to change the culture of their software development organisation.

This kind of discussion interests me because I believe that building an effective software development organisation doesn’t need an overly complex and descriptive process, rather it needs good people and a simple set of rules.

As the set of rules grows and the agents (developers) execute on them, complex and behaviour emerges (emergent behaviour). Sometimes the outcome can be good, and sometimes the outcome can be bad – but the feedback will always result in the revision of that set of rules – just in the same way a child learns in an environment with consequences.

In a blog post last year I pointed to a post by Wesner Moise about intelligence and the material that he referenced from Stephen Wolfram. Stephen Wolfram published a book called “A New Kind of Science” in which (based on the reviews I have read) he argues that all complex systems are emergent behaviour of simple systems.

Over lunch time conversations with some of my colleagues I speculated that humanity is just cellular automata at a different scale (although I don’t think I put it that clearly) and if thats true and I wasn’t smoking weed, then a team of software developers governed by a set of simple rules could result in some truly amazing results (good or bad).

This kind of thinking isn’t new in the software space. Agile methodologies set out a set of core practices that team members adhere to, and guys like Adam Cogan run their businesses according to rules (although he calls them standards, they’re not).

When other software developers first work with me they will often find that I am extremely pedantic about certain things and that I can get quite shirty when things aren’t done precisely the way that were agreed. It is easy to dismiss my behavour as the mood swings of an irrational man, but the reality is that I am having a gut/emotional reaction to something that I know could leave to problems – “I don’t know why this is wrong, but just trust me it is”.

At some point in the future, if my suggestions are ignored I’ll get the chance to say I told you so, but it will be cold comfort because it is too baked in to be corrected. Tonight I decided, partially triggered by my discussions with a client today, to start documenting the a list of rules that I want developers on the projects I am working on to live by, the first rule?

  • Every rule in this document can be changed except this one.

What I am saying is that I want the list of rules to be a living document that is ammended as needed, it will never be perfect but the simple rules will result (hopefully) in complex behavour that just seems to work. You can download my first software development rules here, there are only five in this cut.

Saturday, July 01, 2006

If you are a reader from the US, this might sound a bit weird to you, but I’ve just created my TechEd 2006 flair. The reason I’ve done it now is because the Australian and New Zealand TechEd 2006 events are held after yours – and I’m going! Frank Arrigo has blogged some of the flair that other people have been putting on their blogs so I decided was time to produce my own.

TechEd2006Flair

There – suitably geeky enough? Although I wonder whether the first argument to the find method should be an enumeration.

 

Sorry for going dark over the last week or so, things have been pretty hectic around here – I have been working on some internal projects and also preparing to go live with something new and shiny, but that is not why I am breaking radio silence.

Greg Low has announced the SQL Down Under Code Camp, basically it is going to build on the success of the last two Code Camp’s that we held in conjunction with Charles Sturt University. I’m hoping that I can make it but its pretty close to my birthday which could be a problem.

The next twelve months is going to be pretty exciting in the data space with ADO.NET 3.0 Entities and LINQ all in the pipeline, so even as a straight-laced developer this event could have something for you above and beyond just SQL specific material.

Sunday, June 25, 2006

Last week I took Bella to the cinemas. While we were queuing to buy our popcorn with a side of movie tickets I spotted a geek wearking the following shirt.

328bgBlack

I couldn’t help having a little chuckle to myself as the wearer and I exchanged knowing glances. For those of you reading that don’t get the reference, chown is a common UNIX command for changing the owner of a specified file or directory structure. The command on the T-shirt will recurse the /base directory changing all the owners to “us”.

Its a clever play on the “all your base are belong to us” line from a Japanese video game. You can read more about the history of this phenomenon over at Wikipedia.

 

Joseph just blogged about his departure from Readify. Its sad to see Joseph leaving us, I remember working with him on a project here in Canberra where he was doing the miles each week by flying from Queensland to Canberra. He once spent a whole night implementing an XML Serializer for the Compact Framework which was pretty much compatible with the desktop serializer.

Happy trails Joseph! And I am sure we’ll see you again!

 

I have been running the BETA 2 build of Windows Vista for over four weeks now and I think that today I finally reached the point where I would really suffer from a productivity perspective if I went back to Windows XP.

Whenever I try something new (like an operating system) I deliberately unlearn the way that I have done things in the past. I find that this leaves me open to learn new approaches to solving old problems – like file management.

Over the past twelve months I’ve been uploading most of my important files into my personal site in SharePoint, and I still do, but I made a point of not leaving those files lying around on the hard disk. This made it harder to quickly refer to them whenever I wanted them.

Since installing Windows Vista I’ve been putting them in the stock-standard documents directory, not even taking the time to organise them into folders. Its getting quite crowded in there, but today I think I’ve finally hit the point where I appreciate the “search everywhere” functionality in Vista.

Today already I’ve attached four files from the Documents folder and each time I didn’t even bother scanning for them, I just typed some text into the search box and it came up witht he document I wanted.

Nothing like creating necessity to force myself to start using a new feature more.

 

A belated congratulations to Thomas White and Walter Haas over at Lightworks Games for shipping their first Pocket PC game, Cavemen. They announced that the Cavemen game had been released on Thursday of last week.

I’ve actually gone out and purchased a copy of the game because I enjoyed playing the BETA so much a few months back. According to the site the new version has 102 levels which I am looking forward to conquering.

For those of you who don’t know about the game, its very much like Lemmings except with Cavemen, the special thing is that it is all squeezed into a Pocket PC form factor. I’m really envious of these two guys who had a vision to start a games company. I hope this release gives them the working capital they need to start working on their next title!

Friday, June 23, 2006

Please don’t wait twelve months before applying this service pack!

Tuesday, June 20, 2006

Fellow Readifian Neville Mehta has joined the blogosphere! I’m looking forward to seeing some great posts.