Imagine Cup 2008 is over. Another GREAT edition has challenged more than 100 thousands students from all over the world.
This year I’ve been invited as a judge in the Software Design category; it’s hard to describe the amazing week I spent with the competitors, other judges and all the Microsoft ADEs and staff. I thought that sharing some picture might be a good start; however, if you have any question on this or previous edition of IC…don’t hesitate to contact me or add a comment to this post 
Louvre (Paris) was the location of the finals!
Italian Team
Team UK
Team China
Team Korea
Team Vietnam
Left to Right: Fotis Draganidis, Caroline Phillips, Emanuele Arpini
Embedded Solutions entry
Live ECG to trees!
Myself and Millo (Emanuele Ognissanti)
Myself and Guillaume Belmas
Myself and Tiago Cardoso
Vincent Bellet and (his) french food
Pyramid Iceberg
Simon Brown and the Women In Technology panel
Some of the competitors from IC
Hotel de Ville Party
Going around Paris
Notre Dame de Paris
Looking the Champs-Elysées
View of Paris from the Boat trip
The Imagine Cup Cup :)
And the winners are…Australia!!!
Joe Wilson and S. Somasegar with all the winners
Technorati Tags:
Imagine Cup
My blog has been nominated in the ComputerWeekly.com IT Blog Awards 08.
If you have time (I assume you read this blog since you are here
)…
please submit a vote for my blog here. 
Please do not hesitate to comment this post if you have any feedback/content request/comment on this blog…Thank you for your support! 
With Polar bears drowning, glaciers melting, forests being cut down…preserving the environment is a serious issue for the world.
In Microsoft we are investing our resources to foster environmental sustainability.
Imagine a World Where Technology Enables a Sustainable Environment is the theme of the Imagine Cup 2008 competition. It will be a pleasure for me this year to judge the finalists teams (or may I say the brightest technology students in the world
) in the Software Design invitational.
The competition will begin next week in the magical location of Paris, France. I expect it will be very though to award only the top 3 teams…since I’m sure we will see a lot of great projects and ideas from all over the world!
Stay tuned, I’ll keep you updated! 
Based on the questions I received in the last period, I’d like to share here some links that will eventually help you building your Silverlight 2 applications.
Runtime
- Runtime (required from client machines, to run Silverlight application). You can skip this if you are installing the Dev Tools.
Development Tools
Official Resources
Screencasts
Tutorials / Tips&Tricks / Blogs
Showcase / Demo
Thanks to all the authors.
Technorati Tags:
Silverlight
As I said in the previous post, .NET 3.5 Service Pack 1 addresses issues that were found through a combination of customer and partner feedback, as well as internal testing. Overall, .NET 3.5 Service Pack 1 offers customers many new features and improvements in responsiveness, stability and performance for Visual Studio 2008 and .NET Framework 3.5.
Now…obviously I trust the WPF team
, but I was curious to test the “real difference” given from the .NET Framework SP1 (Beta); for the sake of a perf exercise, I’ve written a tutorial to compare the previous BitmapEffect with the new Effect, which is one of the new classes with HW-acceleration support introduced by the SP1.
You can download the source code for this tutorial here. Please remember that, in order to compile the project, you need to install the .NET 3.5 Service Pack 1.
1) Button with Blur Effect
The first sample I’ve created is a Button with a Blur effect.
The Radius property of the Blur effect is bound to a slider, which allows me to change easily its value at runtime.
1: <Button Content="Ciao" x:Name="button" Width="400" Height="150" Grid.Column="1" Grid.Row="1">
2:
3: <!-- FAST, HW ACCELERATED -->
4: <Button.Effect>
5: <BlurEffect Radius="{Binding Path=Value, ElementName=slider}" />
6: </Button.Effect>
7:
8: <!-- SLOW, SW ACCELERATED (deprecated) -->
9: <!--<Button.BitmapEffect>
10: <BlurBitmapEffect Radius="{Binding ElementName=slider, Path=Value}" />
11: </Button.BitmapEffect>-->
12:
13: </Button>
After running and profiling this sample (how-to later in this post), these are my empirical results:
- Bitmap Effect (SW Accelerated):
- peek of 8.4 MB video memory usage
- Effect (HW Accelerated):
- peek of 1.7 MB video memory usage
- Assumptions:
- These results have a "quality meaning" only, since they depends on many factors such as environment/machine hw/memory….
As expected, the Effect is 5 times faster then a Bitmap Effect.
2) StackPanel with Animating Blur Effect
Running the Perforator tool with a slightly more complex sample, the results are stunning: you can see a huge step in the memory usage, from 150MB (sw acceleration) to 16MB (hw acceleration)…an outstanding 1000%!!! 
3) HOW-TO PROFILE AND MEASURE PERFORMANCE
I would like to share quickly how I’ve done the previous tests.
- First of all you need to download the Perforator tool, which come as one of the tool in the Performance Suite. Download it here. More info about it here.
- After installing the Suite, you need to run WpfPerf.exe installed in the folder “C:\Program Files\WPF Performance Suite”
- The first time you launch WpfPerf, you will need to select Microsoft.WpfPerformance.Perforator tool from the list, and add it to your console.
- From Visual Studio, create and run (F5) your WPF application.
- Back to WpfPerf, hit Refresh and select the application you are debugging…and voila’, you will have access to some interesting information
These are Snapshots from my tests:
CVD…
These are just easy snippets of code, that don’t really require a lot of memory. However, although simple, they already clearly show some of the performance improvements provided from the .NET Framework SP1 (BETA). 
I can’t wait to install the SP1 RTM!! 
If you want to try this with your machine, you can download the source code for this tutorial here. Please remember that, in order to compile the project, you need to install the .NET 3.5 Service Pack 1.
Thanks to Ravi Nar and the Vista Squad folks for participating yesterday at the “Building RIA for Desktop, Web & Mobile using Silverlight & WPF” session in London. I really enjoyed presenting with you and answering your questions (it’s been a while since I had so many questions in such a short timeframe
)…and talk with .NET, LINQ, Mobile, ASP.NET…as well as Python and Flash developers.
As promised, you can download here the slides from the presentation. A video of the session, thanks to Ian, will be available on the Vista Squad videos repository.
I’d like to give here a few links as follow-up to the presentation:
1) WPF (Windows Presentation Foundation)
WPF is a next-generation presentation system for building Windows client applications with visually stunning user experiences. With WPF, you can create a wide range of both standalone and browser-hosted applications.
Interesting links:
I’ll publish the source code for some of the demo you’ve seen yesterday in the next post.
2) Silverlight
Microsoft Silverlight is a cross-browser, cross-platform, and cross-device plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web. (Luckily you all already knew the definition
)
Interesting links:
Again, I’ll publish in the next days the source code for the demo you’ve seen yesterday.
3) Silverlight for Mobile
Bringing Silverlight to devices expands the reach that developers and designers have when creating rich Internet applications. This enables them to easily leverage content, assets, and code that they are using today for browser-based Silverlight applications. Support for Silverlight on devices will quickly help change the landscape for the types of user experiences consumers can expect from their phones by bridging rich interactivity, wireless data, media and more.
Interesting links:
Feel free to ask me questions or to send me feedbacks, by commenting this post. Thanks again to everybody, I’m looking forward to meeting you again soon 
PS: just as a reminder, Forza Italia! 
Sign up for “The Wrath of Khan” meeting, organized by the UK user group Vista Squad.
The meeting will take place in Microsoft Cardinal Palace place, on 18th June, with the following talks:
- Building RIA for Desktop, Web and Mobile using Silverlight and WPF (Giorgio Sardo, UX Consultant, MS UK)
- Network Access Protection + Demos (Steve Lamb, IT Pro Evangelist, MS UK)
More info and agenda here.
PDC 2008 registrations are now open. Expect lot of fantastic news/announcements this year about Windows 7, Windows Mobile, Silverlight, Live Mesh… 
Dates of the conference are: 27-30 October 2008
Pre-conference on 26 October 2008
More info at: http://www.microsoftpdc.com
Or…have a look at Mike’s Blog, Content Owner of this edition.
Message for English readers: the following links are the videos from the session recorded at The Next Web Now! event with Steve Ballmer in Italy. All the sessions are in Italian.
Sono state rese disponibili per il download le registrazioni delle sessioni dall’evento The Next Web Now.
Potete scaricare il video della mia sessione su Silverlight for Mobile al seguente indirizzo:
Creare applicazioni vettoriali per dispositivi mobili con Silverlight for Mobile
Ne approfitto per rispondere a una domanda frequente: "Come posso iniziare a sviluppare applicazioni per la piattaforma mobile?”
Risposta: Fate riferimento alle versioni di Silverlight per Desktop, sfruttando quindi Expression Blend 2.5 + Visual Studio 2008. Piu’ in la’ nel tempo rilasceremo un runtime di Silverlight for Mobile, che vi permettera’ di visualizzare le vostre applicazioni desktop anche su piattaforma mobile. 
Vi segnalo inoltre i link alle altre sessioni della developer track:
Per tutte le altre tracks fate riferimento al link: http://www.microsoft.com/italy/eventi/mix/default.mspx
Grazie per tutti i feedback, alla prossima! 
Twitter is a free social networking and micro-blogging service that allows users to send "updates" (or "tweets" (TW); text-based posts, up to 140 characters long) to the Twitter website. [Source: wikipedia]
Being an user of MSN (ops, Windows Live Messenger) since many years now, I get used to keep my WLM Personal Message (PM) updated.
Now, if we think about the two technologies together, isn’t a tweet kind of a public version of our personal message? Yep 
For this reason, I’ve developed with my dear friends Stefano Santoro (Microsoft Student Partner from Italy) and Marco Bodoira (CE Embedded expert at BEPS) an add-in for Windows Live Messenger that keep the personal message of MSN synchronized with your Twitter status. Please note that this add-in is not supported. (More info about support below).
How does the add-in works?
When the add-in is turned on, it will keep your TW on Twitter synchronized with the PM on MSN; in fact your PM on MSN will be sent to TW within the specified polling time.
Where can I download the add-in?
You can download the setup file here, or download and view the source code here.
How do I install the add-in?
In order to start the magic synchronization, you need to install the Setup file (download it here). On the first restart of WLM, you will be asked to prompt your Twitter information (obviously your information will be saved and you will not be prompted to insert them again…). The only action required from you is to manually Turn On the add-in.
Why did you developed this add-in?
For fun.
To be used.
To show some example of interoperability between “everyday application” and web services in the cloud. 
The whole communication layer with the Twitter web service uses web services, with the following two functions:
internal bool SendTwitter(string message)
{
if (string.IsNullOrEmpty(message))
return true;
string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes(Username + ":" + Password));
string status = "status=" + HttpUtility.UrlEncode(message, Encoding.UTF8);
byte[] data = Encoding.ASCII.GetBytes(status);
try
{
HttpWebRequest req = WebRequest.Create(SetStatusUrl) as HttpWebRequest;
req.Method = "POST";
req.Headers.Add("Authorization", "Basic " + auth);
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;
Stream reqStream = req.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
return true;
}
catch
{
return false;
}
}
internal string GetTwitter()
{
string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes(Username + ":" + Password));
try
{
HttpWebRequest req = WebRequest.Create(string.Format(GetStatusUrl, Username)) as HttpWebRequest;
req.Headers.Add("Authorization", "Basic " + auth);
req.ContentType = "application/x-www-form-urlencoded";
XmlTextReader reader = new XmlTextReader(req.GetResponse().GetResponseStream());
string status = string.Empty;
if (reader.ReadToDescendant("text"))
status = reader.ReadString();
reader.Close();
return status;
}
catch
{
return "";
}
}
An interesting bit of this project is the setup file, that performs the following operations:
- Check pre-requisites
- Deploy assembly and configuration file
- Register assembly in the GAC
- Instruct programmatically WLM to run add-ins
- Instruct programmatically WLM to install our add-in
- Complete rollback of the installation in case you want to uninstall...
Is the add-in supported?
NO, the add-in is not (and will not be) supported. However we tested it successfully on Windows XP 32bit (English and Italian), Windows Vista 32bit (English and Italian)…with Windows Live Messenger 8.5 and Windows Live Messenger 9.0. Please let us know if you can install it on platforms other than these.
Does the add-in need any 3rd-party components or Plus or will it ask me to pay?
NO, NO, NO. The add-in requires Windows Live Messenger and the .NET Framework 2.0 installed only. If the setup detects that you are missing the .Net Framework, it will download and install it automatically for you.
What are your Twitter account?
Want to know more about Windows Live Platform?
Have a look at those great blogs from colleagues:
Any feedback?
Please feel free to add a comment or a feedback to this post!
Thank you
Happy twittering with MSN,
Giorgio, Marco & Stefano
With the Imagine Cup 2008 worldwide final in Paris coming on the way…I've been asked a few times recently to give some advice about "How to be successful in the Imagine Cup (Software Design invitational) competition?".
I am happy to share here some Tips&Tricks that I consider helpful, given the experience I had as former worldwide winner in IC 2006 (India) and mentor of the Italian team in IC 2007 (Korea) :)
This list is not complete, and it doesn’t pretend to be any official sort of communication (that you find here instead). Feel free to add your feedbacks or comment to this post.
- Believe in your project. If you don't like your idea, it will be tough to get other people to like it. You need to be passionate about what you have been hardly worked.
- Have fun. This is a corollarium from the previous tip. As long as you are having fun, you know you are going in the right direction.
- Release your potential. Imagine Cup is about innovation: try to go out from the common schemes...try to think out of the box. Your solution need to be realistic, but it doesn't need to be 100% implemented during the competition. I know lot of students are often "scared" to do not meet the deadline because they think they can not build a IC project while attending university courses. Maybe someone could not agree with me on this, but in my opinion IC final applications are proof of concept (in an advanced state) of what your solution could look like in the future. Summarizing...if you demonstrate that it's reasonably possible to build the real application within a 1-2 years timeframe, then you can concentrate on building just a (working!!) proof of concept for IC.
- Great Idea, Great Project, Great Presentation. Normally you would spend a considerable amount of time thinking about the right idea. Then you will go deep down in the development of your project; if you are developers, I’m sure you will still want to add a new great feature even 5 before the delivery of the solution. Fine…until you spend enough time on the presentation. If you are not able to present in an effective way your project, you might loose the judges consensus. I would suggest to spend at least one week on the presentation. To give you an idea, I spent 2 weeks preparing mine (slides, videos, audio, content, timing, demoing, doing rehearsals...). Moreover try your presentation at least a couple of time before going on stage, possibly presenting in front of different audience (technical, marketing, business, …)…and listen carefully to the feedbacks you will receive.
- Stay updated with all the latest Microsoft technologies. I'm sure you are all passionate and you read lots of blogs about alpha/beta/rc/... version of products coming out a few weeks before the final. Using those technologies in your project will be a competitive advantage against "older applications". Obviously this mean that you will need to work even harder (and possibly you will not find any support since the early stage of the build you are using). For this edition, you should try to use Silverlight or WPF or DeepZoom or all the new Live API or XNA or ASP.NET 3.5 or Mobile or….you have really a lot of fresh technologies to implement!
- Team working is essential. Each person in the team should have a defined role and he/she should be accountable for his/her specific area. It's amazing to see the results a good team can bring when working together.
- Make a business plan. Having a business research of your project would be an added value to understand how your solution is going to impact the market. Study the market size, position, stakeholders, competitors,.... We live in a world with more that 6.6B individuals: it's normally difficult (or impossible?) to be the only one in a market. You need to do research on potential business competitors, understand what make your solution different (and hopefully better), create a strategy, estimate costs...
- Backup plan: in the default scenario on the first day of the competition you are ready and prepared with your presentation. Your slides are done, your demo is working well, you've done the rehearsal of the presentation a few times...you are relaxed and comfortable. However...sometime you might have a last minute issue (the wireless is not working, the hw is broken, the batteries are down, your voice is down, one of the laptop didn't reach the location, you are ill, the demo suddenly stop working, you have localization issues, ...). [Note that I've seen all these at least once in the previous editions :)]. For this reason you should always have at least one back-up plan. Record a video of the demo, prepare different slides-deck, take screen-shoots, cache remote webservices or website on your machine, ... I know you don't have years to prepare your project before the IC final...but spending one night on a back-up plan is worth the pain, believe me. If then everything works fine (as I wish it will) you still have some resource to give away to journalists or partners ;)
- Networking: finally don’t forget that Imagine Cup is not just about you. It is about meeting the best team from around 60 countries in the world, Microsoft employees, subject matter experts, local MSPs. In such an amazing environment you can't stop learning and making exclusive experiences! Of course you need to concentrate and be focused on your project...but networking with your “colleagues” is one of the experience you will never forget in your life. :)
- Use the available resources: visit the Imagine Cup website and Channel8 websites...they are THE place where you can get all the information you need about Imagine Cup (rules, guidelines, history, interviews to judges and winner, tips, news, ...)
I hope this post will answer at least 1% of your questions. If you have any other question, feel free to post them in the official Imagine Cup forum...or if you have something specific for me, drop me an email at giorgio.sardo@microsoft.com
Eventually I’m sure that my friends Guillaume (winner IC SD 2004) and Stan (winner IC SD 2005) will be happy to share even more advices.
Imagine Cup changed my life, I will remember this experience forever. I really wish you best luck, and I hope to see you in Paris in July or next year in... :)
Ciao!
Technorati Tags:
Imagine Cup
[SOURCE CODE + BINARY OF THE EXPORTER APPLICATION ATTACHED TO THE BOTTOM OF THE POST]
The Deep Zoom composer is a great tool to manually design a composition. It is still in an early stage and I’m sure its team will add lot of interesting new features in the future. 
Meanwhile…I think that something where it lacks is the possibility to perform a proper batch export, given a lot of images.
SCENARIO: your want to show 500 pictures using DeepZoom. Due to the high number of pictures, you decide to implement a collection and positionate the images at run-time.
Using the batch export feature of the composer, you can only create several single deepzoom composition…and you miss the option to create a collection.
Luckily the Deep Zoom application comes with a tool (SparseImageTool.exe) which is installed in the application folder. The tool allow you to create a collection from the command line, giving as parameter the SceneGraph file and the images input folder (plus other interesting parameters).
Not too bad...but...what is the SceneGraph.xml file? This file is an xml file containing the layout of our scene, with the following format:
We now have all the tools and information to programmaticly create our collection, avoiding the direct use of the UI of the composer. As proof of concept, I created an application to create a Deep Zoom collection using C#, without opening the Deep Zoom Composer UI.
- The tool take as input the folder containing all the images to convert, the destination folder and the name of the collection. That’s it!!
- The generated output is a collection where all the images are overlapped in position (0,0) with their original dimension, and the zoom is set to 1.

Source-code of the application is attached at the bottom of this post.
I will move this application to CodePlex as soon as possible, since I believe the community could add more interesting features. Don’t you? 
PS: Once you exported your collection using this tool, you can start positionating/resizing/… images using C#…I’ll write a new post about this later…
Technorati Tags:
Deep Zoom,
C#
I was trying the new version of the Deep Zoom Composer…it’s just great!! Between all the new features, the tool now creates a Silverlight 2 application during the exporting process, in order to host your composition...easy peasy 
When you are exporting your project, you can select to Export as Composition or Export as Collection.
What is the difference?
- Collection: The tool will export image by image, creating a folder for each picture (and building the tiles specifically for each image).
- PRO: you are able to work with single images (showing/hiding/relocating) on runtime. Better support for incremental updates.
- CONTRO: you need to generate more tiles (thus you will need more space...).
- Composition: The tool will export the composition as an unique big picture, according to the layout you specify in the "compose tab".
- PRO: design-optimized version.
- CONTRO: you can't change the position of images inside the composition at run-time. You will need to replace the whole composition everytime you add a new picture.
Which one is the best option? Personally I would say that Export as Collection is much more flexible and it's probably going to work with most of the scenario. As a developer that likes to write code...I would go for it 
Technorati Tags:
Deep Zoom
Carlo, the PR and Marketing Director of Microsoft Italia, has been successful in the tough task to interview Steve Ballmer while visiting Italy for the Next Web Now! event. The interview takes place in Milan and in Rome, in the hotel, inside a car, at the airport…all in the same day! Well done!!!