Category Archives: Uncategorized

How far will Microsoft go with HTML ?!


image

Let’s face it people, if you can deliver your product in HTML without compromising on UI/UX then … you should !!!

HTML is the ultimate cross platform technology, and that’s the sad truth.

I still do believe that Silverlight has a large part to play both on the web and on the desktop BUT I admit HTML5 is starting to look good for delivering simple Line of Business applications.

What I wanted to do today is discuss something interesting that I’ve been watching unfold, and that is the story of Microsoft Data Explorer.

The reason I am watching this project very closely is that it could be a sign of the future direction of Microsoft products. Bare in mind thou it is only a beta/labs project.

What’s I find interesting in this product is this

  1. it is a web application hosted on azure as a service
  2. it has a desktop, offline and connected, implementation of the application
  3. Both 1 & 2 look almost identical in functionality
  4. They appear to be aimed at a Metro style app world, that is they look like prime candidates for a future “metro style app”
  5. They are what I would categorize as “Line of Business” apps
  6. They are part of the SQL Azure family
  7. The UI technology behind the app is HTML based
  8. Considerable size Microsoft project that I would consider as embodying Microsoft’s future vision for apps.

All of these things interest me because this app could be a window into the mind of Microsoft and it’s architects. An idea of how they plan to build the next decade style LOB apps that cross desktop & metro, cloud and offline, and possibly across devices.

So let’s see how the desktop client of this product works Smile

The install can be found here, it’s early beta BUT public. I encourage you to go forth and install it and see for yourselves how all this hangs together.

It installs in the “Program Files” folder

00008

It has an entry point known as “ClientApp”

image

 

Now this is where it gets very interesting … This is a quick analysis of the architecture of this desktop app..

 

00007

It’s a Win32 app that runs

  1. ServiceHosts
  2. HttpListeners
  3. Forms that host WebBrowsers
  4. Forms that are also Javascript interceptors/windows

Basically it is a desktop app that is a local webserver serving up webcontent..

Now that is an interesting approach, imagine taking your HTML Metro Apps and having that exact codebase running on the desktop within these local webclients ..

What’s more is this local WebClient is a ASP.NET host .. yes it hosts asp.net content Smile

This is a rendered screen and the parts that make up the screen..

00006

The root folder that the app is installed at is what is loaded into the “client website”

00001

It consists of css , js & views (which are just ASP.NET content)

 

00003

 

00004

 

00005

And the “BIN” folder contains the executable’s and the binaries that make the desktop client run ..

00002

Will this architecture work in the big wide world with firewalls and port rules on local systems?!

But the idea of taking your metro style app , html ones, and having them run as is on the desktop using a similar architecture is a pretty awesome idea no ?!

I know of other Microsoft products that are going HTML and are more than likely going to follow a similar architecture.

Anyway I thought I’d share this with you, I actually like the approach BUT I have to admit the performance of this desktop app is very slow, I haven’t analysed the reasons for this as I would have expected it to be much faster running as a local web hosted application .. but go figure …

Bottom line is I like what I see … interesting times ahead in the HTML world Smile

… now back to my forever favourite technology Silverlight !!!!

Metro style app designs that are starting to excite me!


image

I’m really starting to like what I’m seeing in metro designs that are leaking. They’re starting to really show me what level of re-imagining Microsoft and partners/developers are making for their apps. More importantly it’s showing me the level of risk people are taking with Metro.

It’s very risky designing your apps for a metro/muti-sensor first world. Exciting times us developers/designers live in.

And I honestly am starting to see possibilities of metro style apps in the business/enterprise world. As long as these apps compliment desktop apps or can exist side-by-side in the desktop that is. I really hope MS shows us the “desktop” story!

Most of these pictures aren’t of a sufficient quality to be able to zoom into, and are generally sourced from 2 sites

1. ithome.com

2. win8china.com

 

20111218_192233_856_u

20111218_191917_996_u

20111218_192130_778_u

20111218_192005_59_u

 

20120107_155210_381_u

20120107_155537_84_u

20120107_155335_84_u

20120107_155429_584_u

20111204_214026_878_u

20111217_131722_996_u

20111217_132342_449_u

I ❤ C# 2


image

This post follows on from my previous post “I ❤ C#” which discusses interesting recent MS jobs that mention a lot of Managed stack work at very low system levels.

It was pointed out to me that  the “Technical Strategy Incubation Team” has been in existence , that we know of, as early as April 2011 – post reference. Possibly even earlier …

What we know of that incubation team is that it consists of some Midori folks (Mary Jo Foley – Microsoft’s Midori: Who’s on the all-star roster? )

What we can’t directly link but definitely sounds related is that this team probably has A LOT to do with Redhawk including the bit’s we’ve found in Windows 8 (SLR100.dll / WCL*.dll) .. – (Mary Jo Foley – Microsoft codename ‘Redhawk’ lives… in Windows 8 )

What’s interesting with these latest job posts is the scope of the work the incubation team is now doing. Seems like the groundwork and foundation is now in place to build amazing managed features. Things like “structured storage” or “cloud solutions” are being mentioned as areas being built on top of this new radically re thought OS stack.

What’s also interesting is the explicit mention of radical rethinking of UI/UX frameworks and the associated graphics stack/pipeline by this team. Seems like a lot has happened under the covers that hopefully will be in the Windows 8 beta dropping in 2012 Q1 (JAN-MAR).

What’s also interesting is I have been closely following Windows 8 Server as well as System Center 2012 . I did a series of tweets that covered an MS Distinguished Engineer & Lead Architect “Jeffrey Snover ” discussing Windows Server 8 – Storage Solution (I recommend you watch the video)

image

image

image

image

image

image

image

image

Apparently the storage services are .NET services running in Windows Server 8, they have a wealth of cmdlets for automating them via WMIv2/PowerShell). I wonder if this at all has anything to do with the “Incubation Team” and their work with cloud storage, as well as the new strength of C#. – job reference structured storage subsystem

This Incubation Team has a lot of juicy managed work, I’ll keep my eyes out for news/jobs relating to them for a long time Winking smile

I ❤ C#


image

Seems like Microsoft are forming a very interesting team called “Technical Strategy & Incubation”. Their goals are pretty all encompassing AND definitely interesting if your into UI/UX & Managed coding!

Check out these snippets from recent job posts

“help build a next generation UI/Graphics platform. This incubation team is chartered with pursuing strategic opportunities which are difficult to address incrementally with existing systems, such as UI responsiveness and security, rich applications that span devices, new web-centric programming models, and effective use of GPUs and many core ” – job quote 1 

“development of a safe concurrent programming model. A programming model is a core component of a system, 99% of which is written in type- and memory-safe C#. A core principle we add to managed code is that 1st class, statically enforced concurrency-safety must become a peer of type- and memory-safety ”  – job quote 3

“requires innovation at each layer of the software stack: programming model abstractions, scheduling (kernel and user-mode/runtime), message passing and asynchrony more generally, shared-memory, data and task parallelism, distributed parallelism, heterogeneity (including vectorization and GPGPU), interaction with processor architecture, feedback directed optimizations, and even language design and compiler implementation” – job quote 3 

“Come build the structured storage subsystem for a next-generation cloud computing platform ” – job quote 4

“You will write code in a language like C# that has the performance characteristics of C++. ” – job quote 5

“We are looking for great software developers interested in compilers and programming languages to join our team. Our goal is to build the best performing, highest-quality ahead-of-time native-code compilers in the world for C++ and C#. On the C++ side, we are building a world-class optimizing compiler for C++. On the C# side, we are building an advanced optimizing compiler that translates MSIL to native code. We have a unified compiler infrastructure that compiles C++ and C# to native code, so improvements for either language benefit the other language also” – job quote 6

so what is this incubation team

“a small hand-picked team of developers passionate about building real systems that extend the current thinking in Operating Systems and Platform technology. The Technical Strategy and Incubation team has the unique aspect of being outside of existing product groups, allowing us to pursue experimental ideas and solutions that may be impractical for existing products due to legacy demands and business commitments. This is a high visibility position with impact in the incubation, in the company, and in the overall market ” – job quote 1

“tackling the most exciting problems in our industry . Our work combines recent advances in storage with those in operating systems, programming languages, networks, and security. We’re rethinking computing from the ground up, and incubating ideas with the potential to transform our industry. ” – job quote 4

“Cloud computing is in its infancy, and Microsoft’s Technical Strategy and Incubation group is tackling the next decade’s most exciting problems. From distributed storage to advanced compilers, we’re rethinking computing from the ground up and incubating ideas with the potential to transform our industry. ” – job quote 5

“We work independently of Microsoft’s product groups, pursuing strategic opportunities that may be initially impractical for existing products due to legacy demands and business commitments. We run like a well-funded startup within Microsoft” – job quote 4 , job quote 5

“Our goal is to build the best performing, highest-quality ahead-of-time native-code compilers in the world for C++ and C# … we are pushing the state-of-the-art in compilers and using modern programming languages for systems programming” – job quote 6

and who qualifies for this team

“candidate must have a high tolerance for uncertainty and changes in direction. Comfort with low-level systems development and expert proficiency in a C-like language are required. Additional desirable, but not mandatory, skills include familiarity with GPU programming and rendering techniques, numerical algorithms and geometry, asynchronous programming models, data parallelism, concurrency, data synchronization, data-driven UI frameworks, and real-time collaboration” – job quote 1

“We are seeking an individual with experience in several of the following areas: scalable rendering engines, glitch-free media pipelines, 2D vector graphics and typography, and rich UI frameworks.” – job quote 2

“spend a significant percentage of his or her time writing code” – job quote 3

“You will have a passion for compilers, program analysis, and/or programming languages, love to make code run fast, and write high-quality code. The group is a world-class group of engineers in compilers” – job quote 6

“skills include: familiarity with C# and managed runtimes” – job quote 1 , job quote 2, job quote 3, job quote 4, job quote 5, job quote 6

 

a C-like language

C# is a C-like language right Winking smile

 

If the vision of this incubation team becomes reality then there are some damn exciting times ahead for managed programmers !!!!

Incidentally there are dozens of jobs posted for the “incubation team” … sounds like it’s a high priority !!  ❤❤❤

Big thanks to the person that sent me the link to the jobs … you know who you are!! Winking smile

Here’s my Twitter library to get you quickly building WinRT Xaml.Net apps (TwitterWinRT)


image

There’s not many libraries out there that helps you get started writing Win8 .NET XAML metro apps for twitter so I decided to take my FlickrWinRT library and turn that into a Twitter library (called TwitterWinRT).

It’s very simple and only has 4 twitter api’s wired up BUT it uses Async/Await pattern for all calls and does the OAuth stuff.

It also uses JSON serialization/deserialization instead of xml which is what I used in the FlickrWinRT library.

Also I haven’t been able to get any good sample code on how to use WebAuthenticationBroker, that’s the only thing missing here. I really wanted to use that class BUT am unable to work out how to do it, any help or .net sample code would be much appreciated Smile . For now it uses the traditional approach to OAuth.

Video demo

TwitterWinRT library for building Win8 .Net metro style apps

 

Picture explanation of what it does

 

1. Run the demo metro style app

image

2. Request Token (click ‘Request authorization’)

image

3. Take the provided ‘Token’ and use it to authorize the app for use by your account.

image

4. Once app is authenticated for use we make 2 simple calls to

a) retrieve user information

b) retrieve home timeline

image

 

Here is the sample code

 

Make sure to set the “TwitterMetroTest” as the startup project

image

Also make sure to fill in you API app key and secret key

image

 

 

Go forth and start making really cool .NET Metro style apps!!!!

Just Beautiful … going from (HttpWebRequest / HttpWebResponse / Actions / IAsyncResult / AsyncCallback) to (HttpClient / Task / Async / Await)


image

So I’m doing some coding for a library that I hope to release soon that will give you all the important plumbing for making Twitter calls for WinRT apps. It leverages ideas from the Flickr library I recently updated for WinRT a couple of posts ago.

This time however I planned to re-write the plumbing to use more native WinRT concepts like the Async/Await pattern.

The networking libraries that we’ve all become accustomed to are the HttpWebRequest / HttpWebResponse which uses IAsyncResult/AsyncCallback and Actions, however these aren’t wired up to take advantage of the async/await pattern.

The equivalent of these networking libraries that does have the async/await pattern built in is the HttpClient.

So I rewrote some key low level methods to use this new class and leverage the new async/await pattern… It was a beautiful experience, the pattern and the class definitely have become a favorite of mine !!

(click picture to see the larger more visible code bits)

image

What would WP8 look like if it replaced it’s WinCE kernel with WinNT ..


image

This post is just a collection of personal thought’s  that arose after reading HAL’s brilliant post “Windows Phone 8 and Windows 8 : Cousins or Siblings”.  It is purely fun guessing on my part..

So if WP8 does replace it’s WinCE kernel with WinNT what might the architecture look like ? Will we lose WP7 Silverlight/XNA and have to live in a WinRT world only?!!

 

Step 1 : Find out what the WP7 architecture looks like …

 

Here is WP7’s architecture looked like in 2010 during a Mix delivered session :

image 

This diagram does not do justice to the actual complexity within the Windows Phone OS BUT it will do to support the point I’m trying to achieve with this post..

Here is another WP7 diagram that I found interesting enough to include in this post. I’m not going to try to explain what’s going on here, the following video best explains it, I recommend for you to watch it if you haven’t already (delivered in 2010 mix conference) – [windows phone application platform architecture]

image

[ref]

Step 2 : Find out what the Win8 architecture looks like.

 

I went to build and I can say first hand that even the MS folks are torn with how to draw the overall architecture. All the diagrams I saw we’re to a certain degree correct BUT if I had to choose the best one it is bellow (I’ve added a few of my own changes).

 

image

[ref : “Rockford Lhotka on Windows 8, and WinRT ”]

 

Step 3 : Replace the WinCE kernel with WinNT.

 

Yes I know that it isn’t as simple as just chopping out one kernel and replacing it with another, for one thing all the drivers (BSP’s would need major rework). BUT for arguments sake let’s just assume it was done and kernel’s were chopped and replaced.

Ignore the intentionally bad MSPaint cut/paste job Smile

image

 

Step 4 : Bring across WinRT into Windows Phone world

 

This is where it get’s interesting, we can either …

1. replace the existing  services layer

image

 

2. we can add it side-by-side along with the existing services layer

image

 

Step 5 : Bring across the Applications story from Win8 that sit’s on top of WinRT

 

image

 

Technically MS could kill off the existing “Applications” architecture, thereby killing off Silverlight & XNA BUT that would be crazy right?! Think of the 100K + applications by the time Win8 arrives Smile 

Thou the argument for doing just that is the cost of supporting two application platforms.

MS have chopped products taking losses in the hundreds of millions even billions, so I wouldn’t rule out MS doing just that … Who knows …

image

My hope is that they keep BOTH application platforms (SL/XNA & the new Metro Style Apps) …

 

Future hopes and dreams…

 

Consolidate the 2 service stacks into one all encompassing WinRT layer and update the XNA/SL application layer to work with this extended WinRT

image

Once SL/XNA sit’s on top of WinRT, technically this can make it’s way into Win8 metro world. I would love for this future to play out, but chances are very slim!!

Not to mention Xbox and how it too could benefit from an ecosystem like the above mentioned Smile

Anyway let’s see what happens, rumors are that we may see the decision of WinNT making it’s way into Windows Phone by Mix (March) 2012.

Here’s hoping to hear more information then..