WA Mobility User Group (formerly the Perth Mobility User Group)

WA Mobility User Group (formerly the Perth Mobility User Group)

Darius has posted that the next meeting of the Western Australia Mobility User Group is going to be on Monday June 11th. There still isn’t much on their website but hopefully they will have a site dedicated to mobile devices in the near future!

(I’ve also updated my previous post to include this group in the list of Perth activities)

Perth Developer Community

Perth Developer Community

In my previous post I linked to a recent podcast I did with fellow Perth MVP Brian Madsen.  Following this conversation I thought it would be a good idea to list some of the developer resources, people and activities in and around Perth.  If you think I’ve missed something please let me know and I’ll update this post!


Perth Bloggers


Podcast with Brian Madsen

Podcast with Brian Madsen

This morning I posted an interview I recorded with Brian Madsen over at The Microsoft Developer Show. Unlike previous shows where I used a Skype plugin to record a phone interview, this podcast was done in person using my iPod.  Unfortunately I suspect I need to make use of the iPod Amnesty Bin as the recording kept skipping – luckily I think that most of the important points are still there, making it a worthwhile podcast:

The iPod Amnesty Bin @ Microsoft Zune Headquarters

This podcast follows up on a previous snippet-cast that I did with Darryl Burling on TechEd 2007 Australia and TechEd 2007 NZ

.NET Compact Framework 3.5 Redistributables

.NET Compact Framework 3.5 Redistributables

Anyone working with Visual Studio “Orcas” to build mobile applications should be aware that the v3.5 Beta 1 Redistributable are now available from MS Downloads.  There is also a good list of the new features that have been added to v3.5 of the .NET CF.

If you have been following Mark’s blog and have been wondering why the WCF over Email sample doesn’t work you will be relieved to know it’s not just you!  The redistributables are NOT the same binaries as what comes with the Orcas B1 installation/VPC. The redistributables actually contain a fix as documented on the download site.

Bug Fix
The beta1 build of the .NET Compact Framework which shipped in Visual Studio ‘Orcas’ Beta1 does not allow for any project referencing Microsoft.ServiceModel.Channels.Mail* dlls to be compiled. If you’re using Orcas Beta1 and you need to build using these dll’s, first uninstall .NET Compact Framework v3.5 beta1 then download and install this version of NETCFSetupv35.msi.

Towel – A Developer Resource to get through Today

Towel – A Developer Resource to get through Today

Ok being Friday and all this is definitely worth the re-post.  Nick Hodge has reminded me that it is of course international Towel Day in remembrance of Douglas Adams.

So to get through today and prepare for the weekend go and get yourself a Towel to carry for the day – you never quite know when you might need it.

How Extraverted are you?

How Extraverted are you?

On the way home from my run this morning I was thinking about what differentiates developers and what employers look for when hiring new staff. Of course there are the obvious factors such as education, experience and references but what really differentiates the candidates beyond that? One of the factors I find particularly interesting is the ability to communicate and work with others. Part of this is a reflection on how intra or extraverted someone is.

While I contemplated this thought I started to take note of the behaviour of other people out walking or running. There are some that keep their heads bowed and refuse to make any acknowledgment of others; there are some who are obviously deep in thought and appear to look straight through you; there are some who nod or grunt (men only) at you as you pass; then there are a few that say good morning and maintain eye contact.  This made me think of some basic questions that will make you think about how extraverted you are:

  • When you’re walking down the street do you avoid eye contact with other people?
  • If you see someone you know, do you go out of your way to say hello?
  • If you see someone you recognise but can’t remember their name or perhaps where you know them from, do you avoid catching their eye or saying hi?
  • If you’re talking to someone who you can’t remember their name do you ask them, or do you just hope that someone else will mention it?
  • If you traveling on the bus/train do you chat with the person sitting next to you?

I’m sure there are a million other more analytical questions you could ask to determine where someone is an introvert or an extravert but these are just a few that I was thinking about this morning.

Web Resource Fail To Load

Web Resource Fail To Load

Over the last week or so a number of us here at [Intilecta] have been plugging away at an issue with the web version of the product we are building. The last 24hr or so has been my turn and while I haven’t found an ideal solution I did (mostly) track down the cause of our problem.  Leaving aside my belief that web apps are the source of all evil (not really but sometimes I do feel that they can be more pain than it’s worth) I’m going to try to example the issue we were seeing and why it was happening:

There are countless systems that use the .NET framework’s ability to dynamically load assemblies to provide extensibility options.  In our case the entire application is based around this concept but unlike a lot of systems we don’t rely on the assemblies existing on the local filesystem.  We use an override of the Assembly.Load method to load assemblies based on an array of bytes (which might arrive via a network connection, from a database or carrier pigeon).  This works brilliantly in the winforms world but fails miserably in the web world (sometimes!).  The reason that this issue was so difficult to track was that it only seemed to happen in certain circumstances which appeared at first to be completely random. 

In brief the process for dynamically loading web content goes:

  • Load assembly from byte array

  • Retrieve type from loaded assembly

  • Create web control from type either using LoadControl or Activator.CreateInstance

  • Loaded control is added to the Controls collection for the page and is subsequently rendered

This process works for very trivial pages but started to throw the following exception when we tried to add more complex content:

System.ArgumentException occurred
  Message=”Illegal characters in path.”
   mscorlib.dll!System.IO.Path.CheckInvalidPathChars(string path) 
   mscorlib.dll!System.IO.Path.NormalizePathFast(string path = “<Unknown>”, bool fullCheck = true)
   mscorlib.dll!System.IO.Path.GetFullPathInternal(string path)
   System.Web.dll!System.Web.StringResourceManager.ReadSafeStringResource(System.Type t = {Name = “webusercontrol1_ascx” FullName = “ASP.webusercontrol1_ascx”})

If this exception was ignored (ie hit continue) it would then bubble up as the following exception:

System.Web.HttpException occurred
  Message=”An error occurred while try to load the string resources (FindResource failed with error -2147023898).”
   System.Web.dll!System.Web.StringResourceManager.ReadSafeStringResource(System.Type t = {Name = “webusercontrol1_ascx” FullName = “ASP.webusercontrol1_ascx”})

As you can see from the first call stack the issue arises because the StringResourceManager (which is attempting to load content from a resource file) attempts to get the FullyQualifiedName of the module to which the control type belongs.  Unfortunately because the assembly is dynamically loaded from a byte array the method InternalGetFullyQualifiedName which is called just prior to the GetFullPathInternal returns “<unknown>” (not an empty string or null or something sensible) which of course the method CheckInvalidPathChars decides is invalid and throws the ArugmentException.

Lets take a back step and look at just how to replicate this issue:

  • You have three projects in a solution – a test website (the host), a web application project (contains the web control you are going to render) and a web deployment project (so you can deploy everything as dlls)

  • In the load event of the page in the test website you need to dynamically load the output assemblies from both the web app and the web deployment projects

  • Still in the load event you then create an instance of the control and add it to the controls collection of the page

  • For a simple web control (with say text saying “Hello World”) this renders fine

  • Add more than 254 characters to the web control and it will generate the exceptions as described previously.

If you want to see this in action drag down the attachment and simply run the website – it will attempt to load the control but will fail.  Go into the web control and remove the last character and rerun the site and it will load fine!

If you use Reflector to pop the hood and look at the difference you will see that with less than 255 characters the content is rendered using:

__ctrl.AddParsedSubObject(New LiteralControl(“ABCD”))

(where ABCD is the text content of the page)

__ctrl.AddParsedSubObject(Me.CreateResourceBasedLiteralControl(0, &H100, True))

So the content is now being rendered from a resource file, which as we saw from the exception earlier won’t work.  Unfortunately this only really leaves us with one fairly ugly option, which is to render the assemblies to disk prior to loading them into memory.  This of course bring issues of versioning, maintaining file currency and of course security as we now need the service to have permissions to persist files to disk.

If anyone knows of a better work around, please feel free to share as it has caused us enough heartache to get to this point!

HTC Vox Alignment

HTC Vox Alignment

In my previous post I covered a number of the nice features of the HTC S710 (ie the HTC Vox).  I did allude to the fact that the keyboard didn’t feel as balanced and as natural to use as the K-Jam keyboard.  In this post I hope to be able to explain some of this:

In this picture I have marked in a number of different “centres” and as you can see they don’t really align.  Starting with the red and orange markings.  The red indicates the centre of the keyboard, based around the space key, while the orange marker is the middle of the screen.  You can see from the mis-alignment that this isn’t going to be a great user experience when the eyes aren’t aligned with the middle of the keyboard.

The next pair to look at is the Red and Green markers.  The Green indicates the centre of the keyboard as defined by the middle of the QWERTY style keyboard – ie between the G and H keys where the responsibility generally splits between right and left hands.  This mis-alignment, although it would seem that it is only a small amount, is IMHO enough to be a little off-putting when you come from a more balanced desktop keyboard or even other devices such as the K-Jam or JasJar keyboards.

Lastly look at the Blue markers – these are the locations of the right and left menu buttons (not really centres as such).  The annoying thing about the left button, is that it is almost in the middle of the device which means in order to press it you have to take your left hand off the edge of the device (where you would normally hold it for text entry).

The one saving grace on this keyboard are the Cap and Fn key LEDs that are bright and clearly visible when you press the Cap, Shift or Fn buttons.

In so far as the keyboard goes on this device (relative to others) it is definitely a major low point!  I think that they tried to condense the keyboard too much and have failed to really provide a good user experience.

More on Next Months User Group

More on Next Months User Group

I just noticed over at the Perth .NET Community of Practice website that the information on the home screen has just been updated to show that next month’s meeting, which is scheduled for June 7th, is going to start at 3:30pm.  There are a couple more clues at to who it might be but the official announcement has still to be made.

WCF via Carrier Pigeons

WCF via Carrier Pigeons

Earlier this year the .NET Compact Framework team announced that there was going to be an implementation of WCF for Window Mobile devices.  In addition to the regular http binding they were going to put some work into an email binding that would take advantage of Direct Push and Exchange 2007 capabilities.

Today I was reminded of a great RFC entitled “A Standard for the Transmission of IP Datagrams on Avian Carriers”.  I think this RFC was ahead of its time as it even includes discussion on prioritisation and worm detection. All I can say I can’t imagine synchronising my offline database using Microsoft Sync Services via WCF over Carrier Pigeons!

Secret .NET Developer Business….

Secret .NET Developer Business….

Ok, there are rumors starting to emerge that someone special has been oganised for next months [PerthCoP] meeting, which btw is Thursday June 7th.  My sources have informed me that the presenter is:

  • A former Microsoft employee
  • Recently ranked the #2 presenter at CodeCamp
  • Can do 2 things at a time, despite being Male….
  • Is traveling interstate to come and present

I think there should be enough clues the for you to work out who it is!

You might want to paste this into your calendar as the meeting will apparently start a little earlier than usual and be held at a yet to be disclosed venue.  This will then be followed by a community dinner where you get to throw curved balls at our guest.

Keep your eyes on the user group announcements feed for more information.

WCF, WPF – MS stop wasting your breath

WCF, WPF – MS stop wasting your breath

This is a post where I get to vent some frustration at our attempts at [Intilecta] to build large enterprise software using the latest technologies.  Recently we have been talking about using WCF and/or WPF for parts of the application.  After spending a day looking at whether these technologies really make a difference I then realised that I should probably check out the minimum system requirements.  From the download site for the .NET Framework v3 Redistributables it is evident that the minimum requirements are WinXP SP2 and above – which necessarily precludes Win2K. 

You might ask why organisations are still running Win2K – it all comes down to cost and the ability to migrate.  The larger the organisation the harder it is for organisations to make the transition and upgrade. This is a reality in building large enterprise software and unfortunately that means no WCF or WPF for me!  MS can preach all the benefits of WCF and WPF as much as they want but until they help those large organisation migrate to Vista they are wasting their breath.

FYI even SilverLight requires WinXP SP2 and above – MS has made the decision to support non-MS clients in preference to supporting organisations that have used Win2K for almost a decade!

Weekly Coffee

Weekly Coffee

I meant to post this earlier this week but only just found the photo on my HTC Vox:

The weekly coffee is a great opportunity to take a break from what ever you are working on and catch up in a social setting with other developers.  This week a number of the group are on the move it seems – with the job market really hotting up employers really need to lift their game if they want to attract top staff.

Unfortunately I won’t be able to attend coffee next week as I’ll be presenting at MEDC Oz.  Don’t use this as an excuse as the usual suspects will be at Tiger Tiger, 1:30pm on Tuesday.

Subversion and the AnkhSVN Plugin

Subversion and the AnkhSVN Plugin

A while ago Mitch posted about the AnkhSVN plugin for [VS2005] and that he thought that it would be better than using the explorer addin, TortoiseSVN.  After using both for a couple of months now I don’t quite agree.  Unfortunately while the AnkhSVN plugin does a great job of checking files in, displaying diffs etc where it fails down is keeping the solution explorer up to date.  Quite frequently I’ll open up solution explorer and notice that files which I know are under subversion control aren’t marked as such.  Doing a refresh on the folder or expanding to show all files is enough to trigger a refresh of the plugin so that it fixes the display.  The problem is that when I go to commit changes I typically click on the solution node and select commit – forgetting that some of the files might not be correctly picked up by the plugin.  As such there have been occasions when only part of a change have been committed.  Now I just go back to windows explorer for my commits!

One nice feature I just noticed with the plugin is that it extends the properties that are visible when you click on a file.

The first 6 properties are the standard properties that you would expect to see in the properties grid when you select a file in solution explorer.  The rest of the properties are pulled from the subversion file information.  For example you can see who was the last author to check in the file, what revision the file was at and what the uri of the subversion repository is. 

HTC Vox 1 day on

HTC Vox 1 day on

After spending a day with my brand new Vox I thought that I’d share some of my thoughts regarding this device.  In the past I have always been a Pocket PC/PDA kinda guy but when I saw the HTC S710 (aka the HTC Vox) I decided to splurge on a Smartphone device.  Of course these names are now defunct and what I have is actually a Windows Mobile 6 Standard device.  Although I have only just started on my journey into Smartphone land I still think that I’m going to need a lot of convincing that it is the way to go.  However, if you are already a Smartphone user then the Vox maybe your perfect device!  Anyhow enough talking, lets get into some images….

Thanks Expansys – looks like the packaging has remained intact!


HTC have gone the black look and I tell you now it looks sexy.  None of the i-mate white box (typical of geek gear) this packaging is very slick indeed.  Actually this reminds me of Hugo’s OQO O2 unboxing where the packaging was awesome.


Inside the box is nicely presented with a funky looking manual and a “Read Me First” shortcut guide to getting started with your device.  Being a good developer I decided that I should read that last and just get on with powering up the device 😉

Underneath the manuals are all the bits you would expect – device, usb cable, power adapter, headphones (oh, and yes it is a usb headphone/mic cable)

The device itself is very slick.  In this image you can see the external MicroSD slot (with a rubber cover) on the left and the camera button on the right.

On the other side of the device you find the volume and voice note buttons.

Sliding out the base of the unit reveals the keyboard which isn’t as nice IMHO as the K-Jam keyboard I’m used to.  There are some nice aspects, like the Cap and Fn lights (top left of the keyboard) and the left/right menu buttons (top of keyboard). Unfortunately the whole keyboard isn’t quite centred – if you look up from the space bar you will see that the H and U keys are immediately above it instead of the space being in the middle of the G-H and Y-U keys.  Whilst doesn’t seem a big thing, when you start typing an SMS it can be really off putting and takes a while to get used to.

Getting started with this device absolutely rocks! After putting the battery into the rear of the device you don’t have to open it up for anything else.  The SIM card fits into an external slot – which there is a fixed cover to ensure it isn’t dislodged. 

As seen earlier the MicroSD card also goes in an external slot. 

Check out the camera – 2.0 Mega Pixels and despite no flash it seems to take really good photos even in low light.

The USB socket in the based of the device replaces the headphone/mic jack on earlier devices.  This should result in better sound quality through the headset.

From the top of the device we can see the camera button on the left and the power button on the right. 

The keypad on the front of the device is very slick – I really like the position of the home and back buttons.  This combined with the phone buttons being on the lower left and right makes for a really usable device for t9 texting etc. 

Hey, I had to go the 2Gb SanDisk MicroSD card so I could fit all that music on my device and not have to worry about lugging my iPod around. 

Pocket Controller already has a skin for this device!  The HTC homescreen layout is very slick, reducing the application icons allowing plenty of room for task and appointment notifications. 

The camera viewer is just cool – full screen with only minimal clutter to show you the zoom (top left), brightness (middle of the button) and other settings.

If you need to adjust settings it appears as an overlay of what you are currently viewing – very slick. 

The device also comes with Audio Manager so you can organise all that music.

Of course viewing the [Intilecta] website rocks using Deepfish on this device.

My favourite application of the moment, Skype, seems to run quite well on this device.  Particularly since this is one of the few smartphones that has wireless.  Although there isn’t a specific HTC S710 link on the Skype page you can download the application for the WM5 smartphone instead.

Skype also integrates into the home screen (although it got rid of the HTC home screen which I wasn’t so happy about) showing your connectivity status. 

Alternatively you can customise Windows Live (ie Live Messenger for Windows Mobile 6) to take up real estate on your home screen.  This is particularly useful if you do a bit of searching and want to stay logged into Messenger on your device.  The left and right arrows allow you to easily cycle through Windows Live functionality.

Bookmark: Applications for hosting CD/DVD ISO Images

Bookmark: Applications for hosting CD/DVD ISO Images

For the most part burning the 5+Gb DVD ISO image of Visual Studio Orcas Beta 1 to DVD is not only a waste of time, it’s also difficult on low end DVD burners.  This is where applications that are capable of hosting an ISO image as an additional drive on your computer come in handy.  As a bookmark for my future reference two such products (both free) that have recently been recommended to me are:

Update: Apparently according to Bill Virtual CloneDrive won’t actually work with the Orcas B1 image, but I’ve left the link here as they might fix the issue for future versions.

Are UMPCs/Tablet PCs going to succeed?

Are UMPCs/Tablet PCs going to succeed?

With a week full of conferences behind us (MEDC(US), MIX07(US) and CeBIT(AU)) it is worth reflecting on a particular device that has got a fair bit of attention from the likes of Hugo, jkOnTheRun, GottaBeMobile and probably one of the best reviews done at The Gadgeteer, which is the OQO O2.

I must confess that although this device might look like every device-junkie’s dream come true I remain very skeptical around the form factor of this device.  I think have to agree with Wolfgang that at least the current breed of devices are so far from being ideal I don’t think I would recommend purchasing one.

Lets take the OQO for example – here is a device that doesn’t appear to be much larger than the JasJar and yet offers all the richness of a fully fledged laptop.  Is this form factor going to work? I think that despite Hugo’s attempt to convince us that he can get by an entire day using this device for blogging, doing email etc, I think that if you were to focus in on such a small screen for 8 hours a day, every day, your eyes would definitely complain.  Whilst this device is small enough to be easily carried between meetings, it is still heavy and bulky compared to a Windows Mobile pocket pc device.

But you might say that I should be comparing apples with apples – ie compare the OQO to UMPCs, Tablet PCs or Laptops.  Agreed, when put alongside those devices the form factor is quite compelling as it’s small enough to not take centre stage in a meeting (unlike laptops that act as a barrier between participants in a meeting). However I would imagine that even taking handwritten notes in a meeting would be quite a hassle given the small screen size.

One of the main reasons that there has been a lot of interest in UMPC devices in contrast to the new form factors of Windows Mobile devices is in my opinion to do with the operating system.  Unlike WM devices, both UMPCs and Tablet PCs run full versions of Windows.  This means that if you have an application that is written for Windows, even if it doesn’t have explicit Tablet PC support, it will still run on these devices.  This immediately makes them a more appealing option when an enterprise is looking at “going mobile” as they don’t need to reengineer any of their applications.

The downside of running a full version of Windows is that you need to have similar hardware to a laptop/desktop machine – typically 30-60Gb HDD, lots of RAM – both of which reduce the battery life of the device, implicitly making you less mobile.  Do we really need to carry around 30Gb of data when we are going into meetings?

In the second half of Wolfgang’s article he starts talking about Mobile Internet Devices (MID) – ie devices that are (nearly) always connected.  It appears that Intel are working on new processors and that there are devices in the pipeline that will not support a full Windows operating system.  Unfortunately this might leave Microsoft in a tight spot as Windows is inherently not modular (not to be confused with Windows CE which was designed to be modular). 

I think it has to be said though that the capabilities of a MID doesn’t go much beyond what a current Windows Mobile Pocket PC does today – I challenged Hugo after reading his article on using the OQO for a day to really sell me on where I would use an OQO in preference to my K-Jam!  All the hype around the iPhone is really just the cross section of the functionality offered by the Windows Mobile platform and Apples ability to fit a nice user experience (something which Microsoft is still struggling with).

Having used a laptop for doing all my development work for the last couple of years I’m not exactly sure what my ideal supplementary device would look like.  I was originally taken with the idea of a UMPC style device for going to meetings with but since using my K-Jam extensively for the last year or so I am starting to rethink my position on this.  Once mobile data becomes fix cost (similar to what has recently been announced in the UK) I suspect that I will use my K-Jam (or even my new HTC S710 smartphone) in meetings. Of course the last point worth mentioning is that Windows Mobile devices are a fraction of the price of a UMPC device – especially if you are looking at one with a solid state drive!

So, what does your ideal supplementary device look like?