Latest Tweet:
  • Loading...

votenow.jpgGadget Competition 2007 is a competition Microsoft have been running several countries around the world this summer/fall. The  voting in the Norwegian competition started 1. November. My FreeSMS gadget is currently ranked second, which is great, but I'm obviously aiming for first place… So, If you use my gadget and like it, it would be great if you go to the Norwegian Gadget Competition page, sign in using your Windows Live ID, enter the gadget gallery and rank my GratisSMS gadget. By voting you have a chance of winning Windows Vista Ultimate, Gaming Mouse or copies of Expression Web Developer.

You can also access my FreeSMS gadget directly on the competition site.

crmgadget.jpgI've been interested in Widgets/Gadgets for quite some time, and have written several blog posts on the subject. I've also written a few gadgets. The most popular one is the FreeSMS gadget. With more than 5250 downloads it's the most popular Norwegian gadget at the moment. So far all my gadgets have been targeted at consumers and end-users. I think this is about to change as more and more businesses see gadgets/widgets as a way to provide users with easy access to important data. Microsoft Norway arranged a contest among their ISV's on who could write the coolest Sidebar Gadget extending their application. Visma won the contest with a set of gadgets providing users with key performance indicators from their ERP system.

Last Friday Computerworld, the largest news papers for the Nowegian computer industry, published an interesting article written by Arne Søiland on gadgets/widgets (17.august, issue #27). The article discusses widgets/gadgets in general and how they bring the service oriented architecture all the way to the desktop and end user. Unfortunally the article isn't available online, but if you can get your hand on last Fridays issue of Computerworld I strongly recommend reading the article. I totally agree with the message of the article that these small, simple applications is an excellent way to make information more accessible to end users. Instead of having to open up some line-of-business application and click through several screens of information to figure out what you need to take action on, gadgets and XML feeds can push this information directly to your desktop. Clicking a link or button in the gadget can bring load up the business app, pre-loaded with the item you want to take action on.

"People are using this at home and are asking why they can't get the same thing at work" - Morten Strand commenting on widgets, IBM

I expect that more and more businesses are going to include gadgets/widgets as a natural part of their service oriented architecture. The .NET 3.5 release adds SyndicationFeed and REST/POX support to Windows Communication Foundation services, making it even easier to provide XML data to your gadgets. Hopefully I'll be writing my first work related gadget in a not a too distant future.

Jeff Atwood over at Coding Horror wrote a blog post about JavaScript being "The Lingua Franca of the Web". More and more developers are building fairly large object models and frameworks in JavaScript. Microsoft's own Ajax library is one example of this. The Dojo Toolkit is another. It looks like no matter where you turn, weather it's to Ajax web sites, Silverlight applications or Sidebar gadgets you're stuck with JavaScript as your programming language. It was about time Microsoft did something about the poor tool support for writing JavaScript in Visual Studio Orcas 2008.

The way Microsoft have solved the IntelliSense problem is really elegant. In order to do good IntelliSense you need a formal way to comment your code. You have to tell the IDE which parameters your functions expects and what they'll return back. The way you annotate your JavaScript to get IntelliSense in Visual Studio 2008 is by using Microsoft's all ready familiar XML commenting syntax (with a few twists). The next problem is that JavaScript is a scripting language (hence its name), so the IDE can't compile the code to do reflection. It has to interpret it dynamically. The problem is to figure out which other scripts will be loaded into scope by the time the script you're working is executed. When developing web apps you might have some inline JavaScript and other pieces in external JavaScript files. The way you hint to the IDE which scripts are loaded into scope is with a special "reference" comment. You tell Visual Studio which scripts you have "referenced" in your application. A simple example of this is included below. If you want a thorough introduction to the new JavaScript Doc commenting syntax in Visual Studio check out the post by Bertrand Le Roy from the ASP.NET team or this post by Scott Guthrie.

System.Gadget = function()
{
    /// <summary>Defines methods, events, and properties that are used to specify gadget configuration options in the Windows Sidebar environment.</summary>
    /// <field name="background" type="String">Used in a gadget to set the background image using a file path or to get the file name of the current background image.</field>
    /// <field name="docked" type="Boolean">Called from within a gadget to determine if the gadget making the script call is docked.</field>
    /// <field name="name" type="String">Used from within a gadget as a means to determine the gadget name as specified in the gadget manifest file.</field>
    /// <field name="opacity" type="Number" integer="true">Called from within a gadget to specify the percentage of opacity as an integer.</field>
    /// <field name="path" type="String">Called from within a gadget to display the file path for the gadget.</field>
    /// <field name="platformVersion" type="String">Called from within a gadget to retrieve the version of the gadget platform that the gadget is running on.</field>
    /// <field name="settingsUI" type="String">Called from within a gadget to specify the settings to display to the user and activate the user interface so that the user can bring up the Settings dialog box.</field>
    /// <field name="version" type="String">Called from within a gadget to retrieve the version of the Microsoft Windows operating system that the gadget platform is running on.</field>
    /// <field name="visible" type="Boolean">The gadget's visibility status.</field>
    this.background = "";
    this.docked = false;
    this.name = "";
    this.opacity = 0;
    this.path = "";
    this.platformVersion = "";
    this.settingsUI = "";
    this.version = "";
    this.visible = false;    
}

The next piece of the JavaScript IntelliSense puzzle is to figure out how to represent the object model in a clean way in the IntelliSense popup window. JavaScript don't have any built in structures for interfaces, events, properties, name spaces, classes and methods; things we take for granted in the .NET framework and other object oriented programming languages. How ever JavaScript do support many object oriented programming concepts, and in the later years this have been exploited to the full extend by developers to build fairly complex object models. Ray Djajadinata wrote an excellent article for the May 2007 issue of MSDN Magazine on how to "Create Advanced Web Applications With Object-Oriented Techniques". In his article he discuss how to use object-oriented techniques to build more manageable and better scripts for your web applications.

After reading the article I figured I'd give the new JavaScript functionality in Visual Studio 2008 a go and build my own object model in JavaScript. VS did a good job ad aiding me in my JavaScript development, but my JavaScript object model didn't turn out as nice as the Microsoft Ajax Library. I couldn't figure out how to arrange classes into name spaces, how to implement an interface and so fourth. But since Microsoft have open sourced the client side of their ASP.NET Ajax framework all I had to do was to take a quick peek at the source code to figure out how they where doing their magic. Turns out the Ajax team have built something they call the "Type class", which is a typing and reflection system for JavaScript extending the object-oriented programming functionality. Using the Type class you can add typing information about your JavaScript, and do things such as registering classes, namespaces, implement interfaces and use inheritance. Visual Studio 2008 understands this typing system, so that when it executes/interprets your script to provide you with IntelliSense it has the information needed to provide you with a familiar developer experience, with the same icons for namespaces, classes, methods, interfaces and so fourth.

After playing with the new JavaScript features in VS 2008 and seeing how easy it was to hand code JavaScript against the Ajax client libraries another large JavaScript API came to mind. The Vista Sidebar Object Model. I've previously blogged about development of Vista Sidebar Gadgets, and how to do some advanced stuff like .NET interoperability, so I'll skip the fundamentals. As part of the Sidebar Microsoft ships a Sidebar Object Model you can program against. This object model contains 25+ classes with a bunch of properties, methods and collections. Using the Sidebar Object Model you can do things like open file, get battery information, monitor network availability and so fourth. At the moment there is no tool support facilitating you when using the object model. You're pretty much stuck with the MSDN documentation. You'll find the structure and naming of the Sidebar Object Model quite familiar as a .NET developer, but you still have to check the reference to see which properties and methods each object supports. Microsoft haven't announced anything about better tool support for Sidebar Gadget development so I figured I might as well take matters into my own hands.

 SidebarIntellisense.gif 

Using the Microsoft Ajax client framework and the "typing system" provided by it I've stubbed out all the namespaces, classes, methods, collections and properties of the Sidebar Object Model. I've created a 700+ lines long JavaScript files containing nothing but an well commented (copy and paste from MSDN) object framework. So when you want IntelliSense for your Sidebar Gadget all you have to do is "add a reference" to the Sidebar.IntelliSense.js script file using the special commenting syntax described above. By including this reference comment Visual Studio 2008 will bring the Sidebar Object Model into scope when you're inside the editor. But if you don't include the Sidebar.IntelliSense.js file in a script tag in the gadget HTML file it won't affect your gadget at runtime. When you're ready to deploy your gadget you simply delete the IntelliSense script file from your gadget folder (it doesn't provide any runtime functionality anyway).

NB: The current state of the IntelliSense script is a proof of concept/prototype/sharing of an idea, and not a well tested replication of the Sidebar Object Model. If you use it and get runtime errors in your gadgets it probably means I've miss mapped some class or properties. If that's the case, just update the script your self, or drop me a comment on this post. If the gadget community picks up on this I might team up with fellow Regional Director Jeremy Boyd from New Zealand who have create a Visual Studio project template to kick-start your Sidebar Gadget development.

Today Microsoft announced another piece of amazing technology. After an impressive MIX event, you'd think that Microsoft had shared all their Web 2.0 ideas. Oh boy was I wrong. Popfly is a new product that enables end users to visually create mashups, web pages and gadgets. It's built in Silverlight, and the UI looks amazing. You create a new Popfly mashup by dragging and dropping "blocks" onto a design surface, setting a few properties on the blocks and connecting them together. A block is an encapsulated piece of code wrapping some kind of online service, or some presentation logic.

The concept is similar to Yahoo Pipes, but Microsoft have pushed it even further. I've previously blogged about Yahoo pipes, and my impression is that it's fairly good at combining data, but it's presentation layer is really limited. You basically get some kind of XML output, but you need to build a sleek presentation layer your self. In Popfly you have several really good looking UI components you can connect to your Web 2.0 data sources. Much of the UI pices is Silverlight, but you can also customize the UI yourself by editing the HTML output. Oh, did I mention Popfly got an HTML/JavaScript editor, written in Silverlight, with intellisense? Amazing!

Another key component of Popfly is the community aspect. You can create, store, share and distribute your Popfly mashups easily, in the same way we're used to in the Live Gallery. Once you've found a mashup you like you can choose to embed it onto your page, or even download it as a Sidebar Gadget!

At the moment the Popfly is in a really closed Alpha. I've requested an invitation, and is trying to pull a few RD strings to get access. I can't wait to get a chance to play with this myself. Oh, btw, turns out Andy Sterland is working as a program manager on Popfly. I got a chance to meet Andy in the Imagine Cup world finals last summer. He was part of the UK team in India.

While waiting for Popfly access, you MUST check out this amazing 15min video tutorial covering all major aspects of Popfly.

Some Popfly links:

This post is the second in a series of posts covering how to send free SMS messages using the Ung1881 web site. The first post discussed how to use screen scraping to wrap the Ung1881 web site into a .NET library we could use to send messages from the command line. In this post I'm going to discuss how to create a Vista Sidebar Gadget that allows us to use the .NET library to send free messages.

 Now that we have a nice and clean SMS library at our disposal it's time to do something more fun (and useful) than sending messages from a Console application. The next step is to create a Vista Sidebar Gadget that uses the .NET library to send SMS messages. I'm not going to walk you through the basics of a Sidebar Gadget in this post. There is an excellent article for absolute beginners up on MSDN. The focus of this post is going to be .NET interop, and how to read phone numbers from your Vista address book.

Throughout the development cycle of Vista we've seen various versions of the sidebar. I still remember seeing some awesome WPF gadgets up on Channel9 when Vista still was known as Longhorn, and all we had was early CTP builds. However, as most of you know the final version of the Sidebar is limited to HTML, CSS and JavaScript. To many (including me) this was quite a disappointment…

To be honest, it's not fair to say that Vista Gadgets can't run .NET code. You can expose your .NET code as COM object, and it's fairly easy to create COM instances from script languages.

The real problem is to register your .NET code for COM interop. This involves modifying your code to become COM compatible and to create a MSI installation package to register and distribute your code. This is to much hassle for a simple gadget.

Thankfully Tyler (he doesn't include his full name) have found a really elegant solution to .NET Interop in Gadgets, and have posted an excellent article on this on "The Code Project". You should definitely check out the article. His solution to the problems involves creating a general purpose GadgetAdapter, which is a .NET assembly, that supports COM interop, that can load other .NET assemblies dynamically using reflection. The GadgetAdapter assembly is registered on the end users machine using shell scripting from JavaScript. So the first time you use the interop layer the GadgetAdapter gets registered on the clients machine. Once the GadgetAdapter is registered you can create an instance of it from your own gadget script and load up any .NET class you want from your own assembly.

So to backup for a second, your Gadget folder structure looks something like this:

In your Gadget Script file all you have to do to create a new instance of a .NET type is this:

// Instance of the GadgetBuilder to load/unload .NET assemblies. See GadgetInterop.js.
var builder = new GadgetBuilder();         
    
// Initialize the adapter to call .NET assemblies.
builder.Initialize();

// Use the builder to add the username and password as constructor argument values.
builder.AddConstructorParam(username);
builder.AddConstructorParam(password);
    
// Load the Ung1881.dll assembly and create an instance of the Ung1881.Ung1881Client type.
ung1881Client = builder.LoadType(System.Gadget.path + "\\bin\\Ung1881.dll", "Ung1881.Ung1881Client");
    
//Get values from the UI.
var number = txtPhoneNumber.value;
var message = txtMessage.innerText;    
    
//Sending the message
var status = ung1881Client.SendMessage(number, message);

The Ung1881Client is a new class I added to the library to make it even easier to use it from a Gadget. The class takes care of wrapping long messages into smaller chunks, and it returns a status code instead of throwing exceptions when something goes wrong.

During testing of the gadget I discovered one bug/issue with the GadgetInterop JavaScript library provider by Tyler. If you turn of UAC (the "cancel or allow" stuff in Vista), or right click and run Sidebar.exe as administrator, the gadget stops working. After doing some debugging I figured out that I was unable to load the GadgetAdapter. After digging some more I located the bug in the RegisterGadgetInterop function in the GadgetInterop.js file. The problem is that if you run with out UAC, or run sidebar.exe as an administrator, you can't write to HKCU (Current User). Instead you have to register the GadgetAdapter under HKLM (Local Machine). I have notified Tyler on the Code Project message board, but article isn't updated. I've included the updated version of the RegisterGadgetInterop function below:

////////////////////////////////////////////////////////////////////////////////
//
// Add the Gadget.Interop dll to the registry so it can be used by COM and
// created in javascript as an ActiveX object
//
////////////////////////////////////////////////////////////////////////////////
function RegisterGadgetInterop()
{
    try
    {
        // Full path to the Gadget.Interop.dll assembly
        var fullPath = System.Gadget.path + assemblyStore;
        var asmPath = fullPath + assemblyName;
            
        // Register the interop assembly under the Current User registry key
        RegAsmInstall("HKCU", progID, "Gadget.Interop.GadgetAdapter", guid,
            "Gadget.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9389e9f4d8844504",
            "1.0.0.0", asmPath);
            
        if(InteropRegistered() == false)
        {
            // Try Register the interop assembly under the Local Machine registry key
            RegAsmInstall("HKLM", progID, "Gadget.Interop.GadgetAdapter", guid,
                "Gadget.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9389e9f4d8844504",
                "1.0.0.0", asmPath);
         }            
    }
    catch(e)
    {
        System.Debug.outputString("RegisterGadgetInterop fails: " + e.message);
    }    
}

Another interesting feature of the gadget is the Vista Contacts integration. Since this is an SMS gadget you obviously want to access your address book to look up mobile phone numbers of your friends and family. This is fairly straight forward, since contact support is included in the Vista Sidebar Object Model. The function reading the address book and adding contacts who have a mobile phone to a drop down list is included below:

///////////////////////////////////////////////////////////////
//
// Load contacts from the Vista address book.
//
///////////////////////////////////////////////////////////////
function loadContacts()
{
    var contactMgr = System.ContactManager;
    var contacts = contactMgr.Contacts;
    var contact = null;
    var element = null;
        
    for(var i=0; i < contacts.count; i++)
    {
        contact = contacts.item(i);        
        if(contact.mobilePhone != "")
        {            
            element = document.createElement("option");
            element.text = contact.name;
            element.value = contact.mobilePhone;
            ddlContacts.add(element, ddlContacts.options.length);
        }
    }
    
    element = document.createElement("option");
    element.value = "";
    
    if(ddlContacts.options.length > 0)
    {
        element.text = "<Velg kontakt>";
        ddlContacts.disabled = false;
    }
    else
    {
        element.text = "<Ingen kontakter>";    
        ddlContacts.disabled = true;
    }
    ddlContacts.add(element, 0);    
    ddlContacts.selectedIndex = 0;
}

Gadget floating on desktop showing contacts

I've gotten a few requests from friends who want their Outlook 2007 contacts to show up in the gadget. Since this isn't supported directly by the Vista Sidebar Object Model I'd have to do the Outlook 2007 interop my self. I assume this wouldn't be too hard, but I haven't had time to figure this out yet. Drop me a comment if you have any good resources on how to read the Outlook 2007 address book from script. However, if you're running Outlook 2007 I have something far cooler up my sleeves for the next part of this series on how to make the most fun out the SMS library!

The download link points to the Windows Live Gallery site, so if you download and like the gadget please rate it. Feel free to post any comments, suggestions, questions or feedback.

I love Team Trafikks "Bus Oracle". Basically it's a web site where you can ask about bus schedules using "natural language". So you can give the "oracle" questions like "when does the next buss from A to B leave?", or even more advanced questions like "when do I have to take the buss from A to be at B after 19.00 Monday?".  The "oracle" is implemented as a student project at NTNU, and made available by the bus company in Trondheim.

At the moment the "oracle" is available on Team Trafikks webpage or by SMS. There is no open service interface to implement your own clients, but I love to use this small, but brilliant service, as an example in various presentations. I've implemented both Live.com and Sidebar gadgets using the service previously, but I haven't gotten around publishing a version running on the final version of Windows Vista until now!

gadgetgallery.jpg

oraclegadget.jpg

The gadget is really simple and let you ask the "oracle" questions directly from your Windows Vista Sidebar. To install the Gadget simply click the button bellow:

Tip: A Gadget is just a zip compressed folder with a .gadget extension. In order to get the "proper" installation experience you need to add a new MIME header on your server. Simple register the application/x-windows-gadget MIME-type with the .gadget extension.

I've also written a MSN Messenger robot allowing you to ask the "oracle" questions directly using MSN Messenger. The robot have been a little unstable, but I've finally gotten around to make the code more robust and found a more reliable host for the server. To access the "oracle" on MSN, simply add bussorakel@hotmail.com as a new contact on MSN Messenger.

msnoracle.jpg

If you live in Oslo there is a similar service available from Trafikanten. A MSN Messenger robot is available at trafikanten@hotmail.com, and I'm currently working on a Sidebar Gadget version as well.

ScreenshotWant to congratulate Eric Carr (he need to get something up on his site) as the winner of the Gadget development competition I helped arrange as part of MSDN Live spring 2006. Eric wrote three really cool gadgets for Live.com (and MSN Spaces) that you definitely should check out:

Eric is the lucky winner of a Xbox 360! Looking forward to see you online on Xbox Live.

 

During the MSDN Live events this spring we announced an Gadget development competition. Just wanted to write a quick reminder and encourage everyone to give gadget development a try. There haven't been that many contributions, so if you write a gadget you'll have a fair chance at winning the Xbox 360.

So, the rules are simple: Write a Live.com or Vista Sidebar gadget and send it to me at jonas@follesoe.no, or post it in the http://www.microsoftgadgets.com/ gallery.

The deadline for the competition is august 15. The winners will be announced late august/early september.

You'll find all the information needed to get started over at http://www.microsoftgadgets.com/. You can also check out the example code and slides from the MSDN Live events in this blog post.

God summer, and good luck!

I’ve finally gotten around uploading the sample code and presentation slides from the MSDN Live presentations I’ve been doing with Microsoft over the last couple of weeks. For those of you who didn’t get a chance to attend MSDN Live / Microsoft days this spring we’ll be recording some of the content in Oslo may 15th. I’ll write a blog post as soon as the content is available online.

In the mean time you can download the slides and Gadget code, and perhaps throw together something your self for the Gadget competition.

Introduction to the .NET Framework
I’ve only uploaded the slides from this presentation. The demos are fairly straight forward, a simple web service and a simple client retrieving data from this service. If you attended this session, and want to learn more, my suggestion is to download the SDK, install VS2005 and play with some of the introduction tutorials. I also have two book recommendations:

These are easy to read, short, fun, and colorful introductions to web and windows development on the .NET platform. It walks you trough a full program, or a full website trough out the book.

The slides from the presentation is available here: Introduksjon til dotNET.ppt


Gadgets, Gadgets, Gadgets
I’ve uploaded the sample code, VS2005 code snippets and slides from this presentation. The sample code contains the “Bussoracle” for the Live.com platform and the Vista Sidebar. If you only want to run the gadget you can download the Sidebar version or click this link to add it to your Live.com start page.

Screenshot of the Live.com and Sidebar version of the Bussoracle Gadget

There are a few things you have to keep in mind when doing gadget development for Live.com:

  • For gadget development you need to add live.com and localhost to your trusted sites list.
  • If you’re doing gadget development on IE7 Beta2 you need to add the following registry key: [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_XMLHTTP_RESPECT_ZONEPOLICY] "Iexplore.exe"=dword:00000001

By default IE7 Beta 2 will ignore your trusted sites for XMLHTTP requests, so in order for you to do local development you need to tell IE to look at your trusted sites before allowing/disallowing an XMLHTTP request.

To use the Visual Studio 2005 Code Snippets I showed during the presentation you need to copy the files to your local snippet folders. By default this is located under “Document and Settings\Your User\My Documents\Visual Studio 2005\Code Snippets\XML”. As I mentioned during the presentation, Visual Studio only supports code snippets for XML, C#, VB.NET and J#. How ever, you can create JavaScript code snippet as XML snippets, and add them to your code inside an XML comment tag, and then cut/paste into your JavaScript file. I’ll show this trick in the recorded version of the session.

For those of you who want to compete in the Gadget competition I’ll write a new post with content rules and details.

The code and slides are available here: Gadgets.zip

Better user experience with Windows Presentation Foundation 
The expression splash screenFor this presentation I’ve only uploaded the slides. The demo is basically a walkthrough of the Fabrikam tutorial that ships with the Expression Interactive Designer. I would strongly suggest walking trough these tutorials your self to get a feel of what Expression Interactive Designer can do.

The presentation is available here: WPF.ppt

I hope you all had a good  time at the MSDN Live / Microsoft Days Event. Any feedback is appreciated!

SBGDevShowcaseEver since the Xbox 360 launch in December various third party community web sites accessing and tweaking the publicly available Gamer Card data have been available. Most of these sites have used screen scrapping to access the Gamer Card information available on the HTML site intended to integrate on your blog. I’ve previously blogged about MyGamerCard.net, which is an excellent community site that lets you create custom gamer card pictures you can use on your blog, as well as provide achievement leader boards.

The Xbox team has obviously taken this community interest in game statistics seriously, and has started something called the “Xbox Community Developer Program”. You can apply to become a member of this program to get access to a private forum on xbox.com, as well as a private XML feed with all the Gamer Card information, as well as a list of previously played games. This is way easier and faster than using screen scrapping to retrieve this information.

I applied by sending some reference projects and information about my self, and got approved to become a member of the program. You can get more information about the program, what you get and how to apply by clicking here. They also have a Xbox Community Developer Program showcase site, where you can check out what other people are using the feed for.

A few weeks ago I wrote a blog post about the Xbox 360 Gamertag Creator. This is a third party site that generates themed pictures out of your gamer card information. This week I came across another similar service called MyGamerCard.net. Now, the cool thing about this one is that it logs all the data it grabs off xbox.com. So, based on this data they create leader boards based on your gamer score. The guy in lead, ST TheKing, currently have 19415 gamer points, which is a lot (considering each game gives you 1000 points at most, and there weren’t that many launch titles available).  My current gamer score is 3100, almost 400 behind my good friend Petter (GameMe). Hopefully I’ll catch up with him during the weekend.

One of the cool things about the new Xbox Live system is the gamer cards. Basically the gamer card is a small badge with your gamer tag, your online reputation, a picture, your latest played games, and last but not least; your gamer score. Your gamer score increases as you unlock achievements in different games. Each full blown title has 1000 gamer points to give out, while the Xbox Live Arcade games have 200 points. Currently I’ve only completed one game – Need for Speed Underground. I and my girl friend also completed the single player story in Kameo, but we still have 400 gamer points to fight for.

When you play against people on Xbox Live they can view your gamer card and give you feedback (preferred/non preferred player), and that will affect your reputation. You can also show off your gamer card by embedding it to your homepage. This is done by embedding an iframe on your page displaying the following URL: http://gamercard.xbox.com/SnowJoy.card

One disadvantage using iframes is that it’s not compatible on all browsers and most online forums won’t allow such html in your posts. How ever, most forums allow you to use images in your posts, so today I came across a simple service called “Gamertag Generator”. Basically this service is a bunch of custom image generators reading information from gamercard.xbox.com and rendering it out as an image, using different themes. I’ve included all the available looks for your gamer tag in the bottom of this post. This is a great idea, and I was actually thinking about writing this my self for my custom blog theme. Now I can see how the different look available on “Gamertag Creator” fits on my new design (soon to be published) before I write my own. I might actually write if anyhow as an example on how to do screen scrapping and publish the article up on msstudent.no.

Default Slim Xbox Forum Hawaii Minimal Black Team Xbox Bungie

<March 2010>
SunMonTueWedThuFriSat
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910