Nick's .NET Travels

Continually looking for the yellow brick road so I can catch me a wizard....

The good and the bad of Qantas

Following Mauricio's post on the good and bad points of travel I thought that I'd add my 2 cents worth with regards to Qantas.  Upon leaving Wellington this afternoon I arrived at the airport to discover that not only did the regular check-in queue have a massive line, the business/Qantas club queue had one too.  Honestly, given I pay a premium for being a Qantas club member I was a bit frustrated that I have to queue!

Thinking that my time was better spent eating and talking to Meg I decided that given I had an hour or so to kill that I would go up to the Qantas club lounge.  Of course this involved being given the 3rd degree at the gates because I hadn't checked in....

Later, upon arriving in Auckland and proceeding to the International terminal I was pleasantly surprised to discover a dedicated business/Qantas club check-in lounge.  There, they not only check you in, they also pre-clear you for immigration.  Going upstairs to immigration and there is a 30 minute queue, luckily pre-clearance means you get to go through the same fast track lane as the airline staff!!!!  Big thumbs up to Auckland airport - it was almost worth the $25 departure tax that they wack you with (why isn't this tax included in the ticket like most other taxes?)

Update: After I made this post I left the Qantas club in Auckland and proceeded to the gate where I discovered a 500m (I kid you not) line for, you guessed it, another security check point.  For all flights going to the US passengers now need to submit to a second security check where laptops have to be removed from bags, you walk through the metal detectors and are then wanded, and basically any fluids are confiscated.  This whole process ended up delaying the flight by 30mins or so. 

On the plus side, upon arriving at LAX and collecting, then rechecking, my baggage I went to the Alaska lounge.  They accepted my Qantas club membership and best of all they have FREE WIRELESS (why this isn't the standard amoungst airport lounges I don't know)

Signing off Version 1

The last three days I have been back in Wellington, NZ, working with the rest of the development team at Intilecta.  We are currently in a transition period between the end of Version 1, which we officially signed off last week, and the commencement of Version 2.  Like most development schedules there are always odd jobs that get postponed.  In our case it is really about maturing our development process and tools.

For version 1 we were using SourceSafe (and praying to the MS gods that it would survive) primarily because the whole team was based in the Wellington office.  Now that the team has spread out physically using SourceSafe has just proven too frustrating due to the way it checks code in/out.  Anyhow the first task in refactoring our development tools has been to ditch SourceSafe and to wheel in Subversion.  I must admit I have been extremely impressed with TortoiseSVN (integration into File Explorer - including Vista) and Ankh (integration into VS2005 - although doesn't use standard API it does a great job).

The next step in the process is to upgrade our build process.  Up until now we have quite successfully been using CruiseControl.NET, although I must admit we have had to put a number of cludges in to get auto product versioning and correct labelling both within SourceSafe and CC.NET.  Again I have been pleasantly surprised with the latest version of cc.net and in particular the way that it integrates with Subversion.  What we want to be able to do is for the daily build we want the revision from Subversion (assigned whenever someone checks code in) to be the final digit in our product assembly version numbers (eg <major>.<minor>.<build>.<subversion revision>).  We also want this version number to be the label that appears in CC.NET.

To achieve the first part we use a command line utility that comes with TortoiseSVN called SubWCRev which allows us to take a template file (eg assemblyinfo.template), replace appropriate keywords (in this case $WCREV$) with subversion information (in this case the latest subversion revision number) and generate a file that can be built as part of the build (in this case assemblyinfo.vb).  All our projects simply reference this file to ensure they all have the same assembly version number.

The second part was a little more tricky, or so we thought.  Initially we thought we would have to do all the processing to retrieve the revision number and to implement a labeller that works with cc.net.  A bit of searching revealed that others had tried to achieve the same result and in fact the latest version appeared to have a new labeller called the lastChangeLabeller.  At least the documentation in the current stable release (v1.2.7) seemed to imply that it was included.  In actual fact it is only included in one of the intermediary builds (we are using 1.3.0.2728).  With this labeller in place cc.net is reporting the version of our product (as defined by the assembly version number).

 I would be interested to hear what others have done in terms of automating the versioning of assemblies as part of the build process.

Sample Images and Icons

Earlier today the team at Intilecta were talking about where to get stock images from.  The obvious candidates being Clipart, online collections, creating them ourselves...  My contribution to the conversation, that I was surprised no one knew about, was the Image Library that ships with Visual Studio 2005.  If you go to C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary there is a zip file VS2005ImageLibrary.zip which when expanded gives you a selection of sock images and icons of various resolution.  This is a great starting point for simple applications!

Visual Studio 2005 SP1 Update for Vista

Ok, so we have all seen/felt the pain that Vista has caused - none more than in the developer community where we not only have 3rd party applications that don't play nice, our main development environment doesn't even work properly.  I'm sorry but can you, as a fellow developer, honestly say that you feel L.O.V.Ed by microsoft?  Some good news if you aren't, not only is SP2 for SQL Server now available, I noticed that the Update for Visual Studio 2005 is now available here.

Even kids can build Sandcastles

SoftTeq partner, fellow Perth-ITe and co-ordinator of the Perth .NET Community of Practice, Alastair has posted a link to the March 2007 CTP of Sandcastle - a documentation project for .NET similar to what NDoc did.  I posted on this back in August last year where I observed that the process of using the tool was less than obvious. 

I figured since I had so harshly condemed it last time that I'd better go across and take a look.  Well I got as far as reading the instructions for installation (didn't even download it this time).  In the instructions there is a link of to another set of instructions for working with a sample project - this has 12 steps!! I'm sorry but 12 steps to RUN a sample just doesn't cut it.  No thanks, try again Microsoft.

TFS in the Cloud - great concept but the reality is difficult

Both Grant and Mitch have started talking about a plan by Readify to create a TFS in the Cloud solution. Here are my 2 cents worth....

Clearly price is a major consideration from the point of view of a development shop and after taking a look at the various options I doubt that TFS in the cloud is going to be able to reduce this – ok, so you might be able to get rid of the once off server licensing, but you still end up paying a per seat license.  One area that would be great would be if you could combine TFS in the cloud with the benefits associated with the partnering program.  For example if I’m a certified partner, so I get 10 CALs, I can sign up for your TFS in the Cloud solution and only pay a relatively small amount for each user (ie the incremental cost (+markup) of hosting an additional user) instead of the amount inclusive of the CAL.

I guess the real benefits of a TFS in the cloud would be the fact that a team doesn’t have to host it themselves.  In addition any upgrades or additional tools could be provisioned by the hosting company which means that all the subscribers benefits.  The other thing would be if you could establish a community around the TFS in a cloud – the typical forums would be useful for people to share experiences.

I think when it comes down to it, it really comes down to a decision by an organisation as to whether they want to host their own TFS server(s).  For what it's worth if there is zero cost difference, I would much prefer to see this outsourced as it is one (or more) less thing that can go wrong for the dev team.

Things that fall through the cracks

Over the weekend I think my brain must have been fried by the warm weather Perth was experiencing (either that or it was a result of the closing party for the Verandah Club - part of the Festival of Perth).  Firstly I failed to notice that the SDK for Windows Mobile 6 had been released. 

Secondly, and by far the worst of the two offences, I managed to forget my laptop charger in Melbourne airport - Doh!  Luckily the other mobile warriors in the Intilecta office (where I am currently) all use the same model of laptop, so while I source a replacement I can sponge power off them.

Changing the World one conversation at a time

I was just looking for someone in my IM contacts and noticed that one or two of my contact now have this "I'M" logo against their name.  Intrigued I figured I'd try a search to see what it was.  Unfortunately "I'm" by itself doesn't yield very good results; However in conjunction with "Live Messenger" I was pointed towards a new initiative from the Live services team. Check out the "I'm making a difference" program for more information about how your IM conversations can aid "organisations dedicated to social causes".  You will observe that there is now a link from this blog (see news section on the left) and an icon against my name in Live Messenger!. Alternatively you can click this button to get involved:

This program was quite well timed as I had just finished reading Alastair's post about "An Inconvenient Truth" and how we all need to contribute and make a difference.  If you are in Australia tonight you should take the Carbon Test and see how you can improve your daily life to reduce your carbon emissions.

Update: I should have pointed out that at the moment this program is US only.  You can easily fool the website by claiming you are living in the US but this won't do much good as the programme itself is tightly controlled and non-US conversations won't count towards the money.

Orcas CTP Available for download

I've signed away another 6.3Gb of my broadband quota to downloading the latest CTP of Orcas (Visual Studio vNext) which you can do also from here.  This is supposed to be one of the first build that contains a number of new features - including I hope v3.5 of the .NET Compact Framework (although this isn't confirmed yet)

Things that make you think Vista needs more testing!

Ok so maybe not Vista itself, but applications/service packs that get released for Vista IMHO need more testing before they are released.  This includes service packs that Microsoft releases.  What I'm referring to is what Jeff Wharton talks about in this post where SP2 for SQL Server installs perfectly under Vista except it falls apart when trying to update security privileges if the sql instance isn't running - obvious test you would have thought!! 

I was introduced to Jeff by Rob Farley as a fellow Australian developer who also sat the beta exam: 071-540: TS: Microsoft® Windows Mobile® Application Development.  I found out this morning that I passed the exam and that it has now been published for anyone to take.  Jeff also runs the canberra sql server user group.

Perth .NET Community of Practice - meeting this thursday

As Brian points out Code Camp Oz is just around the corner but if you can't make it to Wagga Wagga to see my session on the Microsoft Sync Services then head along to the Perth .NET Community of Practice meeting this thursday.  Details as follows: 

Details are

Date:         Thursday 1st March 2007
Time:         5:30 PM
Topic:        Building applications you can take on the road - A guide to Microsoft Synchronisation Technologies
Location:   Excom Education - Level 2, 23 Barrack St, Perth
Cost:          FREE
Presenter:  Nick Randolph (which would be me!)

Hidden amongst the mass of recent technology is an underlying trend away from traditional web or windows forms applications. In a world where most of us carry a mobile phone and enterprises that are looking to mobilise their work force there is an increasing number of applications that are built to be occasionally connected. Microsoft have a number of synchronisation technologies that form the basis of any application that is to be network aware - in otherwords, applications that don't care whether they are connected or disconnected from the server.  In this session we cover three of these technologies: RDA, Merge replication and the latest, the Microsoft Sync Services.  We will also cover the recently released SQL Server Compact Edition which can now be used to build both mobile and desktop applications alike.

Mobility Picking up Momentum

Over the last couple of years we have really seen an acceleration of mobile devices.  While this has primarily been in the consumer space - a friend recently purchased a phone that takes better pictures than my analog camera - the adoption in the enterprise has started to kick in.  With the advent of technologies such as Direct-Push (part of the Messaging and Security Feature Pack update to Windows Mobile 5) the off-the-shelf Windows Mobile devices are at a point where they can be deployed and managed within an enterprise.  Confirmation of this trend came through an interesting bit of research done by Forbes entitled "Enterprise Mobility Megatrends" which can be downloaded here.

In last 6-8 months working with the team at Intilecta we have built the desktop version of our product and we are now investigating a mobile device version.  Unlike traditional windows applications which are usually written to communicate directly to a server (either truely direct (ie SQL on the wire) or via a webservice) ours abstracts the data layer through the use of merge replication.  This enables to work locally, while still having a central data repository.  Where am I going with this?  Well the advantage of our architecture is that porting to Windows Mobile will reuse much of the existing code base - in fact since day 1 we have been doing a parallel build against the .NET Compact Framework to ensure that the task of porting will be as simple as possible.  If you want to know more about the use of SQL Server Compact Edition for client applications make sure you subscribe to the feeds at www.sqlserverce.org.

Topics for a chat

I think that Rob missed my point in his post.  I was actually commenting that I was surprised as to how many people turned up (I was expecting 1 or 2) and I agree that the whole point of the coffee group was to be more informal.  This will hopefully allow people to share ideas, discuss issues and generally "shoot the breeze" - this is something that is severely missing in Perth at the moment.

Yesterday afternoon I met with Tony Rosser who is very active in the Perth IT community working with not only the ACS and the AIIA but also with DOIR to produce an IT Industry Audit.  This will hopefully move us "Beyond the Boom" with a strong and self-sustaining IT Industry.  One of Tony's particular areas of interest is around building IT Clusters.  He has been working with a number of vertical clusters (ie technology in a particular market vertical) but more recently has been investigating horizontal clusters (ie focused around the use of a particular technology).  This has rekindled an interest of mine which was to establish a .NET cluster here in Perth similar to Victoria.NET (which incidentally was founded through the hardwork of Dr Pete Stanski who runs the popular AusDev mailing list which you can sign up for here)

Support for VB.NET still sux

Following a post I noticed regarding the new version of Reflector I decided to see whether support for VB.NET had been improved.  Well the sad news it that it might well have been improved but the first thing I tried - disassembling a custom event failed badly.  Instead of giving something similar to:

Public Custom Event MyEvent As EventHandler(Of EventArgs)
 
AddHandler(ByVal value As EventHandler(Of EventArgs))
  End AddHandler
  RemoveHandler(ByVal value As EventHandler(Of EventArgs))
  End RemoveHandler
  RaiseEvent(ByVal sender As Object, ByVal e As System.EventArgs)
  End RaiseEvent
End Event

Reflector gives:

Public Event MyEvent As EventHandler(Of EventArgs)
 
AddHandler(ByVal value As EventHandler(Of EventArgs))
  End AddHandler
  RemoveEvent(ByVal value As EventHandler(Of EventArgs))
  End RemoveEvent
End Event

When is someone going to build a good disassembler for VB.NET?  In the meantime grab Reflector if you aren't already using it cause all in all it is a brilliant tool and gives you an opportunity to explore the way that other developers write code!

Week 1 Synopsis

We had the first, of what will become a regular occurrence, of our weekly coffee gathering for technologists here in Perth.  I must admit I was surprised with the number we got given the short notice and the lack of and prepared theme.  A big hand out to the following who came along - it was great to catch up and hear what everyone is up to:

I hope I didn't miss anyone or their blogs (if I did, leave a comment and I'll update the list).  It is great to see that there are a few perth bloggers out there. 

I had some great conservations about everything from system architecture through to which mobile/laptop to buy next - really looking forward to the same time, same place, next week - Remember email me if you want a calendar reminder so you don't forget!

More Community Websites

A while ago I blogged about Clarke's latest site, Blogarate (also of Whooiz); well this week I noticed on Meg's blog that she had posted about Buggerall.

I also had coffee with Richard Giles who is a fellow Perth technology enthusiast and a former Sun employee (but I don't hold that against him).  He is also the CEO and Co-founder of Scouta, which "is the new way to get relevant online content. It’s the bold new way for you to get personal recommendations to suit your interests and tastes" [Scouta About page]. 

This really takes the concept of rating websites, blogs, podcasts, video clips etc to the next level.  From my understanding it incorporates sophisticated algorithms to process items tagged by other members so that you can recieve pre-qualified material through an application of your choice.  No longer do you have to scan through hundreds of blogs or a dozen podcasts to find something of interest.  In fact one of the goals of Scouta is that you can have it as another channel on your TV (I'm looking forward to accessing this material out of my Vista Media Center).

If you are interested in signing up then you should go here and get started.

.NET User Group Caffeine Hit

Sorry about the late post about this, but tomorrow will be the first gathering of the Perth Caffeine Addicts - only kidding (well except for the Perth and the Caffeine bits).  One of the best things I did when I was in NZ was attend Mauricio's Geekzone weekly coffee group and I thought the concept could work well here in Perth.  So tomorrow, with support from Mitch and Alastair of the Perth .NET Community of Practice, we are inviting anyone who has an interest in developer technologies to join us for an informal chat at Tiger Tiger which is located here in the heart of the Perth CBD (opposite Star Surf Shop) from 1:30pm tomorrow.

Although this event is put together by the co-ordinators of the .NET user group I would like to take this opportunity to invite anyone who is doing application (be it web, smart client or otherwise) development here in Perth using any piece of technology to join us and talk shop.  We will be meeting each week, same time, same place, so if you can't make it this week, why not join us next week. 

If you want to attend you have a couple of options - you could just turn up or, if you want a reminder each week, you can email me here and I will send you a calendar invite. 

If you aren't doing anything better (and no, work doesn't count) tomorrow around 1:30pm it would be great to see you!