This week I’m fortunate enough to be in Redmond, WA at Microsoft HQ attending a Windows 8 deep dive summit with 25 other partners. While I can’t share everything we cover on a day-to-day basis, partly due to NDA’s and partly due to my brain and note taking capacities, I did want to share some of the highlights from each day.
For the most part these are taken directly out of my OneNote notebook, which means they’re pretty raw. Some of them might not make the most sense, but I’ll try to add context where I can. After the summit, possibly next week, I plan to take some the key pieces of information learned this week and expand on them in separate posts.
Below are my notes from day two of the summit.
Note: I have not included my notes from the first session. It was really cool, but the content is currently under NDA. Sorry ![]()
Share code between Desktop Apps, Metro Style Apps, Phone Apps, and other .NET Platforms with Portable Libraries
- Summary
- Use code across platforms with portable class libraries
- Use MVVM pattern for x-plat apps
- Models and view models in portable class libraries
- Platform specific views
- Create portable abstractions for non-portable functionality
- Portable class libraries
- One source
- One project
- One binary
- Multiple platforms
- MVVM
- Models – data object, business logic, etc. (portable)
- View Models – what info to display, flow of interaction, etc. (portable)
- INotifyPropertyChanged
- ICommand
- Views – how to display information, written in xaml (platform specific)
- PCL
- View Models
- Models
- Platform functionality abstraction defined
- Defined as interface/abstract class
- Implemented in view and passed to PCL
- Example: file system interaction
- Hooking platform-specific
- Pass dependencies from view platform to PCL
- Service locator
- I from suspension
- IOC
Windows 8 apps using XAML: Make your app shine
- Goals
- Handle lifecycle semantics within your app
- Expand app’s presence by supporting multiple activation points
- Light up your app with windows 8 charms
- Navigation mechanics
- Apps can provide a 1st class experience to users by integrating with Windows 8
- App lifetime
- Running >> Suspending >> Suspended >> Resuming >> Running
- Suspended apps can get removed from memory because of system pressure
- Prepare for termination
- Event on app object
- Serialize to local storage
- BackgroundNetworkTask for long running service calls
- Resuming
- Event on app object
- Deserialize from local storage
Windows Runtime Deep Dive
- Windows has already provided compelling capabilities for developers to build upon
- Windows has not always made straightforward to build upon (think COM)
- Layers
- Windows Store apps
- Languages
- DirectX, XAML, HTML/CSS
- C++, C# / VB, JavaScript
- Windows Runtime APIs
- Windows Core OS Services
- WinRT enables language choice
- Language project builds interop for developers
- WinRT Objects (projections) written in C++, C#, VB
- WinRT is Natural and Familiar
- Projections translate between language of choice (C++, C#/VB, HTML/JS) and native windows runtime
- WinRT is rich in functionality
- Media
- Devices
- Communications and data
- User interface/experience
- WinRT is fast and fluid
- WinRT is async by default
- WinRT enables Hybrid apps
MS IT Developer View and Lessons Learned about Windows 8 Apps
- Designing a simple UI requires thinking
- Web is least common denominator (most reach)
- Native is the deepest (experience)
- Studies show users prefer to us a mobile app over a mobile web page
- From app centric tasks (facebook, twitter, messenger) >> To task centric apps (people, approve, etc.)
- Task Centric Design
- Lessons
- Free your mind
- Before you design/build a touch based application, use a tablet every day
- Experience will drive your design
- We are so conditioned to think within the mouse/keyboard constraints it takes time to start changing it
- Before you design/build a touch based application, use a tablet every day
- Avoid tile obsession syndrome
- Win 8 design is often misinterpreted
- It is NOT just about tiles
- Tiles are just a visual cue that assists with the UI
- Try to keep the idea simple and clear
- Don’t overuse tiles
- The main point of win 8 is about tiles, it’s about being
- Clear
- Fun
- minimalistic (not too much text, too many colors, etc.)
- Fluid
- Don’t build a duck
- A duck can walk, fly and swim, but it does all these things poorly (Brazilian proverb)
- Don’t force a desktop application into a win 8 modern app
- In Win 8 apps, each UI = 4+
- Landscape, portrait, snap, full
- X different resolutions
- X (touch + mouse + stylus)
- +tiles, secondary tiles, etc.
- Desktop apps are OK too
- If your requirements don’t fit into a win 8 app, that’s probably b/c you shouldn’t be building one
- And that’s ok, turns out there are great desktop apps as well (office, visual studio, etc.)
- C# and JavaScript are not the same
- Some things can be done in JS only, others only in C#
- Understand the trade offs (compiled vs. non-compiled) and the implications
- In JS you don’t easily get
- Compile time errors
- Code coverage
- Easy support for test automation
- Great intellisense support (some, but not great)
- Refactoring (find, replace, and good luck!)ut if your app needs one of those, building it in HTML5/JS will help you immensely
-
- Rendering and dealing with html, especially advanced scenarios
- Json serialization/deserialization (don’t have to know the types ahead of time like in c#)
- Handling events from html
- Calling rest services
- JavaScript and C#
- You can mix JS and C#
- UI can be HTML5/JS that uses C#
- Thinking about architecture
- Generic LOB App = UI >> Broker >> Service
- Metro App = HTML5 App => WinRC Library (C#) => .NET class library
- Could be reused as a web application, with some caveats
- Think about how much offline behavior you need
- If you need a lot, then you’ll want C# components for management
- Metro App = XAML App => WinRC (C#) => .NET class library
- JS Web != JS Win 8
- JS web typically
- Is highly compressed (tough to maintain)
- Mixes css, html, ui js, web service calls, etc. in the same file
- Nearly no code comments (minifying)
- Deals with highly optimized media comment (image compression)
- JS web typically
- How much reuse when migrating
- From a web app to a win 8 app
- Even if you can reuse the legacy html, it won’t look like metro (so what’s the point?)
- Asp.net with server tags have far more than html
- Problems with hover effects (links have to be more obvious)
- More jquery – more reuse
- More serve side pages/code behind – less reuse
- (games are different than LOB apps)
- Strategy: move to a single page model
- Better ux
- Optimized bandwidth
- Very similar to the metro html5 architecture
- Knockout js for mvvm data binding (similar to win)
- From a web app to a win 8 app
- Get used to constraints
- Different perspectives
- Windows mobile >> windows phone
- Iphone >> windows phone
- From windows 8 to windows 8 metro
- Different perspectives
- Embrace consumerization
- From soap to rest/json
- From user manuals to self discovery
- From standardized to bring your own device
- Form plain web to apps
- From backend names to task orientation
- Add personality to your apps
- It not just about squares, and master/detail views (think OneNote MX)









Hey there! My name is Adam, and I'm a Technical Evangelist at Microsoft where I spend time focusing on Windows, Windows Phone, and Windows Azure.