A tool for Zune Playlists: KritzZu

If, like me, you manage your playlists pretty much by folders on your source PC, you probably end up finding it frustrating to use Zune in order to create those playlists on your Windows Phone 7.

Desperate no more.  There’s a tool I found on a blog allowing you to create those playlist in a few keystrokes, KrizZu:

http://vishaljoshi.blogspot.com/2008/12/kritzu-zune-playlist-generator-based-on.html

The tool’s author, Vishal Joshi, offers it for free.

It’s a simple WPF application.  Zune’s playlist are stored in xml files and KritzZu simply generate those xml files.

Still, it saved me quite a few minutes!

 

Enjoy!

Transport for London Moves to Windows Azure

I follow quite closely Windows Azure Team blog.  Many of the blog entries consist in “Real World Windows Azure” article where they interview company executive who just moved a piece of mission critical asset from their premise to the cloud using Windows Azure.

I still wait to see a Canadian example of those post, but so far nothing came by!

But…  a quite interesting variant on those articles was published in mid-December.  This was a much bigger asset than usual and Microsoft did a special announcement.

image The Transport for London (TfL) Trackernet data feed is now hosted in Windows Azure.  This is a real time feed about the status of the transport network.

I found it especially interesting because the size and the visibility of the application.  Sure, we’ve seen a lot of start up trying it out over the last couple of months, but TfL is an established institution, European at that, moving a key piece of public asset to the cloud.  This is an excellent credential!

January 2011 Releases of the Identity Training Kit & the MSDN Online Identity Training Course

You can read more details on Vittorio Bertocci’s excellent blog.

You can find the training kit here and the courses here.

The training kit is an update from last June’s and now contain elements about ADFS, Windows Azure AppFabric Access Control v 1.0 (Septembre 2010) and Access Control Lab (Decembre 2010).

The courses seem to be migrated from the Channel 9 learning center.

 

Have fun!

Entity Framework Code First CTP 5

I wrote a blog post a while ago about Entity Framework’s POCO capability.  Basically, the current state is that you don’t have POCO.  You have a T4 template to generate classes without EF attributes or base classes, but it stops short of being a real POCO implementation once you start looking at the collections.

Microsoft is working on a real POCO technology, named Code First.  They just released the 5th CTP.

You can read Scott Gu’s blog about it here:  http://weblogs.asp.net/scottgu/archive/2010/12/08/announcing-entity-framework-code-first-ctp5-release.aspx.

The technology is quickly maturing.  The current CTP offers those improvements:

  • Better support for Existing Databases
  • Built-in Model-Level Validation and DataAnnotation Support
  • Fluent API Improvements
  • Pluggable Conventions Support
  • New Change Tracking API
  • Improved Concurrency Conflict Resolution
  • Raw SQL Query/Command Support

The alignment between model-level validation and data-annotation is very nice.  The entire configurability and override of convention is quite well thought as well.

This product is another great example of Microsoft embracing the open source ideas and making them available to the masses.

BizTalk beyond 2010

I recently blogged about the future of BizTalk and the roadmap of the product version Windows AppFabric.

An even more recent blog post shed some light on the topic.

Biztalk Executive Summary

We are planning to invest in the following main areas:

  • Deep Microsoft Application Platform Alignment

  • Enterprise Connectivity for Windows Server AppFabric

  • On-Premise Server and Cloud Service Symmetry

The three bullet points are interesting.

Basically, we should see BizTalk being less of a satellite product and getting more aligned with the platform.  Here I suppose we are talking about WF 4.0, WCF (e.g. Routing), AppFabric, SharePoint, etc.  .  But should also see Windows Azure AppFabric embracing more and more business integration features to a point of equating BizTalk server on premise.

The idea of having your ESB in the cloud might seem a bit far fetch since it’s quite essential to your operations.  But actually, because it is so essential, and because Enterprises are using ESBs for more services with more volume, the reliability and infinite scalability of the cloud becomes a very interesting attribute indeed.

Globalization and web services

I always found that globalization is the poor child of computer literature.  In any .NET book, you won’t hear specifically about globalization before chapter 23.  You can even tell it’s not shooting high on the radar when you look at the ways globalization was implemented in the three main front-end Frameworks of .NET:  WinForm (great!), ASP.NET (retrofitted in sub-optimal way in .NET 2.0) & WPF (totally Byzantine and not even in line with the rest of .NET Framework).

Since I work in Montreal –a bilingual city in a bilingual country– I’m confronted to globalization on nearly every projects I’m involved in.  So with time you do build up your bag of tricks & patterns around globalization.

I recently posted a blog talking about the W3C globalization specs for SOAP endpoints, WS-I18N.  I found that spec quite interesting because it describes a standard way to handle globalization at a web service level.

Actually, the most common approach I’ve seen (or architected myself) with globalization & web services is to not localize it.  For the time zone, you can usually get away by returning time in standard GMT and let the client localize it.  For languages, if your application is only bilingual (as is often the case in Canada), you can get away by returning the localized data in both languages since you will typically have properties such as FrenchTitle & EnglishTitle in your data contracts.

This approach has a lot of advantages.  First is simplicity of course.  But you also get other advantages.  For instance, if your application needs to flick between languages in a real-time fashion, with this approach you do not need to interrogate web services again (and potentially get different data, which would make the change language feature a refresh feature at the same time, which is weird).  It’s also easier to implement caching if you do not have out-of-band parameters also.

Sometimes you won’t have that luxury.  For instance, the project I’m currently working on is multi-lingual in the sense the number of supported cultures is open.  We therefore have to model our database with localized value in a vertical way (one row per culture).  For the services we were still lucky.  The only localized values are list of values (lookups) ; for those we manage them explicitly in the respective service.  The other services aren’t localized:  the content is in the language the user punched it in.  Also, we raise SOAP faults with English-message.  The architecture guideline there is that the services aren’t producing user-messages, they are APIs, they can raise faults, but it’s up to the application to interpret the fault and inform the user accordingly.

I think it’s important to think about the role of your services in your application, system, enterprise or context in general.  If it’s an API for smart applications to use, I would really aim at not localizing them.  This way you can rip the benefit of simplicity but also, you won’t get into confusion of an application being in culture X calling services in culture Y.  If your services are meant to be use by themselves or by thin applications (e.g. something doing an xslt-transform on the data returned by your services), you should manage the culture at the service layer.