Orcas CTP Available for download

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!

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

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

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

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

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

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

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

.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!

Windows Mobile Resources

Windows Mobile Resources

With the announcement of Windows Mobile 6 now behind us it is time to get serious about looking at just what this new platform is going to give us.  As usual I’m less interested in the changes made to the overall user interface and more interested as to what the platform gives us as developers.  Yesterday I was doing a search for an MSDN article on building Today screen plugins that former MVP Neil Cowburn point me to. In the process of finding what I was after but did come across some interesting reading:


Community Sites

Community Sites

In this spirit of community portals (such as the Daily Developers, SqlServerCE.org and NetFx3) I thought that I should blog about a cool site that Andrew Parsons (don’t forget to order your copy of Professional Visual Studio 2005 today…) just pointed out to me – HookedOnLinqTroy has hit the nail on the head with this one; Linq is going to be huge – if you think of changes that have improved our ability to read and write code, Linq definitely has to be way up there on the list.


I must admit I’m feeling a bit guilty that I haven’t found this site before now – oh well, I guess I’d better go back to reading those hundreds of blogs I’m subscribed to. I just hope that Troy and the usual gang are all going to be at Code Camp Oz this year (just around the corner – Wagga Wagga, March 31st/April 1st – get the details here)

User Interface Guidelines for Mobile Devices

User Interface Guidelines for Mobile Devices

One of the areas that I revisit from time to time is how user interfaces are designed for mobile devices.  Despite being crucial to user adoption most developers don’t worry too much about the interface design for desktop applications.  Luckily due to monitor/screen sizes going up this is less of an issue as we can usually work out the mess and still be productive.  Unfortunately on a mobile application if you don’t get the user interface right (or at least make an effort to think about how a user might use your application) your application will not be used (full stop!). 


So, lets start with the basics – these are guidelines for usability not necessarily guidelines for good user interface design:


Watch out for low flying objects…..

Watch out for low flying objects…..

Ok, the title was just to get your attention but hey this is pretty important news, so worth making the effort.  I’ve just found out that the date and city have been announced for the Microsoft Mobile and Embedded DevCon 2007, here in Australia.  That’s right on May 16th in Sydney we are going to get the best of the international presentations from MEDC Las Vegas here downunder!  This information was recently published on the homepage of the international MEDC homepage (www.medc2007.com), although you have to click the “Register” button for the dates/locations information or you can just follow this link for the full list.


Look forward to seeing as many people as possible in Sydney this year!

Raising Custom Events

Raising Custom Events

Earlier today I was wading through the code for the Microsoft Sync Services (many thanks to Lutz Roeder’s Reflector and the file disassembler addin) so that I could understand how it all pieces together.  One of the interesting things I noticed was that in a couple of places they had appeared to write their own custom events which look a bit like:


public event EventHandler<ApplyChangeFailedEventArgs> ApplyChangeFailed
{
      add
      {
            this.Events.AddHandler(DbServerSyncProvider.EventApplyChangeFailed, value);
      }
      remove
      {
            this.Events.RemoveHandler(DbServerSyncProvider.EventApplyChangeFailed, value);
      }
}

 
Later in the code they then raise this event with the following untidy bit of code:


protected virtual void OnApplyChangeFailed(ApplyChangeFailedEventArgs value)
{
      EventHandler<ApplyChangeFailedEventArgs> handler1 = (EventHandler<ApplyChangeFailedEventArgs>) this.Events[DbServerSyncProvider.EventApplyChangeFailed];
      if (handler1 != null)
      {
            handler1(this, value);
      }
}


This got me thinking about how this would be written in VB – thanks again to reflector I ended up with


        Public Custom Event ApplyChangeFailed As EventHandler(Of ApplyChangeFailedEventArgs)
            AddHandler(ByVal value As EventHandler(Of ApplyChangeFailedEventArgs))
                Me.Events.AddHandler(EventApplyChangeFailed, value)
            End AddHandler
            RemoveHandler(ByVal value As EventHandler(Of ApplyChangeFailedEventArgs))
                Me.Events.RemoveHandler(EventApplyChangeFailed, value)
            End RemoveHandler
            RaiseEvent(ByVal sender As Object, ByVal e As ApplyChangeFailedEventArgs)
                Dim handler1 As EventHandler(Of ApplyChangeFailedEventArgs) = TryCast(Me.Events.Item(EventApplyChangeFailed), EventHandler(Of ApplyChangeFailedEventArgs))
                If (Not handler1 Is Nothing) Then
                    handler1.Invoke(sender, e)
                End If
            End RaiseEvent
        End Event


Ok, so that’s the event declaration – you will notice that most of the code to do with raising the event has now been moved into the RaiseEvent part of the custom event.  Now when we raise the event we just do:


        Protected Overridable Sub OnApplyChangeFailed(ByVal value As ApplyChangeFailedEventArgs)
            RaiseEvent ApplyChangeFailed(Me, value)
        End Sub


I think you would agree this is much tidier from a consumer point of view!

SQL Server Compact Edition – Community Portal

SQL Server Compact Edition – Community Portal

Over the last couple of weeks I’ve been slowly putting together a new community portal to focus on what I think is a very relevant technology that will impact the way we build applications.  SQL Server Compact Edition and accompanying technologies such as the Microsoft Sync Services (currently in CTP) will form the basis for new productivity applications. 


To this end I would like to introduce www.sqlserverce.org, which can also be found at any of the following urls:



 

Keyboard shortcuts in Visual Studio 2005

Keyboard shortcuts in Visual Studio 2005

I was just reading Jason McC’s Weblog and he points out that the are some great wallcharts available for download that cover a large proportion of the keyboard shortcuts for different profiles (you can get the list of downloads here).  Unfortunately even in a book dedicated to Visual Studio 2005 such as “Professional Visual Studio 2005” there isn’t really enough space to go into all of the shortcuts.  This is especially true when the shortcuts are configurable both in the initial profile you select and then via the Tools->Options dialog. 


Missing:  What’s missing is of course the “General” profile – for the most part AFAIK these are basically the same as the C# profile settings w.r.t the keyboard.  IMHO there should be a VB6 profile (which would be the settings currently in the VB profile) and a VB.NET profile (which would be the shortcuts etc that all  developers coming from VS2003 would be used to).  Despite being a VB.NET advocate I wouldn’t touch the VB profile with a 30ft barge pole as it is just plain confusing for anyone who has worked with VS (since .NET started).

Windows Mobile 6

Windows Mobile 6

So I’m not the first, and won’t be the last, to blog about this but I just thought I’d add the appropriate links:  Windows Mobile 6 has been announced which of course will come with a whole set of new features. In case you were wondering here are a couple of people from within Microsoft who have more on what you will expect to see: Jason and Loke

Anyone for some Blogarate?

Anyone for some Blogarate?

As a number of you will be aware Clarke has been doing some awesome work in the community/blog space.  The first of these is of course whooiz – if you don’t already have an online profile here I highly recommend getting one – which has plugins for a number of blog engines such as Community Server.  This enables you to not only reuse information from whooiz for your About page (see mine here) it also allows you to list friends, blogs you read etc.


The next feature that Clarke has been working on is the ability to rate a blog just by giving it a star rating – if you look closely at my blog you will see the rating bar at the bottom (currently with a “powered by Blogarate” sign under it).  Blogarate, according to Clarke’s post, is currently in private beta and we are already starting to see a collection of blog posts being rated.  Update your blog engine according to these instructions to start receive your ratings.