Tristan Smith: Tech Ed 2008 Day 3

PDC201 - A lap around Windows Azure

Windows Azure is a distributed, highly scaleable and available operating system that lives in the cloud. The cloud here is the Microsoft managed data centre's machines that your application will run on. Microsoft takes care of load balancing between them, managing the DNS setup, patching the machines etc. You upload your apps, get a url and that's it. You don't ever log onto a box, in fact you can't. You don't get file storage in a normal way, no traditional SQL database. The box itself is Windows Server 2008 64 bit running IIS 7 and .NET 3.5 SP1 but you only have a minimal console interface that you can't interact with.

It's a really interesting model with the idea that you write your applications entirely stateless, you have a separation between your application service and worker services. Your application is used as a front end, any processing you need can be carried out by the worker, as many workers or applications as you want. You can't communicate with the worker service directly, it works by monitoring a queue of items that your application can add items to.

WUX317 - Nerdvana Annihilation: Improving Silverlight UX without out-of-the-box controls

User experience isn't a subject I've looked into before but the guy really sold it. It's not just about having an awesome design, it's about having an enjoyable experience using the application.
The mistake people often make when new technologies like Silverlight come out, is that they just use it exactly the same way as previous technologies like ASP.NET. Pages look the same, buttons are there and are just clicked as normal. Porting ASP.NET experiences to Silverlight just isn't taking advantage of the platform.

Customers come to our products with mental models of what they expect to see and how they will use it if they don't get that, it not only impacts negatively on the customer, it impacts on us as well. Giving a good user experience, is a real boon, it can increase customer loyalty, bring more business and make people happy using your product!

The speaker unfortunately wrote all his markup manually and it didn't go as smoothly as it could have but I really liked it.
A good tip I saw on Silverlight animation was that you don't have to set a starting position but if a previous animation has moved it, you can set the ending position and it'll work out how to move it back to to that original position and state. This is something Flash doesn't do, you have to say, I moved you from point A to point B now move from point B to point A.

PDC206 Introducing Windows 7

Having seen the new server side platform Windows Azure I thought it best to follow up with a look at the client side version.
There are a lot of usability improvements to be had here, gone is the quick launch toolbar in favour of applications that you can pin to the task bar. Programs running in the taskbar won't have labels any more so Icons will become much more important. For developers, icons will be more important as you can now change the icon easily at runtime, this allows you to use the icon to display a progress bar so you don't need to open the application until it flashes ready.

As in Vista you'll get a preview when you hover over running programs, added though is that as developers we can add up to 9 buttons to the previews so you needn't fullscreen the application in order to interact with it. Added here also is apps with multiple instances running (multiple copies of Word opened for example) you'll get previews of all of them, if you highlight one of the multiple previews it shows you a larger view that you can click to go into. All these aimed at removing the harder to use quick tabbing.
Another taskbar feature that is extended throughout is jump list menus that we can add items to, users can also pin preferred entries. For example, right click the running word and you'll get the top 5 recent files that you can go into directly without opening Word again.
Windows can now be docked to the screen so you can run two programs easily side by side, should you want to.

Windows 7 has support for federated search, an interesting feature that allows you add searching of any compatible folder, location or even website.
A site can implement this by setting up a configuration file that the client runs to add it into explorer, additionally the site has to expose a querystring like www.compsoft.co.uk/q={searchTerms}, it needs to return RSS results which are then nicely shown in explorer. It's a really nice search experience. The filtering of that search is much nicer using metatags embedded in the config file or general attributes, the preview is nicer too which if you're searching a website will be the site itself.

Virtualisation hasn't been missed either, you can add or mount virtual hard drives just by clicking them. The speaker was actually running his version of Windows 7 from one as his hard drive had a newer version with features we aren't allowed to see yet.

Speed has been increased, the inbuilt graphics uses DirectX 10 by default and uses your graphics hardware rather than rendering the display in software. Semaphores usage has been improved so you should never have to wait for the start bar to load. A more functional approach to resource usage has been taken too, whereas before you'd have all the services that might be used (support for touchscreen and ink for example) loaded into memory. Now it will only load things into memory if code begins being run that needs it. Hopefully this and the many other improvements will mean a vastly faster system.

PDC209 .NET Services Drilldown Part 2

I really wish I had seen session 1 of the drilldown, it was a bit hardcore.
It mostly covered areas such as the move towards claims based authentication when using the cloud. So a user hits your application which asks, is the user old enough to see this content? rather than just trusting the user, they kick the user to a Security Token Service(STS) that our application puts all their trust in, which takes care of authenticating the user, the STS then returns the output claims required by our app and if authenticated, allows the user to access the content. When working with Windows Workflow, the authentication token that's granted may expire before it finishes so it can be granted a long running token that takes care of this.
It was all a bit crazy complicated, the speaker was covering so many aspects of authentication, the .NET Services bus, Workflow services in the cloud. It was a lot to take in, Microsoft's internal authentication mechanisms and that of many other vendors are all heading this way though so it's something that will become more important, especially with cloud services.

PDC210 Developing and Deploying Your First Cloud Service

The first session on Windows Azure which talked about the new platform and fundamentals such as basic concepts and deployment missed out any real examples of the kind of application you can write to run on Azure which this session promised to show.
We saw a little more detail than the earlier session, we got to see the three storage mechanisms that are currently available. Queues, Tables and Blobs, Queues are where you can add tasks for the worker services to run, Tables are entity-value collections similar to the Column/Row dynamic in databases although they're actually just properties of the entities, Blobs are your file storage solution. You don't get normal a file system when you're in the cloud, you'd have no idea what machine you were on in the first place so it's quite a different dynamic. You can set whether blobs (binary objects) are public or private, public means they can be accessed externally by url, private means they are internally scoped to the service.

The Azure platform is Microsoft's distributed, completely scaleable offering, similar in some ways to Amazons EC2 (Elastic Compute Cloud). Amazon's offering is more a scaleable virtualised server that you can clone, take snapshots of and spin up as many instances as you want. You get a machine you can remote desktop to as if it's a normal machine, it's just that it's running in the cloud. They're quite different offerings really, with the one, you write your code in an explicitly scaleable way (with more of a software as a service approach) where the framework provides a lot of scaleability support, the other relies on you making sure the applications you write are scaleable, you could write a completely non scaleable application if you wanted of course. For normal scenarios, Amazon fits the bill, for more advanced scenarios where you want instant, no downtime massively scaleable applications, Azure is clearly the choice. It's an exciting time to be a developer, there are definite scenarios where Azure is going to change the way we work.