Microsoft Tag is a new service that allows you to create and scan a new type of 2D bar code. The new code uses a grid of coloured triangles to encode data and is a implementation of High Capacity Color Barcodes (HCCB) which was invented by Gavin Jancke at Microsoft Research. Microsoft Tag is an implementation of HCCB which uses four colors in a 5 x 10 grid.
Normally at this point we would have a discussion about the amount of data that can be encoded in a tag but in this particular case the issue is irrelevant. The tag has enough storage to hold a short URL and when the user scans the tag the URL is decoded and the data associated with the tag is retrieved. What this means is that a tag reader has to have a connection to the Internet to obtain the tag's data.
Currently all of the tag data is hosted by Microsoft servers and this means that any tags you create go via Microsoft. One advantage of this is that Microsoft can supply you with the statistics of how often a given tag has been scanned the downside is that it puts Microsoft in control.
An iProgrammer tag
Currently you can visit the Microsoft Tag web site and create any number of Tags for free. Tags can encode a URL , plain text, a dialer or a vCard. Of course given the way that the system is implemented the Tag can be linked to almost anything given access to the server. There is also a very good range of phone Tag readers which are free to download. Support not only includes SmartPhones such as the iPhone and Android but Nokia N range, Blackberry and more. A single web site address is supplied for all reader downloads and this is a considerable simplification meaning users don't have to search for a reader. You can even opt for a Tag that has the URL of the download site underneath.
Although the triangular pattern Tags are quite attractive it is possible to take the pattern and reduce it to a number of colored dots at particular positions. These can then be used as the basis of a more general image that doesn't look as much like a Tag. Of course the problem with this is that an image that doesn't look like a Tag isn't going to be obviously something that should be scanned by the end-user. On the other hand it does provide opportunities for creative embedding of Tags into logos and icons.
The real question is what potential does the Microsoft Tag service have for the programmer? At first it looks as if the whole think is wrapped up and served to the end-user in a closed form. However there is an APi but you have to apply for a key to make use of it and there are no clear indications of who will or will not be allowed access. The API is .NET class library connected to a SOAP web service. You can write code that connects to the service, constructs a Tag and then renders it to a byte array where you can process it further. You can find out more and sign up at the Microsoft Tag Developers portal.
A QR tag
Of course Microsoft Tag isn't the only 2D bar code system. the best known is QR - which is a small black-and-white square containing dots. QR tags can store around 3000 characters and can contain URLs or any data you care to code up. There is an open source Java library - zxing - that creates and reads QR codes and there are many websites that will create a QR tag for you. There are also purpose built handheld QR readers and many phone bar code readers support the QR format. The downside is that there is no central point of contact for QR bar codes and finding a reader for a particular phone is therefore slightly harder for the user. QR tags are also black-and-white and arguably not as attractive - although they have been around for long enough to be instantly recognisable.
So does color and central control win out over monochrome and open source?
Related articles: Getting started with Microsoft Tag