I’ve just returned home from the Mix conference in Vegas… and wow I had a great time. It took me 31 hours to get from the Venetian Hotel in Vegas to my home in Bendigo, Australia 🙂
Let me start out by sending out a big thank you to the MSFT crew for a) putting on a *great* show and b) giving me so many new toys and tools to play with and add to my toolkit.
I’ve got to say I was very impressed with the announcements during the keynote. I’m not going to provide a news service on the announcements but I will go through some of my favourites.
So if it was Designer Developer Workflow before, what’s it now? Designer/Developer/Client/Coffer/Manager/Stake Holder/CTO Workflow? DDCCMSCW? How many people do they want to invite to the workflow? As many as is possible = WIN. Lets call this SFDDW.
I loved this as it confirms Microsoft’s intentions when it comes to Workflows – you can bet Adobe (who neglected WF in their design tools) will be keeping a close eye on this one). I had a shiver down my spine when they showed the Sketchflow player in browser (to show the client your design).
Great points about SF:
- I can use Sketchflow to visually demonstrate the concept of DDW from conception to demonstration to final product. Talking DDW to people can be difficult until they have an “AHA” moment. Sketchflow is a DDW sales tool.
- It keeps with the “you are always working on assets that will be used in the final product” paradigm. Reuse of assets, animation, behaviour etc cuts down time “big time”. Huge in DDW, now still huge in SFDDW.
- Client can comment, draw etc in the Sketchflow player. Designer sees this overlayed in Blend. Smooth.
- Use of behaviours in SF. Now the client can see transitions and animations in the SF player. Gone are the days of PowerPoint and After Effects to demonstrate UI.
SF has huge appeal to me, even as a developer, as I am responsible for teaching people about DDW and how to reduce cost and maximise reuse… thank you 🙂
Out of Browser (OOB)
I was hoping this would be in there. I made the call, and was vindicated. There was doubt though – OOB Silverlight certainly puts a little pressure on other technologies such as WPF. When it was announced I was a little surprised.
There are a couple of highlights for me about OOB with Silverlight
- Deployment is very simple. The same app runs in the browser as it runs on the desktop. A small change to the manifest file and the user can right click the app to install it. You can also deploy from any code that is a user initiated event (i.e. a button click).
- The fact that the same app that runs in the browser also runs on the desktop is very cool. You can test for OOB mode and show a different interface on the desktop whilst showing the “install” interface in the browser.
Online and offline events. When you don’t have ‘Net access the app can look after itself. Why not download some content for later consumption in “on the bus” (OTB) mode.
I ponder how cross domain access works on the desktop. Is the home domain the same as the downloaded XAP location. What about relative URI’s… I must test this out.
- Cross O/S desktop applications written in .NET. Can customise the icon too.
3D and Pixel Shaders
I was a bit worried about 3D in Silverlight – mainly about learning cameras and meshes and all that. The 3D implementation in Silverlight is fantastically simple. You use an element’s Projection property and set a PlaneProjection to it. Then you start setting all sorts of properties (which can of course be animated or bound etc). Deliciously simple.
Check out Jesse Liberty’s video here.
This all makes 3D in Silverlight is a UX tool rather than a 3D modelling workshop.
Pixel Shaders in SL3 are based on HLSL which is created in a C style language then compiled using the Direct X SDK. SL shaders are “almost” compatible with the WPF ones. This means its quite easy to port them. The WPF Pixel Shader library has already been ported over (and works). See here.
Shaders and 3D rock – they allow for some very cool effects to be sure, but use them wisely… we don’t need a recreation of the early Internet please (think blinking backgrounds and cyan scrolling marquees). Shaders are implemented as “effects”. There are two built in: drop shadow and blur.
The new navigation stuff is one of my favourite features. You now create pages which can be navigated between using the new navigation pattern. Using these pages also gives you automatic back and forward browser button access and deep linking!
You can also use special URI mapping to alter URL’s and to introduce parameters (like an ID) in the URL.
See Tim Heuer’s video here.
I’ve not played with Blend 3 yet! Geese I’m slack. But, I’ve seen some sweet stuff in it.
- Behaviours. Developers encapsulate behaviour in special classes and designers can then consume then in blend (they show up on the behaviours tab).
- Better design time data experience. I still have to check this out but I swear I saw some cool stuff when it comes to design time data improvements.
- Full support for Photoshop and Illustrator files. Import them and… MODIFY them! Sweet.
- Support for code editing
- Support for source code control (nice)
RIA Services formalises data centric patterns and practices for use with RIAs (i.e Silverlight). It provides a formalised way to bridge the gap between database, server and client code. RIA Services will make it A1 easy to teach people best practice when it comes to Silverlight.
Traditionally tooling pushes you down a contract based path. The only link between client and server is a contract. Now with RIA services the tooling encourages you to go past contracts and share behaviour metadata and even implementation between client and server.
See Nikhil’s post on this here.
I’ll gladly take all these new tools and place them in my toolkit. Silverlight just got a heap better (and it was already damn good).
This post doesn’t even cover the half of it, so head over to http://sessions.visitmix.com/ and start watching… that’s what I’ll be doing.
For a sweet MIX session on most of these features check out Joe Stegman’s talk here.
Oh… and don’t forget element to element binding in the UI – YAAY!