- 2003: Barcelona, Spain - Theme: Link between people, information, systems, and devices, using Web services and.NET as the springboard.
- 2004: São Paulo, Brazil - Theme: Imagine a world where smart technology makes everyday life easier.
- 2005: Yokohama, Japan - Theme: Imagine a world where technology dissolves the boundaries between us.
- 2006: Agra & Delhi, India - Theme: Imagine a world where technology enables us to live healthier lives.
- 2007: Seoul, South Korea - Theme: Imagine a world where technology enables a better education for all.
- 2008: Paris, France - Theme: Imagine a world where technology enables a sustainable environment.
- 2009: Cairo, Egypt - Theme: Imagine a world where technology helps solve the world's toughest problems.
- 2010: Warsaw, Poland - Theme: Imagine a world where technology helps solve the world's toughest problems.
- 2011: New York, United States - Theme: Imagine a world where technology helps solve the world's toughest problems.
- 2012: Sydney, Australia - Theme: Imagine a world where technology helps solve the world's toughest problems.
- 2013: St. Petersburg, Russia - Theme: All dreams are now welcome.
Microsoft’s Imagine Cup is the world’s most prestigious student technology competition, bringing together student innovators from all over the world. If you have a great idea for a new app, bring it to life through Imagine Cup. With Microsoft resources and support, you can make a great app and bring your dreams to life!
The Imagine Cup began in 2003 with approximately 1,000 competitors from 25 countries and regions and has grown to more than 358,000 competitors representing 183 countries and regions in 2011. The Imagine Cup Worldwide finals have been held all over the globe. The Imagine Cup 2012 Worldwide Finals will be held in Sydney, Australia.
Improve your IT skill set and help advance your career with a free, easy to access training portal. Learn at your own pace, focusing on Microsoft technologies, gain points and get recognition. Courses being offered currently and with more being added in the near future are:
Microsoft Virtual Academy
A hackathon is a gathering of programmers to collaboratively code in an extreme manner over a short period of time. Hackathons are usually at least a few days (or over a weekend) and generally are no longer than a week. While programmers are working under a particular project, the idea is for each developer to be able to work on whatever he or she wants.
The roots of hackathons are with open-source projects and especially noted in the context of OpenBSD development. Most recently, many companies have adopted the hackathon concept, which generates some debate. Some view a hackathon as a way to allow development teams work on chosen projects. Non-proponents view it as a bastardization of the concept, given that the company owns the work results. Such critics view hackathons cynically, as merely a way for a company to get free developer work during a weekend or holiday.
Layouts and Views
When you’re producing an operating system without a specific device in mind, you need to make sure it’s flexible. After all you don’t know whether the user will be viewing the app on a PC with a large 27inch screen or a tablet with a 11.6 inch screen and a high pixel density. This can be a challenge for developers as they need to consider how their application will look across multiple devices in various orientations and in specific states (like when your app is snapped alongside another application).
In the C# world we solve this problem using the Visual State Manager. The following article will help you understand how to make sure your app looks great whatever device it’s used on:
Defining layouts and views
There’s lots of common functionality built into Windows 8 that you can take advantage of as a developer. You take advantage of this functionality by using Contracts. If you use the Search contract then a user will be able to search your app by swiping their finger over the right hand side of the screen and bringing up the search charm (the charms are a set of buttons that are always available to the user regardless of what app they have open that provide common functionality) As you’d expect, this allows users to search within your app. However, it doesn’t end there. Because of the way contracts glue everything together, it will also allow people to search within other apps too – or across the web for that matter.
Users can search from one single place, regardless of the app they are using or where they are in the system.
Adding Search to a Metro Style Application
Traditionally, when you’re looking to add sharing functionality to an app, you need to choose up front which other services you want to use. So you might decide that you really need to let users share with Facebook and Twitter and then code that in. Of course things change over time – who knows what kinds of sharing will be popular in future?
The share contract is a pretty cool way round this issue. If your app in a Share Source then it will be able to share specific content types with any app on the system that supports accepting those content Types. Apps that accept specific content are called Share Targets.
So you could share an image from your app with any app that is capable of accepting image files. As a developer you don’t need to know what app you are sharing with, you just code to a contract and Windows 8 becomes the middle man that manages the sharing.
You can share specific content types; however it is also extensible so you can define your own content types too.
A lot of research has gone into Windows 8. Specifically, how people like to interact with an operating system on various devices. So the team has looked at desktops, laptops and tablets, and how people work with a mouse or pen or touch. In fact every which way someone might use any individual element.
All this learning has then been bundled up into the default set of controls that are included in the SDK. It means that developers don’t have to face the complexity of re-learning everything to make their apps more user-friendly. They simply get best practice elements right from the start.
Adding controls and content shows a whole bunch of resources around controls.
Some of the research and guidance around Windows 8 and Touch
A lot of the APIs on Windows are asynchronous. The stated guideline is something like:
If the API is likely to take longer than around 50ms to execute, it is asynchronous
And so you will find that any API that accesses the network or the file system is asynchronous. This is designed to avoid producing apps that become unresponsive.
In some instances Synchronous methods have been replaced with asynchronous ones and these trip-up a number of developers, particularly those familiar with C#.
Two great articles which explain this well are:
Keeping apps fast and fluid with asynchrony in the Windows Runtime
Diving deep with WinRT and await
So that’s the 5 top areas where I think you will need to spend some time, if you are developing Windows 8 apps for the first time. If all of this seems a little overwhelming why not come along to one of Microsoft’s Windows 8 camps. Windows 8 Developer Camps are free, fun, no-fluff events for developers, by developers. You learn from experts in a low-key, interactive way and then get hands-on time to apply what you’ve learned.
Take the time to figure out what your app will be best at. Write it down! It’s called a “Best at” statement. Keep it short and to the point. Focus on one specific strength. Start the phrase with “My app is best at …”
Taking the time to write a best at statement helps in many ways
My app is the best at timing for bakers – Would a timer app for a baker have different features from the usual timer apps? Sure it would. I want a notification when it’s half way through baking time so I can turn the baking sheets around for even cooking. I want to be able to add 1, 2, or 5 minutes to the timer after it runs out when I look at the cookies and decide they need another 2 mins. I want to be notified if my volume is turned off so I don’t miss the timer and burn the cookies.
My app is the best at pong for making you laugh - my pong game will have a twist, it will randomly add small pictures on the board and every time you hit a picture it will either have an effect on the picture (like spin) and make different noises. Users can create their own library of pictures or take pictures with the built-in camera to appear so they can hit their friends. They can also record their own sounds to make when they hit a photo.
My app is the best at posting to multiple twitter accounts – users can log in to one or more twitter accounts. When they write a tweet they can select which accounts to use for the tweet. They can also define groups of twitter accounts and select to tweet by all accounts in that group. They can select one account to tweet, and other accounts to retweet.
My app is the best at keeping track of family gift lists – this app allows me to figure out who in my family wants what for Christmas and what has already been purchased. In the app you can define one or more families or groups of people. When there is a group I can invite the members of that group to add items to their wish list. Items can include URLs, photos, and store names where you can purchase the item. When another group member logs in they can see the other family members wish list and they can indicate if they have purchased that item. When you log in to update your own wish list you cannot see what others have purchased from your wish list. Users can also suggest items for each others wish list (e.g. parents suggestions for their kids wish list) when others add to your wish list you do not see what they have added.
Whether you are already working on an app, or have been thinking of writing an app. Take 15 minutes and come up with your best at statement and write it down. Then score yourself 10 points for getting started on your app! Don’t forget to check our Windows 8 resources page and Windows Phone resources pages to help you start building the app.
Do you see how the best at statement helps me think about what my app will be able to do, and the features that I should add to the app? The best at statement could appear in the description of your app in the store, so anyone looking at your app in the store instantly understands what your app is best at, so they are more likely to appreciate and use its features because they understand when to use it.