Nick's .NET Travels

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

Customer Service, or lack thereof

Yesterday I decided to apply for one of the newly released Naked DSL accounts with IInet since I currently don't have, nor do I want a fixed phone line (a point that they seem to forget). After spending an annoyingly long time on the phone with one of their sales representatives they were going to go away and provision the accounts.  For the life of me I can't understand how it can take 10-15 days to provision an account (talking with the guys from Tuscan IT at the Silicon Beach House apparently in some countries this is down to 24 hours - we can but dream!)

This morning I get an email from the provisioning department stating:

Service Address Not Found
The service address you provided does not match Telstra's records or can not be found. Please contact your telephone provider to obtain the correct details. Once you have these details, please re-submit your application.

Ok, now remembering that I don't have a phone line, how do I contact my telephone provider?  I got on the phone to Telstra only to be railroaded by their voice system, first to their call centre (which apparently is closed, despite it being 8:30am and well within their operating hours) and then to BigPond (which I doubt would have been helpful so I hung up).  I then got back on the phone to IInet and spoke with one of their sales reps, I was promptly put on hold for what felt like hours.  Eventually she came back to me and said that she had spoken with the provisioning department and they were going to "try again" - WHAT - why didn't they "try harder" the first time and save me 30 minutes of my time?

I'm not sure what the moral of this story is - unfortunately quality of service is not something any of the telcos/isps value particularly highly.  Perhaps it's got to do with the pathetic level of competition in Australia.

HTC and their Home Screens

Over the past couple of months I've been using both the HTC Touch and the HTC TyTnII.  The Touch has both the 3 tab HTC Home screen and the 3 faced flow cube (for want of a better name), whilst the TyTnII has a 5 tab HTC Home screen.  I was just investigating whether the 5 tab screen was available for download and noticed that there is now a 6 tab version.  The guys over a Pocket PC Now have the downloads available here.

(Source: PocketPCNow.com)

This is what the 5 tab home screen looks like.  The additional tab on the 6 tab screen allows you to control media player from the home screen.  I'm really looking forward to where HTC take this home screen (and the flow cube) in future version.  Particularly if they make it more configurable (ie being able to remove unwanted tabs - eg the weather tab when you live in a location that isn't in the list) or open to developers.

What is interesting about the HTC Home screen is that it is a direct competition for the Windows Live home screen plugin.  The major difference seems to be that the Windows Live plugin screen uses left-right navigation, rather than tabs - it also seems to be over the top in the amount of resources it uses just being there!  I've never taken to the Windows Live plugin but I suspect that is due to lack of useful functionality rather than their navigation construct. 

I guess the big question is whether Microsoft will extend the default home screen offerings in future versions of Windows Mobile?  More importantly, if they are going to come up with new home screen ideas (such as the Windows Live plugin) then they don't need to be tied to OS versioning - as demonstrated by the HTC Home screen model.

G-Phone - Why I Do Care!

If you recall about a week ago I posted about Google's entry into the mobile phone space.  I guess as clarification there is no G-Phone, just a OS stack called Android. After the initial announcement I didn't give it too much thought until my brother pointed me to this YouTube video.  Given he isn't really into technology I was surprised by his reaction, "very cool", and thought I'd better go watch it.  Whilst the video is very Geeks-for-Geeks it does showcase a couple of very cool capabilities.

  • One of the highlights for me was the browser capabilities.  Windows Mobile could learn a huge amount here!  Why have we been stuck with such a retarded browser for so long?
  • The UI for both maps and the world viewer are sensational.  They talk a bit about making use of a full 3D rendering engine - I wonder how this compares to the Direct3D capabilities of Windows Mobile?

Ok, so the aim of this stack is that it is supposed to make development for a mobile device really easy.  My question is - just how easy?  Are we talking C++ or are we more advanced (such as the .NET Framework or Java)?  What APIs are really available v's having to write your own?

In the closing part of the video they lay down a significant incentive to mobile developers - they have allocated $10 Million for developers who build the best apps.  Not sure of the details of this but that is a serious amount of investment in order to build a developer following.

What I want to see before I will even look at this platform is the ability to sync calendar, contacts, email etc with either (or preferably both) an online system (such as Gmail) or Exchange.  The latter is clearly going to be essential for this stack to get enterprise adoption.  If the platform is really as open as they make out then hopefully some clever developer will go ahead and build this functionality - but of course this requires them to cough up the dollars for Activesync technology licensing.

When Optional isn't so Optional!

One of the features of VB that has been the point of many a discussion is the use of Optional parameters. Optional parameters allow you to specify a parameter as being just that, you are stating that it is optional and providing a default value.  This quite often gets around defining numerous method overloads that take different combinations of parameters.  The issue with this is that Optional parameters are not supported by all languages despite being in the .NET Framework specs.  

Personally I like to use optional parameters but there are some limitations that I would love to see removed:

1) Remove the requirement that the default value be a constant value.  In my opinion optional parameters are really only a half-baked concept if you can't use dynamically created default values.

2) Remove the (imho) stupid limitation around generic parameters:

image

This unfortunately comes down to what nothing, or null, means for a value type.  imho this should always be an effectively empty/zero-initialized value based on the structure of the value type (eg for a point it would be a point with values 0,0). With the constraint how it is currently I have to limit my methods to be class applicable only - even if the parameters is optional!!!!

Where did SSCE v3.1 go in VS 2008?

For anyone who has played around with the betas of Visual Studio 2008 you will have noticed that the default engine for SQL Server Compact Edition is version v3.5.  If you attempt to access a v3.1 database you will get prompted to upgrade to the new engine.  Unlike the framework version, which you can now specify which version to use, the SSCE engine version can't be changed. Unfortunately this seems to be a known issue with Visual Studio 2008 that is unlikely to be fixed before RTM.

What does this mean for you as a developer and why should you care about the SSCE version?  Well the most significant reason for caring about the version is whether the SSCE engine is in ROM on the device.  With Windows Mobile 6 devices version v3.1 of SSCE ships in ROM which means that it is going to be significantly faster and consume less RAM when your application runs. If you then push out an application that uses v3.5 of the engine you will then have two versions of SSCE on the device - depending on your requirements/constraints this may or may not be an issue that you need to consider.

So what can you do about this?  The developer story is not great at this point in time but so long as you only use functionality that is available in v3.1 of the engine then you should be able to deploy your application (less the SSCE engine) without making any changes.  Of course this doesn't work particularly well if you are deploying an SSCE database (ie an sdf file) out with your application - you will have to manually create this using the v3.1 engine in order for your application to work with it.

Alternatively you can just live with the penalty of having two SSCE engines on the device.  There are some improvements in the v3.5 engine that you will most likely want to take advantage of so this hit might not be as bad as it would seem initially.

Google Maps V's Live Search for Windows Mobile

A week or so ago I got my latest development device, the HTC TyTnII.  Since then I have moved networks from Optus to 3 in order to get economically priced data.  My only complaints about the HTC Touch was that it didn't have either a keypad/keyboard, nor HSDPA support*. Now that I have a data capable device I have started to play with a number of applications that take advantage of mostly-on data.

Being relatively new to Sydney one of applications I've found to be particularly useful is Google Maps for Mobile. Without a data capable device this application is all but useless as it crashes if the network fails or is not available.  Now that this isn't an issue (well for the most part - except of course if your device starts to roam in which case you either loose the network or loose an arm and a leg when you pay the next bill) I have started to use this application quite a bit.

The other feature of the TyTnII that (occasionally) is useful in conjunction with Goolge maps is the in-built GPS.  I say occasionally because picking up a signal is a bit of a lucky draw.  Yes, I know you need to have satellite line of sight but honestly to not be able to resolve the location in the middle of Sydney is not a great story! 

Lets start with looking at how Google maps deals with the GPS:

image image

In the first image you can see the currently white dot at the centre of the screen, which is the current location of the unit as determined by the GPS signal and it alternates between white and blue so you can clearly make it out (select "Track Location" from the menu to start GPS tracking). In the top right corner you can see that there are currently 2 active satellites that the unit can communicate with.  Unfortunately if this number goes to 0 for an extended period Google Maps gives you the prompt in the right image. Worse is that if you click cancel it stops looking for the GPS signal and removes the last known location from the maps - OMG who programmed this!

image image

The next scenario is getting directions.  Google Maps makes this as easy with a "Directions" menu item.  You then have an option of selecting the GPS location or entering a location (left image). After it has determined the directions it presents a summary (right image) giving the distance and time estimate (which I must admit is quite accurate).

 image image

When you hit ok you are taken to the map with the starting point selected (green diamond), way-points marked (yellow diamonds) and the route in purple (left image).  You will also not that the on-screen buttons have changed to include a forward and backward arrows.  These will move you between the way-points along the route.  Despite the instructions on the splash screen that you should not operate while driving, this makes the maps very easy to use while you are driving!  Clicking the zoom in/out buttons will give you a visual indicator of the estimated area to be covered by the new zoom size - zooming is always done around the centre of the map.

 image image

Searching for shops and restaurants is easy with Google Maps - Click the Search soft key, enter the type of food or shop you are looking forward and qualify with a suburb (left image).  The results will be displayed using numbered pins on the map (right image).

 image

The last feature that is quite neat (albeit not very useful) is the aerial view which can easily be toggled between from the Menu.

Mid last week I was convinced to give the Live Search for Windows Mobile a try.  Unfortunately my reaction has not been at all positive.  Let me try and articulate why. I suspect most of it comes down to Live Search wanting to be too much and not delivering on anything well. 

image image

The opening screen (left image) is very portal like and is not immediately intuitive that you need to enter an address (second line) - otherwise you end up with all your results coming from a random location in the US. Once you have done this half the functions (Traffic, Movies, Gas Prices, Categories, Shop/Restaurant Search) still don't work as they are only enabled for the US.  Luckily the maps and directions both work.  Unfortunately for some reason it always seem to default to an zoomed out view of Sydney (right image).

image image

It isn't immediately clear how you can zoom in/out (if you recall Google Maps has a + and - on-screen interface!).  By pressing the d-pad you get a zoom interface (left image).  You can also use the d-pad to scroll the screen whilst in this mode.  In order to accept the new location/zoom you simple stop pressing buttons and after a short timeout it refreshes the screen. From the menu you can also select "Center on GPS" and assuming that a satellite can be connected to you will see the unit's currently location (right image).  Unlike the Google interface this doesn't indicate the number of satellites that it is currently connected to.

imageimage

To get directions you need to leave the Map (did anyone really think about how this app would be used???) and select Directions from the Live Search home page.  This presents you with a dialog where you can enter a location (left image).  Well actually you can select a previous location or select new location.  Selecting a new location gives you a number of options as to where to get the location information from - I particularly like the Contacts integration!

 image image

Once you have determined start and end locations the route information is presented as a summary list but no totals (left image)!  Clicking Map will again take you to a zoomed out image (grrr how annoying!) as shown in the right image.  What I do like is the on-screen prompts saying what to do at the next way-point.  This is much better than the bubbles that obscure the map in Google Maps.  Moving between way-points is also easy - although the left/right arrows are small you can click anywhere on the left/right side of the prompt to move forward/backwards in the way-point list.

imageimage

The last point I would like to make is a comparison between the presentation of mapping data.  These two images are at approximately the same zoom and both are centred around the same GPS location.  Personally I find the one on the left (Google Maps) much easier to read than the right image (Live Search).  I think it is a combination of the width of the streets, the colours used, the positioning of street names and numbers.

 

* For those interested in HTC Touch I would highly recommend looking out for the HTC Touch Dual that is soon to be released.  This will have HSDPA support and has a slide down keypad! Warning: this model will not work on the Telstra NextG network as it doesn't support their frequency. There is likely to be another model early next year targetting this network explicitly.  Note that this is not an issue for the TyTnII that supports all the frequencies.

Mobile Directions

Last night I attend the Sydney Windows Mobile User Group which I can only describe as having the highest device per square metre of any user group I've attended.  With presentations from James McCutcheon (J3Technology), HTC and Fujitsu there was no end of new devices being shown off.  I definitely got the impression that this group was not developer focused with only 3 out of a room of 20+ people admitted to being a developer.  Despite this James did a great job of talking through the new features of Visual Studio 2008 that pertain to mobile developers (to be honest the list is quite short!)

What really interested me were the new HTC devices, particularly the HTC Touch Dual and the HTC Shift.  The Dual is the next incarnation of the HTC Touch which I have been armed with until recently. Unfortunately there are two limitations to the Touch that make it untenable as a long term device for me 1) There is no keyboard/keypad and 2) There is no HSDPA support.  IMHO the Dual hits the spot as it is still has that slim, sexy look but has both a slide down keypad and HSDPA support (warning: the current model will not work on the Telstra NextG network - there will be another revision next year with this support).  The other device in this space is the HTC Touch II which simply improves on the HTC Touch to include HSDPA support.  There is still no keyboard/keypad however HTC have provided a funky SIP that might mean you can get away without a keypad.

Now the HTC Shift is a device that caught my attention when they announced it a while ago but until yesterday I hadn't had the opportunity to play with it.  Unfortunately I'm not sure it completely lived up to my expectations.  As with all the other UMPC devices I've seen it seems to have a lot of rim space - space that borders the screen that isn't what I'd classify as useful.  This makes it look and feel like a rounded brick.  However, the screen is awesome and definitely very readable.  This is in contrast to the keyboard that is not only small but imho unusable - I'd prefer the keyboard on the k-jam or my HTC TyTnII which at least is designed for single digit entry.

The other devices that were on show were from Fujitsu - particularly their offering in the UMPC space looks to rival what HTC are doing.  In fact the Lifebook U1010 (and the next model in this series) look to be a better combination of look and feel than the HTC Shift.  Like the Shift, the next model will incorporate HSDPA support to make it a true data capable device.  What I particularly liked about this device is that the keyboard, although as small as the Shift keyboard, was more usable.  Further Fujitsu have incorporated a nipple (right thumb) with left and right mouse buttons (left thumb) to make it easier to work with the device when you are literally on the move.  As a convertible with full touch aware screen this device is likely to get good adoption from those wanting something that will (almost) fit in your pocket!

The last point I want to point out is that I attended Mobile Monday where the topic was all about mobile payments.  It's interesting to note that PayPal are doing a lot of work in this space and that there is definitely some mixed thoughts on how this area will pan out.  There seems to be the old school way (using SMS and similar services) v's the mobile web way (ie browser based, similar to what happens on the desktop). As devices move to being more data capable are we likely to see users move towards surfing the web and making payments that way?  Of particular interest to me is the ability to do person-to-person payments - for example to split a restaurant bill. This area is clearly very young but rapidly expanding as the demand for better mobile services grow.

Will Google's "Me Too" Effort Destroy Phone Usability

This morning I was asked what I thought about a not so surprising announcement by Google around their push into the mobile phone space. My initial comment was that I couldn't care less what Google does in the mobile space but in hindsight that is a little naive, especially if you take into consideration their already massive user base for their existing products and services.

I'll pick up on just one line that just reinforces my opinion:

"Mobile users want the same applications on the phone as they use on the internet."

This is rubbish.  IMHO consumers hate the web - they use it because there isn't a better alternative.  If you could get the same content using a rich application that doesn't have the request-response penalty then the web would disappear overnight . The reality is that with so many competitors out there we are stuck with the lower common denominator.  With Google entering the mobile space all we will see is more rubbish (eg Google Ad words) being available on the device. 

How often do I browse the web on my device? - never!

How many MB do I download a month on my device? - around 500Mb at the moment!

Why do I download this much? - a combination of email, maps and rss (virtually no browsing cause it is just painful)!

I think that if Google is going to try to steal the mobile phone market they are underestimating the complexities of the market. Consumers are fickle and will have higher expectations and lower pain tolerance than on the desktop where they are used to having to wait.

Returning to my original point, if Google does enter this market then the existing players will just play defensive, which will imho stifle innovation rather than encourage it. Just take a look at the Windows Mobile or Blackberry platforms of recent years - has the innovation increased since Apple decided to play in this space?

Sydney Mobility

Welcome to another action packed week of mobility here in (not so) sunny Sydney!  On the back of a successful Office Developer Conference there are a series of events lined up for this week that are worth attending if you are working in the mobility area.  By mobility I mean everything from being a developer for Windows Mobile or the .NET Compact Framework, through to infrastructure management of tablet PC/UMPC environments, through to content/service provision for mobile phones.

Finding the Silicon Beach House

There as some exciting times happening at the Silicon Beach House this week.  Not only did we welcome a new resident, Ben Giles from Spoon Media, the dividing walls are set to come down (finally).  We would have had this done ages ago but the builders have been doing the finishing touches to one of the other offices downstairs.

The other announcement is that there is now an easy way to find the beach house - in case you get lost in your lunch hour!  Simply go to http://www.siliconbeachhouse.com/map (big thanks to Dave for setting that up).

Another Microsoft Move and Shake

Last night I went down to Little Bay to play a social game of hockey with Andrew which was a ball of fun - it helped that we won!  Interestingly he shared the fact that yesterday Roger Lawrence was appointed Frank's replacement as Group Manager Evangelism (hope I got the title right) in the Microsoft Australia DPE team. 

I had the privilege of co-presenting with Roger back at the 2006 TechEd on enterprise mobility.  The amount of enthusiasm he has for technology, user groups and the community in general is unbelievable and I'm sure we will continue to see fantastic things from this team going forward. 

Welcome Roger!

IceTV User Group Offer!

icetv_rgb_colour

Regular readers of my blog will recall that I posted about my awesome experience with purchasing a Dell and IceTV subscription. Well the great news is that I was so excited I emailed IceTV to see whether I could get other people as excited as I am.  The upshot is that Matt Kozzatz, General Manager for IceTV, has made an off for all .NET user group members to receive 25% off their annual subscription - you need to attend a .NET user group to find out how to take advantage of this fantastic offer.

But the goodness doesn't stop there - Matt has also offered a Free 6 month subscription as a prize for all .NET user groups!  If you attend a .NET user group you will hopefully hear about this offer via your usual mailing list or at a meeting in the coming month or so.

Vista_Guide_Screen

Advanced Graphics with .NET Compact Framework

Building managed applications for Windows Mobile devices that have a rich user interface is almost impossible if you restrict yourself to the primitive controls that ship with the .NET Compact Framework.  Luckily building your own custom controls isn't that difficult.  You typically have to override the painting of the control to render the content the way you want it.  Unfortunately if you want to do some more complex rendering you will still run into problems because the Graphics object that is exposed by the OnPaint event is a significantly reduced subset of the desktop Graphics object.  The main things it misses are the ability to transform (scale, rotate and translate) the graphics.

Lets take an example, say you have a method that draws a cross:

Private Sub DrawCross(ByVal g As Graphics, 
                               ByVal size As Integer)
    g.DrawLine(mForegroundPen, -size, -size, size, size)
    g.DrawLine(mForegroundPen, size, -size, -size, size)
End Sub

As you can see from this method it draws the cross based around the origin.  This is great but the likelihood of you wanting to draw a cross at the origin is virtually 0 since only a quarter of it would be visible.  There are a couple of options in terms of positioning the cross.  Firstly, you can modify the DrawCross method to accept a third parameter that identifies the centre of the cross:

Private Sub DrawCross(ByVal g As Graphics, _
                               ByVal centre As Point, _
                               ByVal size As Integer)
    g.DrawLine(mForegroundPen, centre.X - size, centre.Y - size, _
                                           
centre.X + size, centre.Y + size)
    g.DrawLine(mForegroundPen, centre.X + size, centre.Y - size, _
                                            centre.X - size, centre.Y + size)
End Sub

Now all of a sudden the method has become significantly less readable and you can imagine how it would get if the rendering was more complex than just a cross. The second way to do this, and my preference, is to translate the centre of the graphics canvas.  This way the DrawCross method doesn't change - it still things it's drawing at the origin - just the canvas that you are drawing on does.  A way to visualise this is to imagine a pen suspended in mid air ready to draw a cross on the canvas below it.  What we want to do is reposition the canvas underneath so that when the pen draws the cross, the cross is actually at the required position in the canvas.  When we are done, we have to remember to reset the canvas so that other drawing is done at the right place.  We can do this as follows:

Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
    MyBase.OnPaint(pe)

    Dim g As Graphics = pe.Graphics
   
g.Clear(Me.BackColor)
   
    g.TranslateTransform(Me.Width / 2, Me.Height / 2)
    DrawCross(g, 10)
    g.ResetTransform()
End Sub

As you can see it is clear from here what is going on - we are moving to the centre of the control, drawing the cross with size 10 and then resetting the canvas (just in case other methods are added).

Going back to the original discussion around the .NET Compact Framework you will notice that the TranslateTransform method doesn't exist on the Graphics object.  I'm guessing that part of the reason for this is the lack of support from the underlying rendering engine but here's quite a simple way to get around this issue (be warned though, calculations involved in doing these operations can quickly become CPU intensive which can make your application slow and consume battery power!).  You need to create a wrapper graphics class that is capable of doing the layout changes you want:

Public Class TranformGraphics
    Private mGraphics As Graphics
    Private mMatrix As TMatrix

    Public Sub New(ByVal g As Graphics)
        Me.mGraphics = g
    End Sub

    Public Sub DrawLine(ByVal pen As Pen, ByVal x1 As Integer, _
                                                        ByVal y1 As Integer, _
                                                        ByVal x2 As Integer, _
                                                        ByVal y2 As Integer) 
        Me.mGraphics.DrawLine(pen, ConvertedX(x1, y1), _
                                                ConvertedY(x1, y1), _
                                                ConvertedX(x2, y2), _
                                                ConvertedY(x2, y2))
    End Sub

    Private Function ConvertedX(ByVal x As Integer, _
                                           ByVal y As Integer) As Integer
        If Me.mMatrix Is Nothing Then Return x
        Return CInt(mMatrix.R1C1 * x + mMatrix.R1C2 * y + mMatrix.DX)
    End Function

    Private Function ConvertedY(ByVal x As Integer, _
                                           ByVal y As Integer) As Integer
        If Me.mMatrix Is Nothing Then Return y
        Return CInt(mMatrix.R2C1 * x + mMatrix.R2C2 * y + mMatrix.DY)
    End Function

    Public Sub ResetTransform()
        mMatrix = Nothing
    End Sub

    Public Sub TranslateTransform(ByVal dx As Single, ByVal dy As Single)
        Dim trans As New TMatrix(1, 0, 0, 1, dx, dy)
        If mMatrix Is Nothing Then
            mMatrix = trans
        Else
            mMatrix = mMatrix.Multiply(trans)
        End If
    End Sub
End Class

I've left the implementation of TMatrix to your imagination but the important method that you need to get right is the matrix multiplication:

Public Function Multiply(ByVal M1 As TMatrix) As TMatrix
    Dim M2 As TMatrix = Me

    Return New TMatrix(M2.R1C1 * M1.R1C1 + M2.R1C2 * M1.R2C1, _
                        M2.R1C1 * M1.R1C2 + M2.R1C2 * M1.R2C2, _
                        M2.R2C1 * M1.R1C1 + M2.R2C2 * M1.R2C1, _
                        M2.R2C1 * M1.R1C2 + M2.R2C2 * M1.R2C2, _
                        M2.R1C1 * M1.DX + M2.R1C2 * M1.DY + M2.DX, _
                        M2.R2C1 * M1.DX + M2.R2C2 * M1.DY + M2.DY)
End Function

There might be an easier way to do this with existing classes, so if you come across something please let me know.  Now back to our code - instead of using the Graphics.TranslateTransform (which doesn't exist for the .NET CF), we can now use our newly created TransformGraphics.TranslateTransform:

Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
    MyBase.OnPaint(pe)

    Dim g As new TransformGraphics(pe.Graphics)
   
g.Clear(Me.BackColor)
   
    g.TranslateTransform(Me.Width / 2, Me.Height / 2)
    DrawCross(g, 10)
    g.ResetTransform()
End Sub

Private Sub DrawCross(ByVal g As TransformGraphics, 
                               ByVal size As Integer)
    g.DrawLine(mForegroundPen, -size, -size, size, size)
    g.DrawLine(mForegroundPen, size, -size, -size, size)
End Sub

Note we have still had to modify the DrawCross method so that it accepts a TransformGraphics but overall we haven't really affected the readability of the code.  Please feel free to comment on how you get around the challenges of complex rendering using the .NET Compact Framework!

Australian DPE Team Welcomes (back) a new Member

Yesterday I caught up with Finula Crowe who is currently the Wave 2008 Community Launch Leed for Microsoft. She had some awesome news which is that she is rejoining DPE as Audience Marketing Manager.  In Fin's own words her "passion for Developer, Architect and extended Influencer communities is no secret". There will of course be a transition period over the coming weeks but I expect we will start to see her influence in the way that DPE interacts with the community.

I've always been a big proponent of the way that Microsoft supports the community.  From what I can see the communities surrounding .NET and more recently specific technologies such as SQL Server, Sharepoint and SBS are all very active.  Whilst most of these are now organised and supported by the community itself, it is encouraging to see that Microsoft still believes that they are important.

As the number of user groups and other communities grow the engagement model for DPE has had to evolve. Unfortunately in recent times this has resulted in a number of groups feeling un-loved or under valued.  Hopefully over the coming months we will start to see a new model emerge that will once again provide the much needed support for the user groups in a way that it can scale with the number of groups.

Don't forget to "Ride the Wave" early next year with the launch of Windows Server 2008, SQL Server 2008 and of course Visual Studio 2008.

VB guys can be Zealots too

This morning I heard some devastating news - Bill McCarthy, author of the @Head blog, has been evicted from a community discussion alias for being inflammatory and using derogatory language.  As a courtesy to the VB community Bill has posted his thoughts about VB being the n*gg*r of Microsoft's programming languages

Whilst I can understand that this post could be taken as being culturally insensitive I think this is an over the top reaction, essentially trying to cover up a real issue that the VB community have been fighting for years.  Regardless of what Microsoft says, VB is not given the same level of respect as C#.  This is not to say that the VB product team doesn't do a fantastic job of both innovating with both language and IDE features, because as a long time VB zealot I'm still yet to be convinced to join the dark side... But honestly how many times do you see a framework, best practice guidance or SDK come out that has been done in VB first?

As a plea to Microsoft - please reconsider Bill's involvement with the discussion alias.  His contribution to the alias and the VB.NET community as a whole is too valuable to be lost.

Rockin' End User Experience

Since I moved to Sydney last month I've been without my Media Center setup that I was used to having.  When I got back from Perth a week and a half ago I decided that enough was enough, and went online and purchased a mid-range Dell machine, complete with TV tuner, decent monitor and speakers.  Last week the delivery arrived almost a week earlier than they had initially quoted.  After unpacking all the bits and plugging everything in I had a working Media Center computer - no additional setup required!!!

The only problem came when I went through the setup process for Media Center.  While it could pick up all the TV channels there was of course no Electronic Program Guide for Australia.  I decided to give IceTV a go.  After registering on their website I proceeded to follow their particularly detailed instructions for Vista - this required me to re-scan for the TV channels but other than that it was an incredibly simple process.  Now I'm sitting comfortable knowing that all my favourite shows will be recorded.

Big thumbs up to both Dell and IceTV for just a simple end user experience - I wish that more companies would think about the end user.

What do Victorian .NET SIG attendees and Ben Cousins have in Common?

A: They're both "users" in the eyes of the government....

Ok, so not a great joke but I had to post about this as it is a true sign that political correctness has gone a step too far.  When Victoria .NET was established, the Melbourne .NET User Group and the Australian Developers .NETwork combined and came in under their banner.  For better or worse it was done to help the user groups function, providing venue and funds for them do continue to operate.  However, they decided to change the name to Victoria .NET Dev SIG.  Apparently one of the reasons it wasn't called a "user group" was that it has connotations relating to drug using - go figure huh!

I mentioned this earlier today to a friend of mine and his response was

... so the attendees now wear protective helmets and badges that say they are "special" ...

"Ride the Wave" - Early Event Notification

Microsoft Australia has announced the dates for the "Ride the Wave" (omg not another dreadful marketing slogan) tour.  As most people will be aware Microsoft will be concurrently launching Visual Studio 2008, SQL Server 2008 and Windows Server 2008 early next year.  To support this this tour will visit the following capital cities:

Sydney      February 28, 2008

Melbourne   March 4, 2008

Adelaide     March 13, 2008

Perth         March 19, 2008

Brisbane     March 26, 2008

Canberra    April 2, 2008

Why some C# developers are Zealots!

Today I came across a quote that I couldn't help but blog.  For a while Brian has been running a C# developer site called CSharpZealot and he continually gives me grief about using VB.NET as my primary language.  Other than pointing out that C# is lacking good xml language integration, I tend to avoid this discussion as I find it pointless but this quote provides me with great ammunition for those C# zealots that really want an answer!

"... I think that the real reason that C# fanatics disparage VB.NET is the same reason that religious fanatics disparage other religions; because their beliefs are fundamentally groundless, and they desperately fear that they're really wrong as hell, which they are... "