Even before PDC 2008 I was starting to feel out of the loop. After developing in C++ for seven years I moved over to C# and needed to get to grips with not just the language but the whole framework. Four years later and this still had not happened. There was always something that I didn’t know, yet the work I was doing meant that as always, I only ever touched a fraction of what was available.
At the start of 2008 I was working in Spain and decided to cut my loses and learn the new stuff. This meant that I could start to look forward to investigating all the new things that had shipped with .Net 3.0 (WCF, WPF, WF); even then I had a lot to get my head round.
However fate played its part and we moved back to the UK in March 2008, which promptly put a stop to my plans of keeping up to date. I joined a company specialising in applications for Windows Mobile and whilst the new server-side code was C#, I was left on the legacy C++ stuff, concentrating on finding and fixing memory leaks, introducing smart pointers and thread synchronisation and generally trying to get the build and release process sorted out.
So now here we are in early 2009 and I’m finding the task of staying up to date technically, insurmountable. The only way to do this is to make a list and the list will have to be in a general priority order, which will probably change. I can’t tackle everything at once though (or everything ever) but I have two projects that I’ll need to start soon, so they’ll be my motivators. They should help to show what is important and thus drive what gets looked at first.
Project 1 - Windows Mobile
This project is a new version of our mobile product. It takes work from a customer’s system and displays it to a user on a mobile device. This will be written in C# using both the full and the compact frameworks and have to:
- Take data from a user’s system. At a minimum this means some XML conversion to convert the customer’s data into our format and back again.
- Get the new data onto the client and update the user’s system with a response. This sounds simple with the Synchronisation Framework.
- We don’t want to host the data ourselves. This sounds like Azure.
- The work that the client has to do is configurable and is basically a list of steps with input and output. This sounds like Work Flow (WF).
- The whole lot has to communicate. Enter Windows Communication Foundation (WCF).
- We’ve got to interact with a non-expert user on the mobile device. Could be Silverlight but currently that requires permanent internet access on a mobile device, so we might have to stick with WinForms (which I know). What about Windows Presentation Foundation (WPF)?
- The mobile client will still need some form of business model but will be driven from the database. This brings the Entity Framework into play. It’s had some bad press but I still need to look at it.
Project 2 - Administration Dashboard
This is a long overdue system and whilst we want it to to work with our current product, we’d like to host it in Azure and swap out the back end in time to work with the new version of the product. So, we are looking at:
- The front end. This IS going to be Silverlight. Management like the pointy-clickyness of it and whilst I’d like to keep ASP.net as a back-up, “we’ve” (not me) have sorted out all the potential problems with Silverlight that we could see. Ok, versions of a new technology like this are never new for long but I’d best get up to speed with SilverLight v2 whilst I can.
- Hosted in Azure. So Azure again.
- Comms will be needed. WCF again.
- Abstraction from the data store. Entity framework again (I think).
OK, where to start? I’ve already programmed in C# for 4 years before returning to C++ so this should be the easy bit. Let’s start there:
- New C# features (vars, extension objects, LINQ etc).
- Using extension objects with XSLT looks like it’ll give a potential solution to the XML conversion.
C# 4.0 CTP
- Dynamic types and whatever else there is.
Azure Services Platform
I’ve already been on what I believe to be the first workshop of its kind in Azure, so it makes sense to follow this up:
- Write up the workshop.
- Complete the labs.
- Understand how to get a URL to point to the cloud.
- Use Azure to host some HTML.
- Use Azure to host some Silverlight. I’ve already got as far as producing a bouncing ball in Silverlight so I’ll use this.
Silverlight on its own is no good for me. It needs to get data dynamically. I’ve already done a lot of the demos on design and standard “Flash” activities, so now it is time to look at Line Of Business needs:
- Silverlight labs on Comms.
- A little Silverlight app.
- A WCF service. Cool, WCF has been covered a little now too.
- Labs at this stage should be enough to decide if I need any more of it.
I’ll need to understand this a lot and especially from the Windows Mobile world.
- Implement my own synchronisation end points and understand when to do this together with what the implications are.
- Check support in the compact framework.
I’ve got to get past the labs this time.
- Small test application showing our standard entities.
- Control the designer to allow novice users to implement their own flow (within my defined limits) to drive the test application in different ways.
Is there any need to cover this now that I have done some Silverlight? Probably not until I need to.
That’s it! By targeting what I learn along the lines of what I need the technologies for, I have a fighting chance of keeping my skills up to date whilst taking advantage of the latest technology to put together functional applications that our customers will actually want to use.
Still a whole lot of work though. Help!