Geeks With Blogs
Josh Reuben
Programming for Metro
Metro is the future .NET is for old apps. WinRT replaces WPF & WCF. XAML is big. There were no Silverlight sessions.
HTML 5 and Javascript ( Blend for HTML) are back in fashion – I wont dwell on this because web apps are (inconsistently) simplistic in concept and over-complex in development.
Yes, all those XAML skills are portable, Silverlight (RIP) apps can run as Metro apps with a bit of fidgeting with namespaces – you just need to know what controls to replace in the Windows.UI.Xaml.Controls namespace - (Some are omniously missing - Silverlight / WPF had allot of controls). here is a list of Metro Controls that do not have direct counterparts in Silverlight / WPF (or at least not the same name):
·        ApplicationBar - Represents the container control that holds application UI components for commanding and experiences.
·         CaptureElement - Represents a media capture from a capture device, for example recorded video content.
·        CarouselPanel - Represents a panel that presents its items on a surface with a viewport, and includes scrolling capabilities and item virtualization.
·         FlipView - Represents an items control that displays one item at a time, and which enables "flip" behavior for traversing its collection of items.
·        FlipViewItem - Represents the items wrapper class for a FlipView control.
·        Frame - Represents a content control that supports navigation.
·        GridView - Represents a specialized ordered list view.
·        GroupItem - Represents the root element for a subtree that is created for a group.
·        GroupStyle - Describes how to display the grouped items in a collection, such as the collection from GroupItems.
·        GroupStyleSelector - A class that you derive from to select the group style as a function of the parent group and its level.
·        ItemContainerGenerator - Provides mappings between the items of an ItemsControl and their container elements.
·    JumpViewer - Represents a scrollable control that incorporates two views that have a semantic relationship. For example, the JumpView might be an index of titles, and the ContentView might include details and summaries for each of the title entries. Views can be changed using zoom or other interactions.
·        JumpViewerLocation - Communicates information for items and view state in a JumpViewer, such that hosts for scrolling and virtualization (such as ListViewBase) can get correct item and bounds information.
·        ListViewItemTemplateSettings - Provides calculated values that can be referenced as TemplatedParent sources when defining templates for a ListViewItem.
·         NotifyEventArgs - Provides data for the ScriptNotify event.
·        OrientedVirtualizingPanel - Adds infrastructure (provides base class) for virtualizing layout containers that support spatial cues, such as VirtualizingStackPanel and WrapGrid.
·        Page - Encapsulates a page of content that can be navigated to.
·      ProgressRing - Represents a control that indicates that an operation is ongoing. The typical visual appearance is a ring-shaped "spinner" that cycles an animation as progress continues.
·         RichTextBlockOverflow - Provides the overflow area for linked text containers, as a companion class to RichTextBlock.
·        StyleSelector - A class that you derive from to select the item style as a function of the content data and its specific item container.
·        ToggleSwitch - Represents a switch that can be toggled between two states.
·        UIElementCollection - Represents an ordered collection of UIElement objects.
·        VariableSizedWrapGrid - Provides a grid-style layout panel where each tile/cell can be variable size based on content.
·        WebView - Provides a UI element that hosts HTML content within the application.
·        WebViewBrush - Provides a brush that renders the currently hosted HTML.
·        WrapGrid - Positions child elements sequentially from left to right or top to bottom. When elements extend beyond the container edge, elements are positioned in the next row or column.
On the other hand, you can also see whats new in WPF 4.5 - (flogging a dead horse?).
But when do you expect to be developing for Metro? Win8 is at least a year away, and a service pack 1 (the corporate seal of approval) a year after that. Win8 seems targeted at consumers - its very touchy-feely, social networking enhanced, pastel colored – geared towards tablets. How will it benefit corporations – you know the guys who actually shell out the cash for us to develop the apps? They just wound up the Win 7 upgrade cycle. Corporations spend money on software to enhance information systems for 2 reasons: 1) to increace revenue and 2) to decreace costs. Its unclear how Metro will help out here. The workplace is about productivity, its not a gadget fashion show! To top that off, we may be heading into the Great Depression II – Europe is collapsing and the US is drowning in debt – if tens of thousands of people are getting laid off, why would an organization blow cash on upgrading all its office computers now?
The Revenge of C++
should I ditch C# / F# and jump back into C++ ?
GPGPU - C++ AMP (Accelerated Massive Parallelism) -  GPU programming is impressive and just in time for Intel MIC – why isnt there a C# version in the .NET Framework ? As it turns out, we have MS Accelerator stuck in MS Research for years , and the 3rd party LINQ to GPU Brahma.NET
Will XNA vnext leverage VS2012 DX Graphics frame Debugger, or MSBuild for HLSL ? DirectXMath is a Win8 replacement for XNA Math API -!  If all the new 3D debugging features are dependent on DirectX 11, What is the future of XNA, which is mired back on DirectX 9 ?
My first instinct was to go back to basics - Learn to Program for Windows in C++ -
Win8 Metro claims language parity: - I had a look at Getting started with Windows Metro style app development - - Its plain to see that C++ requires SIGNIFICANTLY more code than C#
·        For Binding – IcustomPropertyProvider
·        For Async - AsyncOperationWithProgressCompletedHandler
 And what about COM interop marshaling overhead? - even with easily discoverable metadata, WInRT is still COM.
What do we have to learn from Build:
Is that it?
I was expecting revolutionary evolution, not evolutionary revolution ...
I love the buzz of being on the cutting edge of technology, and leveraging the power of the highest level of abstraction. That's why I'm in this industry. As a .NET dev, I can pick & choose which APIs I am interested in and tailor my choice of which customer project to pick up (Unfortunately, I cant find an F# customer...). When a great API such as WPF / Silverlight is superseded, and there will never be a, then for me its time to move on to the next cutting edge.
There is so much room for improvement in .NET. (See here for the list: There is also allot than can be said for the state of software engineering mechanisms in general: Today there is no MDA story that works, we have no silver bullet for capturing compilable requirements, code is way to verbose and is repeated across projects ad nauseam! Its sad for me that Build has decided to reinvent allot of the BCL, instead of building on what has gone before, abstracting it and improving it. Thats not evolution - its recycling. It also stinks of internal politics between divisions.
Do you recall the massive learning curve that accompanied .NET 1.0 and 3.0, and to a lesser extent LINQ TPL & RX? That what i crave - exponential improvement. Compare that to metro + WinRT, which is another way to write nearly the same old XAML with what boils down to is just Win8 controls. Immersive - WPF had multitouch. If I wanted to use the Facebook API, well I would just use it. TPL Dataflow - come on, we saw this at PDC - its not a new reveal. LINQ to HPC - its been on the boil for the last 2-3 years.
Look at it this way: how much did you have to read to get your head around WCF, WPF, ASP.NET (whatever), compared to the great, but comparetively minor modifications in .NET 4.5 - I just dont feel there are new revolutionary concepts or programming paradigm shifts to wrap my head arround..
Check out the sessions, and see for yourself!:
Posted on Thursday, September 15, 2011 11:43 PM NET 5.0 , XAML | Back to top

Comments on this post: Build - Not all it could be.

# re: Build - Not all it could be.
Requesting Gravatar...
Hi, great blog post... one point that I would disagree with though...

Corporations spend money on software to enhance information systems for 2 reasons: 1) to increase revenue and 2) to decrease costs.

I consult for a big corporation and something I have noticed is more and more of the cfo's & ceo's and cto's are coming to work each day with ipads... and with the last tool that we looked at buying for their internal systems... quite a big selling point for the tool was that it was natively supported on the ipad...
Left by Mark Pearl on Sep 17, 2011 12:55 PM

# re: Build - Not all it could be.
Requesting Gravatar...
I agree with the analysis Josh.
However, i think Microsoft fault is mostly on the communication side of things.
MS keeps on adding technologies (now the new Client part drives a lot of interest) but they _totally_ lack a communication masterplan which is able to reassure who invested in their stuff.
That said i must say i don't see signals that .NET, Wpf, Silverlight are going away anytime soon.
Left by Stefano Baraldi on Sep 19, 2011 7:10 PM

# re: Build - Not all it could be.
Requesting Gravatar...
Learning these ideas is essential to my ongoing project. - Dennis Wong YOR Health
Left by Mike Abbott on Jan 03, 2017 6:48 AM

Your comment:
 (will show your gravatar)

Copyright © JoshReuben | Powered by: