Internet Operating Systems, Watch out Microsoft

Internet Operating Systems, Watch out Microsoft

This morning I received a long awaited invite to try out the beta of the Xcerion XML Internet OS/3 and I must admit I was a bit blown away with just how much they have built.  As you can see from the following screenshot (yes, this is actually running within IE in fullscreen mode) it has a number of the building blocks like text editor (Notepad lives on), console, explorer, menus, icons and even a sidebar following the Vista theme.

image

The biggest issue is going to be user adoption, which of course will be driven by application availability and compatibility.  Without Word, Excel and Powerpoint compatible applications this new environment will struggle to even get a look in.  Interestingly the Presentation application seems to be just as slow to open and work with as Powerpoint – perhaps worth suggesting that they don’t copy all Microsoft’s features 😉

In summary: Interesting concept, personally I wouldn’t be investing either $$$ or time/effort to engage with this technology.

When Codenames Combine

When Codenames Combine

This morning I was trawling through some of the implementation details of the Client Application Services that are new to the .NET FX v3.5/Visual Studio 2008 and came across a couple of points of interest:

Firstly, one of the advanced settings for the Client Application Services is a connection string that determines the database where credential information will be cached for use when the application is offline.  In the dialog it states that you can simply set the connection string to “Data Source = |SQL/CE|” if you want the framework to handle naming and creation of the database.  Thinking that someone at Microsoft would have thought about this a bit I assumed that this was a feature of SQL Server Compact Edition (SSCE) that I’d missed.  Unfortunately I gave them too much credit and if you look at the implementation of the CreateDBIfRequired method of the System.Web.ClientServices.Providers.SqlHelper class you will see that the string literal “|SQL/CE|” is hard coded, not once but three times (have these guys heard of constants, or resource files?).  It gets worse – it’s case sensitive, and yet when they create the SqlCEConnection (don’t scare yourself by looking at that code) they do a case-insensitive check against the name.

The second thing, which actually just made me laugh rather than being bad, was the name of a resource that is used in the above method. When the method attempts to connect it can fail with a TypeLoadException if SSCE is not installed/available on the machine.  The code handles this and throws a new ArgumentException (not sure about this being the best exception type to throw either) with a message loaded from a resource file with the name “AtlasWeb.SqlHelper_SqlEverywhereNotInstalled”.  Interestingly this is a mix of two code names, “Atlas” and “SqlEverywhere” – I guess it was just going to be too hard to rename this resource!

So, what are the morals of this exercise?  Well I guess the obvious one is don’t use string literals in your code (even for one-offs) – it’s not that hard to make them constants or even resources. The other point is that you really need to consider ownership of code/functionality.  In the case of the |SQL/CE| literal, this to me would be better off part of the SSCE code base so that it is available for other uses (similar to the |DataDictionary| constant).

More on the SPB Survey

More on the SPB Survey

In my previous post I referenced a recent survey that SPB Software House conducted into Pocket PC users. On closer inspections I have some additional points that I thought were interesting:

  • The Male:Female ratio was significantly larger than you would expect in nearly any industry.  Although the results might reflect current users, they are unlikely to be a good indicator of whether mobile devices would be adopted and how they would be used within an organisation.
  • The results are also likely to be skewed due to the disproportionately large number of respondents that work in a computer related occupation.  What would be interesting would be to see some of the results where there are more normalised industry respondents.
  • I must admit I hate the way the survey results are presented – it makes it difficult to get a clear picture of the demographics over each year, let alone being able to compare them.
  • Interestingly the most important consideration when purchasing a device is phone functionality.  This is where phone manufacturers can really innovate – HTC is definitely leading the way here with their TouchFlo, Home Screen and other features.  I must admit, they are trailing behind Apple with their iPhone but are definitely doing the best within the UI limitations of the Windows Mobile platform.

SPB Software House: Pocket PC Survey

SPB Software House: Pocket PC Survey

If you want to see what the mobile marketplace has been doing then this survey is work a glance.  The only issue is that you need to know what information you are looking for:

  • If you working out the best device to buy, then this survey isn’t going to be that useful!
  • If you want to know what usage trends are so you know what type of software will sell, then this survey would give you a good guide.

More thoughts once I’ve had a bit more time to digest it

Imagine Cup: Implementation V’s Idea

Imagine Cup: Implementation V’s Idea

This morning I received the following enquiry regarding my experiences with the Imagine Cup (Software Design Invitational):

If we choose to work on a project and the idea is good, but because of complications if we cud not implement it fully, will that result in negative impact?

My response is a little mixed, essentially the short answer is yes it will but the long answer is no, so long as you prioritise.  Of course, if it comes down to two projects that have equal merit with regards to the concept, the impact on the end user etc then the project that is the most complete will score higher than an incomplete implementation.

One of the facets of this competition that so many competitors forget is that at the end of the day there are a lot of entries and a very short amount of time in which the judges have to make a decision.  The winning entry might not necessarily be fully complete but the WOW has to be there.  For example there were a lot of surprises by this year’s winners.  In fact two of the most complete projects didn’t even make the top three!

Remember that the whole competition is time constrained – you need to work out what the most important features of your project are, what the sell factors are, how to best deliver the WOW both in your solution and your presentation.  This last point is quite important – you can have the best technical solution but if you can’t present it then you are not going to do well (word of advice: find someone from the business school to join the team as they can help with selling the solution!)

The Architecture Journal Reader

The Architecture Journal Reader

Today I was sifting through some of my back-logged email and noticed an announcement about a beta version of the Architecture Journal Reader that is available via The Architecture Journal website

image

Following the style of the much talked about New York Times reader, the Architecture Journal reader is an occasionally connected (yay!) application that allows you to read, navigate and search all the material that has been published in the Architecture Journal.

image

As I mentioned before, this journal is well worth reading and I would definitely suggest giving the beta reader a go!

Google Maps 1, Live Search 0

Google Maps 1, Live Search 0

I’ve got to hand it to those clever geeks at Google – I just downloaded the latest version of the Google maps client for Windows Mobile and it was able to give me my current location, despite not having a GPS unit in this device!  How are they doing it?  Well, according to the instructions they are doing an approximate triangulation of the cellular broadcast information to give you a location that they say is accurate to about 1700metres.  This might sound rather a large inaccuracy but if you think about how little data they are probably working with, it is probably no wonder. 

My initial position was accurate to about a block, which for most purposes (like finding yourself on a map of Sydney) is close enough. If you need more accuracy then you just need to cough up the extra couple of dollars to get either an external GPS unit or a device (such as the HTC TyTnII) that has integrated GPS.

Whilst I haven’t downloaded the latest Live Search client, I’m yet to see anything that has impressed me as much as the Google Maps client (kind of bizarre for a predominately web based company!)

Why should you think about Professional Development?

Why should you think about Professional Development?

One of the most important aspects of your career is professional development but it is also the one thing that most people neglect.  Well, at least until they wake up one morning and discover that they are no longer content with their current job.  At this point they start talking to recruiters and either have to learn additional skills in order to capitalise on the latest technology fad (as an aside a couple of hot areas at the moment are Sharepoint/MOSS and Unified Communications) or they simply move sideways to a different company doing a similar job for similar pay.   Professional development is something that should be continually worked on and in some cases closely managed to maintain a current skill set and advance you career.  This is true regardless of whether you are a student just entering the work force or a senior executive dreaming about days on the golf course.  The only way to be relevant is to stay relevant!

Ok, so now that the lecture is over lets discuss some of the activities you can engage in to stay relevant.  One of the simplest things to do is to read the newspaper every day. I don’t mean read every page meticulously (although this can be great when you are relaxing on the weekend), I mean scan the paper for important events, announcements and other information that is relevant to what you do.  Tuesday is of course IT day in the paper with all the major papers having an IT section but the Financial Review typically has one or two pages most days on Information which covers National events and announcements in the IT space.

Other ways of getting your IT fix are through subscribing to, and reading, a number of broad spectrum blogs.  Whilst it can be interesting and beneficial to subscribe to blogs that are specific to your niche area, you can often become blinkered and forget that the IT world continues to evolve around you.  You can also stay grounded by talking with colleagues, preferably outside the organisation you work in.  Quite often they may have come across news or other information that might be relevant to you but the only way to know for sure is to talk to them (yes, I know IT people aren’t that communicative but trust me, the more you do it, the easier it gets!). 

One technique I use for staying in contact with people is via instant messenger or Skype.  A number of organisations block access to these technologies which is not only very draconian it also prevents you from doing your job.  I have a large number of contacts that I regularly contact for their thoughts on design decisions, issues that have arisen or to discuss best practices.  Of course, this relationship has to be bi-directional in that you are willing to offer assistance as and when it is requested.  This might seem a waste of your time, but I can guarantee that in the long run everyone benefits – you increase your knowledge and your employer gets a better product/outcome.

Of course, if you don’t already have a set of colleagues that you can turn to for assistance then you need to establish these industry contacts.  To do this you can convince your employer to send you to industry conferences (for example CeBIT or TechEd) but one of the best opportunities is sitting on your doorstep.  Attending local events run by the ACS (such as the Branch Forum), user groups (such as the Perth .NET Community of Practice – http://www.perthdotnet.org or the SQL Server User Group – http://www.sqlserver.org.au) or other industry bodies (see the Australian IT section for a calendar), are a great way to meet people.  More recently the .NET user group formed a weekly coffee group that meets at Tiger Tiger (http://www.tigertigercoffeebar.com) every Tuesday from 1:30pm – there is no commitment, you can simply rock up, talk shop while enjoying some food or coffee for an hour or so.

Lastly I would suggest a regular investment in technology books and/or training courses.  Unfortunately technology related books tend to be quite expensive in order to cover the investment of writing them from a extremely niche market.  Again, this is an area where the .NET user group has continued to lead by example, setting up and maintaining the .NET library.  This is housed at the Silicon Beach House (http://www.siliconbeachhouse.com) and for more information you can contact the user group co-ordinator, Mitch Wheat (mitch @ iinet.net.au).  In terms of training courses there are a range of local providers but they are usually quite expensive.  A strategy for conducting your own learning is to look at the requirements for passing some of the certification exams and using that as the basis for a study plan.

In closing I would like to remind you that professional development is your responsibility, NOT your employers.  Whilst I would encourage employers to provide staff with an opportunity to develop their skills, at the end of the day it is your life and as such you need to make professional development your priority.

[This post is for those who read my blog but don’t get the ACS WA Offline publication where it will be printed]

Documentation Comment Creation

Documentation Comment Creation

One of the most painful points about coding in VB.NET is the time taken to compile projects.  Luckily the background compilation more than compensates for this as you don’t need to compile your application in order to see all the compilation errors in your code. Interestingly one of the key artifacts of a slower compilation process is that you typically want to reduce the amount of unnecessarily tasks that are carried out as part of compilation. 

Of particular note is the generation of XML documentation files.  I’m not for one minute suggesting that their creation isn’t important but you don’t need to create them during debugging.  To disable the creation of these files during debug mode go into the project properties dialog for each project, make sure the Configuration is set to Debug (which is probably the Active configuration type) and then disable the XML documentation.

image

C# Project Settings

image 

VB.NET Project Settings

Interestingly by default this option is enabled for VB.NET projects, yet disabled for C# projects – perhaps this says something about the different styles of developers. One gotcha for VB.NET Developers is that disabling this option does more than simply preventing the creation of the XML documentation file.  It also prevents the automatic creation of XML documentation comments.

For example if you were to document the following property:

image

you would place the cursor on the line before the Public keyword and press ”’ (/// has the equivalent behaviour in C#).  This would automatically generate a commented XML snippet:

image

Unfortunately in VB.NET if you disable the generation of XML documentation files you are also disabling this functionality – you can press ”’ as many times as you want but nothing will happen.  For C# developers there is a checkbox that controls the creation of documentation comments in the Options dialog:

image

Byte Me – Perth

Byte Me – Perth

I touched down in Perth around mid-day on Saturday and have enjoyed a good dose of Perth sunshine ever since.  With last night being the official launch of Byte Me I would like to encourage everyone to go to some of the fantastic events on offer this week.  If you don’t know about the Byte Me festival then you should check out their website or drop into Tiger Tiger to pick up a brochure.

Other events on this week (as I mentioned earlier) are:

  • Weekly Coffee (Dec 4th and 11th)
  • Perth Massive (Dec 4th)
  • Byte Me! Festival (Dec 1st -9th)
  • SQL Server User Group (Dec 4th)
  • Perth .NET Community of Practice (Dec 6th)