Note: my day 1 notes are available at /2010/03/16/my-notes-from-mix10-day-1-keynote/

Things shown in today’s keynote

IE9
it is faster than before and hardware accelerated
HTML 5 support, like HTML5 video

Visual studio
ASP.Net MVC2
New publishing features

Open Data Protocol
How to embrace it, scale it (Azure) and monetise it (Dallas)
A cool demo of how it was enabled on netflix and how to query it via url manipulation

*Conference starts*

HTML5 is coming out
HTML5 when done right, makes web sites feel like apps, not pages.
Doing HTML 5 right is about designing around what HTML 5 apps will need, not a particular set of features
They realised that they needed to create a new robust platform to handle the new HTML5 features

  1. Performance
  2. IE9 and standards
  3. GPU powered HTML5
  4. IE9 platform previews and community feedback
  5. HTML 5 video

clip_image001[4]

There was a funeral for IE6 last week, the IE team sent flowers :-)
They have always recommended upgrading from IE6 to later ones, but they are still patching it

Performance
Different sites have different performance needs
clip_image002[4]

The IE9 team created a new javascript engine called "Chakra"
IE9 is now only JUST behind Safari 4, chrome and opera in terms of performance (300ms over a 60second test)
Chakra has a MUCH improved JITing engine, a lot of the performance increases come from this
Developers want to use the same standards with the same code across browsers
They love HTML5 so much that they want the same code to just work
They created a tool to trawl the top 7,000 sites and looked at what api calls are used across the sites
e.g. GetElementByID is most popular
clip_image003[4]

He gives a quick demo showing a HTML5 app running on IE9, chrome and firefox
The same code works exactly the same on all browsers
He runs a CSS3 selectors test, IE9 runs 576/576 tests correctly
Acid3 test right now gets 55/100
But they are more interested in getting the apis that developers use the most working first.
They are going to work with all the other vendors to help make sure the same code produce the same results.
Microsoft is working with W3C to address "same markup, different results"
Have submitted a bunch of new tests for W3C
GPU powered HTML5
HTML5 will push the limits of graphical limits
HTML5 performance will be enhanced by computer hardware

*Steve sinofsky comes on stage*

Will show how they built IE9 from the ground up to work on top of the Windows platform
Showing performance difference between IE9 and chrome
Show an animated HTML5 demo with lots of logos spinning around
"as you would expect" IE9 runs super fast, and chrome chugs at low FPS. They run it in FF and it runs a lot faster almost the same.
It is the same HTML5 code running on all of them.
Sinofsky brings up an SVG demo, which is clippy :-)

clip_image004[4]

Brings up the new developer tools in IE9
Can click on one of the SVG elements and the developer tool shows you the script that creates it
New demo, transparent balls all SVG elements, Has a javascript physics engine.
IE9 runs faster than chrome of course
But they show how IE9 doesn't quite do it correct. But they explain it is because everyone knows how CSS should work, everyone knows how SVG should work. But the interaction between the 2 isn't defined as well.

clip_image005[4]

Show a new demo: asteroids
It is done as SVG graphics + javascript.
IE9 supports DirectX acceleration. Everything is very smooth.
IE9 can handle a lot more asteroids at once (of course)
Everything is smoothed in sub pixel

ALL graphics in IE9 are hardware accelerated
IE9 platform preview is available today
plan on rolling out updates every 8 weeks

Standards they are supporting
HTML5
SVG 1.1
CSS3
DOM
ECMASCript 362

They announce what the secret 5th thing is: HTML5 video
Showing an update to the platform preview now, they open up youtube
HTML5 video loads up!
To "make the demo harder" they bring up a netbook, it has an onboard hardware video decoder
opens up a HTML5 video in chrome is a 720p video
the CPU meter shows both cores at 100%, but the video is still choppy
Bring it up in IE9. it is very smooth, both CPUs are at 50%
But he scrolls down and shows that IE9 is actually showing TWO 720p videos at once

New demo:
4 HTML videos. Web standards markup for borders, opacity, etc.
Chrome is a little chuggy and opacity doesn't work
IE9 is smooth, and opacity works so they all composite on top of each other

*Scott gu comes back on stage*

Next month they are releasing VS2010 + .net 4
VS2010 now supports full multi-monitor support.
ASP.Net 4.0 improvements
Asp.net controls create clean markup. Making it easier to do web standards such as CSS on
top
Viewstate footprint is a LOT smaller
Semantic URLs (asp.net routing)
Easier to do charting controls
MVC2 has been released

intellisense improvements
It is a LOT faster now (one test went from 17secs to 7secs)

Deployment improvements.
Can have one web.config with multiple sections to make it easier to have Production, Test, Dev
Can publish your application to servers easier (code + databases)

*Scott Hanselman comes on stage*

Showing an ecommerce site that was built with MVC2
It is a store that sells polo tops.
It is code that he inherited.
One problem is that he flicks between code and markup a lot, so with multimonitor support he can show each view on each screen
More intellisense improvements (it works like resharper now) can just type a word and it will find it anywhere in class names, using CamelCasing works to do shortcuts
Ctrl + , Navigate to: can type 'shopping' and it will find classes with that name, files with that name
Opens a class, it has a bunch of properties with are private. So he holds down alt to do a box selection and can delete (saves you having to do the old backspace, down arrow, backspace
Can generate sequence diagrams now

More MVC2 demo, explains areas to group sets of pages
There is javascript intellisense
Jquery templating library?
Uses a jQuery library to do a bunch of things on the client side like doing conditional ifs on if he should show a div or not, then loads a bunch of items into memory via JSON, then does databinding on elements
Uses "web deployment" to put it into staging
Rightclick deploy to package the settings
He selects 'staging' (because his web.config has prod, test, staging)
For the staging specification he has said that data should come from the staging database.
Now does a build and publish against staging

*Back to scott Gu*

They LOOOOVE jQeuery
Have done some things so far like intellisense
They put the jquery libraries on their CDN for you to use
They are excited to talk about their next investments to making jQuery better
They are contributing code to the jQuery project as well as a bunch of new tests

*John Resig comes on stage (create of jQuery)*

It is a purely javacript open source project
MS worked with jQuery and found a bunch of ways they could collaborate
Dynamic script loading and dependency management
Experimental templating engine

*back to scott*

Last year the released the "Web platform installer" (I love it, makes it so easy to set up a fresh PC)
Installs on core products like .Net, asp.net, visual studio.
But there is also a web application gallery, which includes community products like DNN, Joomla, drupal
They will be allowing you to install Orchard through this. Microsoft's new open source CMS. Talks about it are tomorrow
There have been 10 million downloads of the Web PI

Easier way to help you launch businesses through
Website spark : gives you access to visual studio and windows servers
Bizspark : access to all of the microsoft products (servers, apps, etc.)

*Michael comperda. Director of curse*

They do online gaming, like mmos (I use their tool to download all of my World of Warcraft add-ons)
Microsoft asked them to go into the Bizspark program
Before bizspark they used the LAMP stack, they had to keep on adding more and more servers, they couldn't keep up.
They migrated to .net
clip_image006[4]
They were able to handle 3x the traffic after they migrated.

*back to scott*
He recommends that you visit http://microsoft.com/web

*Doug Purdy is up "services based web development"*
Note: this speaker was the BEST of the day

Services powering experiences
How many people use twitter? Yeah lots
One of the interesting things about twitter, is that they give you a website to interact with lots of other people
But they have a rich range of experiences on different ecosystems, like AIR applications, twitter clients, etc.
We are moving more towards web apis
The website is just part of the entire ecosystem that use the api (mobile clients, twitter clients, etc.)
They call this services powering experiences
clip_image007[4]

If you embrace this world view and embrace it, there are 3 critical questions

  1. How do you enable many experiences? (odata)
  2. How do you make your web api scalable (Azure + SQL Azure)
  3. How do you make money? (Dallas)

On a website you can have advertisement, but how can you charge when people go through an api?

How do you enable many experiences?

Open, free, standards, HTTP, atom
There are 3 things that MS think a lot about, that they have needed to build on top of HTTP and atom pub
1. is the desire to have rich query apis. People like being able to issue queryes against the web api and get results back
2. people like programming against the api. But everyone does it differently
3. the desire to have rich metadata
So they announced a new api called "Open data protocol" (Odata)
http://odata.org

Netflix has announced a new api across their entire catalog using the oData protocol
http://odata.netflix.com/catalog
You can access it, and you can see a list of all the titles, description, ratings, URL of where to play
Can specify the filter in the URL
Give me all of the titles that have a rating of >4.5
Can use $count to get the count
No code was required, it was all generated from the database (sidenote, this is done by using WCF Data services)
He does a query in URL that says, give me all of the japanese films that have a high rating and are available as instantly playable
They have another query option in oData that lets them return the data as JSON instead

They create a simple pure HTML + javascript page
Paste in their URL query
Load the page and it now has a bullet point list of available titles.

Rich metadata
Drills back down into the xml.
Sees that the year of a movie is 1999, but it also has the type defined "edm:int32"
If you type $metadata then you get the list of all the types that will be returned by this service as metadata.
So you can take that information into a tool like VS2010
They open up a new silverlight project
Right click, add service
Point it to the service, the $metadata gives VS2010 enough info to create a service
There is a new tool to look at services in a graphical way to see everything that is returned

In the silverlight app, in the code behind, they tell the app to grab some data from the netflix service
They do a LINQ query

From title in catalog.CatalogTitles
Where title.AverageRating >4.5 &&
title.ReleaseYear –==99
Select title

And it will convert it all for you and do the correct oData query!!!
They are creating a bunch of libraries so that you can consume oData on devices other than .Net
They show a demo running on a palm pre on webos
They have support for iPhone
Showing a Xcode project where he is consuming it

They are SO serious about oData that sharepoint full embraces it. EVERY list supports oData, so you can do arbitrary queries against it.
Excel2010 supports oData. This is done through Power pivot, so you can query oData sources
More and more
clip_image008[4]
They have released the odata client code under the apache license. (I never thought I would see that)

How do you go about building these apis yourself?
Netflix is built on top of Windows Azure and SQL Azure
They want to show you how easy it is to build these and deploy it to the web

Want to continue this movie theme. Will create a service saying "do we own a movie"
Visual studio
Right click, new WCF DataService
Specifies to use his MovieLibraryEntities (I'm assuming this is from EntityFramework 4.0)
Hits F5 and it just works. An oData services is there now.
It is running against SQL server locally
To get it working against SQL Azure, it is just a connection string change in the web.config
Right click, add new Azure cloud service
Tells the cloud project to use the asp.net project
Hits publish
Works on Azure

New SQL Azure feature "Manage database"
New feature-Codename Houston: Way to build databases directly into the browser. If you have a browser and Silverlight, "you're in the database business," Purdy says
clip_image009[4]

SQL Azure Labs
New easy way to enable odata on you database. All you need to do is log in to SQL Azure, then click a checkbox to enable odata

How do you monetise your api?
Microsoft Dallas - An information marketplace
clip_image010[4]

Can expose your data and let people pay to consume it
e.g. They want to get information on UPC codes (movie codes on DVDs?)
He clicks on a data provider, clicks subscribe
Now he can consume the odata service
Clicks on the atom definition to understand the metadata.
Now consumes data from Navteq to get location information
He built an application using Windows Phone 7 Series called "movie finder"
It mashes up the netflix service, the service they created earlier for the movies you own & the 2 dallas services (UPC codes + location information)
On the phone they take a photo of the movie box, it looks the movie up. Can then see the list of people that have
Can do a search on netflix for a movie, which then shows you theatres that are showing it.
clip_image011[4]

*Bill buxton comes on stage*

A problem that he has with all of these touch devices is that there isn't a keyboard. So it is difficult to write / take notes without looking at the screen.
So someone created a Windows Phone 7 app which lets you tap in morse code to tweet.
Not how do we build things the greatest way, but how do we build "the greatest things"?
How do we build tools that capture the imagination?
The whole talk is about "Natural User Interfaces"
It is more of a philosophical thing than any concrete ideas
He brings out an electronic sax, and shows how it is a type of "Natural User Interface"
What does natural actually mean?
Naturally we only start with a few basic skills (sleeping, pooping, eating)
But we also start with the innate compulsion to acquire skills
So a natural user interface is one that uses what people have learnt how to interact so far

The next 15mins are spent showing a painting application and more theory on what a NUI is.

*Conference closes*

By David Burela