iTunes a bit slow on Christmas Day?

iPod Nano BlackAvey bought me a new iPod Nano for Christmas and it looks like I wasn’t the only one – iTunes visits skyrocket on Christmas Day

This is my first iPod and I think that the whole package – iTunes, the iTunes Store and the iPod itself – are absolutely great.

The iTunes Store just works, no fighting with a bad UI or long-winded purchasing process (although creating a user account on Christmas Day was a challenge!) and the tracks aren’t too overpriced. Installation of the iPod went smoothly and Sync-ing with iTunes is a dream – no hassles whatsoever.

I’m getting to grips with the wealth of content available, while fending off requests to download obscure RnB tracks (Teedra Moses who??) so Avey can upload them onto her N73… If anyone can recommend any good tech podcasts, It’d really be appreciated (how come there aren’t any BizTalk podcasts out there – hmmm, a gap in the market maybe!)

I’m now off to download some comedy for our drive to London tomorrow for the New Year – several hours of comedy from Al Murray, The Pub Landlord all for free can’t be bad!!

I might just be a convert to Apple – wonder if I can get BizTalk to run on MacOS….

Favourite C# Blog

One of my favourite C# blogs at the moment is ‘I know the answer (it’s 42)‘ by Abhinaba Basu (http://blogs.msdn.com/abhinaba/). Abhinaba currently works for Microsoft at the development centre in Hyderabad, India.

I really like this blog becuase Abhinaba goes beyond the code an explains why things work the way they do, getting deep into the MSIL (I’ve always been a fan of understanding how things work under the hood ;-)

Of particular interest are the following recent posts:

  1. Why can we only use constants in a switch-case statement – Investigating how the compiler handles switch statements ‘under the hood’ and explains why non-constants cannot be used with the case operator;
  2. Switches and jump tables – A more in-depth look at the switch statement;
  3. Conditional methods and their Parameter evaluation – Investigating the System.Diagnostics.ConditionalAttribute and how it can be used for conditional compilation;

Keep up the great work Abhinaba, I’ve lovin’ your blog!

Add DOCTYPE Declaration Component

Our current infrastructure supports over 200 interfaces with external trading partners in the B2B role. Unfortunately, some of the cXML partners cannot handle Xml Namespaces and insist on receiving DOCTYPES.

Although DOCTYPE’s can be added through the BizTalk mapper, we needed a mechanism to remove the Xml Namespace from the resultant message before passing through to a client. As a result, I created the Add Doctype Declaration encoding component (send pipeline) to add DOCTYPE’s and remove Xml namespaces.

Encode Component on Pipeline

The component uses an Xml Document object to parse the message and add the DOCTYPE declarations. In addition, the Xml Namespace can be removed if required using the [boolean] ‘RemoveNamespace’ property (if this is set to false, the namespace will remain in the final message.

Add DOCTYPE Declaration Component Properties

A project containing source-code and binaries for BizTalk 2004 can be found in the downloads area of this blog, or via this link.

This really is the first release of the component (think of it as beta) and although it is ready for production, there are a number of enhancements I want to make, including:

  1. Produce a version in .Net 2.0 for BizTalk 2006 (our production environment is currently 2004, hence the current code is targeted to .Net 1.1);
  2. For BizTalk 2006, have the component configurable at run-time rather than design-time;
  3. Identify the root element programmatically, rather than through a component property;
  4. Remove DOCTYPE addition from the component and use the mapper to add the declaration;
  5. Create a receive pipeline component to add an Xml Namespace based on a DOCTYPE declaration;

I hope this component will be of use, either in your projects or as a starter for enhancements. I will continue to update the code and release enhancements through this blog.

Happy BizTalking!

Visual Studio 2005 SP1 RTM!

As reported all over the blogosphere, Microsoft have now released Service Pack 1 for Visual Studio 2005 to RTM. Go and get it while its still hot!

SP1 provides over 70 improvements (annoyingly I can’t find anything that details those fixes), of note are the following:

  • New processor support (e.g., Core Duo) for code generation and profiling
  • Performance and scale improvements in Team Foundation Server
  • Team Foundation Server integration with Excel 2007 and Project 2007
  • Tool support for occasionally connected devices and SQL Server Compact Edition
  • Additional support for project file based Web applications
  • Windows Embedded 6.0 platform and tools support

I’ve yet to install the SP in my BizTalk development environment, but my general development instance works just fine.

Enjoy!

Map of the Internet – IPv4 Space, 2006

On his website at xkcd.com, Randall Munroe has an excellent ‘comic’ map of the IPv4 address space.

The map shows 256 numbered blocks each representing one /8 subnet of the available IP address space. Of particular interest are the blocks sold directly to governments and companies in the early 1990’s before the Regional Internet Registries took over allocation.

I’m fascinated that there were some some more foresightful companies than other, including:

  • Hewlett Packard
  • Apple
  • Ford
  • Ministry of Defence
  • Boeing
  • Prudential

I wonder where MSFT was during this gold-rush?!?

So thats how LINQ works!

When LINQ was first released, I sort-of missed the boat – I couldn’t really see how SQL type syntax in a traditional programming language such as C# or VB.NET could really work. I think it was more because every article I read on the subject (and that wasn’t many) didn’t offer me a ‘real-world’ example.

That all changed today when I read Charlie Calvert’s post about grouping of Lists in LINQ. Charlie has loads of great posts on the subject, including one for beginners…

Oh the beauty of LINQ!