Suspend and Resume - "From the My Work page you can save and then restore not only your file changes and related work items, but also the position of your open windows, breakpoints, and other important cues."

Futures (Task) computations in progress who whose results will become available at some point.

Delays (Lazy) computations which will be delayed until the results are needed (but performed sync)"defer the creation of a large or resource-intensive object or the execution of a resource-intensive task, particularly when such creation or execution might not occur during the lifetime of the program"

Promises:

Agents: concurrent objects which communicate asynchronously and are internally serial

Summary

Blocking calls in naughty.

async and await allow you to write async/good programs that are as easy to write and to read as sync/bad ones.

Authentically Digital - Avoid skeuomorphism"The details and design should focus on function rather than trying to emulate real-world analog versions of things, like the animation of a page turning in an e-book."

Use Contracts to integrate with the rest of windows.
You don't need your own independent settings or Search functions.

+ Used where precision is required
+ Great for content creation
+ Allows economy of movement - reduces fatigue..
- Must be very close to the machine
- OOS/Repetitive strain injury
- Considerable training can be required
- Not natural - an abstraction

DefaultViewModel (from File > new project) is just IObservableMap<...>
this.DefaultViewModel["Groups"] = //...
Typically the first thing to throw away from the default templates.

ReSharper gives intellisense for StaticResources.

SemanticZoomView - Give more information in the zoomed out view than just square tiles if possible.

- Not an optical Zoom
- If your grid is grouped then have semantic zoom.
- Pretty much impossible to extend
- A lot of scope for creativity
- Can be more than just navigation
Currently only one level of zoom. Should continue to show the same information at the same level.

Async/Await [41:30]
override OnUnhandledException
In async void methods an unhandled exception gets put onto the default stack pool and causes the application to crash out rather than handle the exception.
Anywhere there is an async void ensure you add exception handling as OnUnhandledException won't catch it.

Linq [19:40]
.TakeWhile discard all that match the condition. Stops as soon as the condition is false.

Lazy - Allows for single instantiation and has support for thread safety.

ThreadLocal - One instance per thread. [21:30]

MoreLINQ - Linq extensions from Jon Skeet
.MaxBy - Find the highest value.
.Concat() appends onto the end of the sequence
.ForEach() for enumerable in addition to the built in support for List.
.Pipe() applies an action to each item as it passes through the sequence.

AsCount - create an extension method on int that allows formatting for singular and plural

Exception.AsEnumerable extension method creates a sequence from the root exception and the inner exceptions.

AsStrings extension method to extract Data property key value pairs form exceptions. Includes checking for nulls.
Every Exception in .NET has a Data property.