Electron, Win10, UWP

I have been following Microsoft's adventure on HTML5/Javascript based desktop UIs for a while – actually, did participate on the journey while working for Microsoft back in 2003 on a Microsoft POC project codenamed IceFace which was doing something akin of websockets (using a proprietary ActiveX and doing low level TCP from it) and something akin of an HTA application. In the recent years, I was watching when they announced WinRT and one of the programming models being HTML5/Javascript; also watched with awe as they failed to penetrate the world with WinJS Tutorial ; than when UWP enabled using HTML5/Javascript as one of the technologies to use. So when I heard last year they tackle this area again, I didn't have high hopes.

 

I was wrong. They actually listened to the people – yes, they misinterpreted what they want the first few (?) times, and lost their expected leadership in the desktop app segment (which were quickly eaten into by the HTML5 hybrid applications), but at last they stopped fighting the inevitable.

 

Why do I say this? Next to the bridges Microsoft announced and later opensourced (centennial for desktop app, the later cancelled bridge for Android applications, the bridges for hosted web applications, for iOS applications and for Silverlight applications) Microsoft sneaked in an announcement: Electron applications for the Windows Store . Using Centennial technologies (so no registry or file system is used, and the application is running on full speed, but still running in a sandbox) you are able to 'compile' your Electron application to a Windows Store AppX (either for the external application store or the internal one). Moreover – using NodeRT (which can be downloaded through npm, and does some crazy magic of generating node.js native addon's C++ code using C# reflection over WinMD manifest files) you are able to access the same WinRT/UWP APIs like any other native application would do – see Showing Native Windows Notifications from Electron Using NodeRT for details.

 

This easily enabled applications do interaction with the native Windows experience, like setting the lockscreen image from JavaScript (TypeScript):

 

const {KnownFolders} = require('windows.storage')

const {LockScreen} = require('windows.system.userprofile')

myFolder.getFileAsync('image.jpg', (err, file) => {

  LockScreen.setImageFileAsync(file, (err) => { })

})

 

Or popping up a toast using https://github.com/felixrieseberg/electron-windows-notifications :

 

const appId = 'electron-windows-notifications'

const {ToastNotification} = require('electron-windows-notifications')

 

let notification = new ToastNotification({

    appId: appId,

    template: `<toast><visual><binding template="ToastText01"><text id="1">%s</text></binding></visual></toast>`,

    strings: ['Hi!']

})

 

notification.on('dismissed', () => console.log('Dismissed!'))

notification.show()

 

So yes, Windows 10 migration for some of the applications and firms might be far ahead, but I think we would be prepared. We are still to see how they will tackle the issues regards Electron security sandbox, but I feel like this time Microsoft might be just naturally doing what was expected from them for a long time, and we can see others stepping into the same direction with getting on the Electron bandwagon.

Sphinx, Pygment, and more

New year, new petprojects. One of them is moving existing documentation in an easier to manage, easier to use format. I looked around what is being used right now internally, and seen many tools from doxygen to sandcastle. One of the tools that caught my attention was sphinx. Being a Python tool, it enables to run on both on Windows and Linux, and looking little more around I found support for VSCode editing – I'm in.

 

So, what is sphinx? Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation, and it has excellent facilities for the documentation of software projects in a range of languages.

 

So I gave it a try and I ended up setting up something similar to github pages – I send a PR to a particular internal repo, and when it gets merged, it kicks off a build which automatically uploads it as the new content.

 

Locally I did set up the following in my tasks.json:

 

{

    "version": "0.1.0",

    "command": "python",

    "isShellCommand": true,

    "args": [ "sphinx-build", "-b", "html", "-d", "build/doctrees", ".\\src\\sphinx\\source", ".\\doc"],

    "showOutput": "always"

}

 

Next thing was to set up my conf.py, I picked a few plugins I was thinking I'd use:

 

extensions = [

    'sphinx.ext.autodoc',

    'sphinx.ext.intersphinx',

    'sphinx.ext.viewcode',

#    'sphinx.ext.autosectionlabel', — this depends on a newer sphinx that I have

http://www.sphinx-doc.org/en/1.5.1/ext/autosectionlabel.html

    'sphinx.ext.autosummary',

http://www.sphinx-doc.org/en/1.5.1/ext/autosummary.html

    'sphinx.ext.todo'

http://www.sphinx-doc.org/en/1.5.1/ext/todo.html

]

 

I started playing than around with the RST syntax, and very quickly figured out that there is good support for python (not a surprise) in code coloring, but even if I did set .. code:: csharp it wasn't recognizing it.

 

So time to write my first sphinx plugin, in _ext/csharplexer.py:

 

def setup(app):

    import pygments

    from pygments.lexers import CSharpLexer

    app.add_lexer('csharp', CSharpLexer())

 

than I can add 'csharplexer' as an extension.

 

Next, I started looking making the rendering little nicer – I'll likely have longer listings as part of the code, and I wanted to have a syntax for toggles working. So time for the next extension – toggle. Taking the following source:

 

.. container:: toggle

    .. container:: header

        **Example to show how to add unitycontainer**

    .. code-block:: csharp

        :linenos:


        Assert(true);  // OK

        var i = 1;

        Console.WriteLine("Hello World!");

 

I could just add _static/custom.css:

 

.toggle .header {

    display: block;

    clear: both;

    cursor: pointer;

}

 

 

.toggle .header:after {

    content: " ▼";

}

 

 

.toggle .header.open:after {

    content: " ▲";

}

 

and _templates/page.html:

 

{% extends "!page.html" %}

 

{% set css_files = css_files + ["_static/custom.css"] %}

 

{% block footer %}

<script type="text/javascript">

    $(document).ready(function() {

        $(".toggle > *").hide();

        $(".toggle .header").show();

        $(".toggle .header").click(function() {

            $(this).parent().children().not(".header").toggle(400);

            $(this).parent().children(".header").toggleClass("open");

        })

    });

</script>

{% endblock %}

 

Which resulted in something I liked 🙂

 

Will be continued – next time I'll try to get viewcode working.

32 bit vs 64, revisited (again)

I did post previously about 32 bit vs 64 bit through the magnifying glass of .NET – good news is, that it’s now high time to scrap all those results, and revisit the question. The reason behind is one of the changes between .NET 4.5.2 and 4.6 (and therefore 4.6.1) is the introduction of a new JITter (ryujit) which should result each of us carefully revisiting this question.

 

But, let’s not go that quick; what the problem is we are trying to solve.

 

32 bit vs 64 bit

 

“I’m in .NET, why should I be interested in 32 bit vs 64 bit? Isn’t .NET bit agnostic?”

 

Yes, .NET itself is agnostic; however some of the libraries and technologies you might use might be not. Think about technologies like: P/Invoke, COM Interop, Unsafe Code, Marshaling, Serialization, Managed CPP, … So, yes, if you happen to have 100% type safe managed code, you can just copy your application from a 32 bit system to a 64 bit system, and it would “just run” successfully under the 64 bit CLR. However, likely you are using some of the technologies just mentioned, so you should do your homework to investigate whether your code is depending on the bit length. Be aware, that unlike C++, .NET only changes size of the pointers (IntPtr) and not the builtin value types (e.g. int is going to stay the same). So moving between 32 and 64 bit world either result in no changes or a set of changes related to pointers, changes related to 3rd party libraries, marshaling, serialization, and more; and you can use System.IntPtr.Size and System.Reflection.Module.GetPEKind to determine the current bitlength and/or querying a deployment assembly for platform affinity.

 

Why 64 bit? Actually, why 32 bit?

 

What does 64 bit allows you to? Addressing (not necessary accessing) a bigger chunk of memory. 32 bit applications inherently (because of the pointers they use) are limited into a 2Gb section of the memory, 64 bit applications don’t have this limitation.

 

So, that means I should just specify I want to have 64 bit, and that’s it? I’d have more memory and would be faster? Actually, not necessarily. 64 bit pointers do occupy more memory. Cache lines in the processor gets evicted more likely. Stack becomes bigger. Your application will likely (mileage might vary) occupy more memory, and there is a chance (mileage will vary) it will perform worse – despite the fact that running on 32 bit results involved in the WOW64 subsystem that has its own performance hit.

 

So should I not update to 64 bit? You should measure; although because what explained above it might be not trivial, you might not want to put effort into it right now.

 

Why this is a topic now?

 

With .NET 4.6 a new JITter got introduced that is a significant rewrite of the existing JITter (and caused some uproar when just after .NET 4.6 release a problem in a tail call optimization caused issues). It’s actually optimized to bring 64 bit nirvana for the masses by incorporating more usecases to use SIMD and SSE for. Yes, I’m going to talk about synthetic microbenchmarks here. Synthetic microbenchmarking is evil and you shouldn’t trust any of the results below, rather test your code – mileage will vary.

 

There are many usecases, like: matrix multiplication, simple floating point arithmetic and more where there is a significant speedup – we speak 4-5x (due to better usage of registers, opcodes, due to better coalescing of arithmetic instructions and use of noeffect code reorder). However, there are many other usecases – just calling a static method, or calling a virtual method might slow down by the same 4-5x factors.

 

Conclusion

 

Don’t believe any of the results above – please do measure yourself, and feel free to leave in the comments below whether you did see any performance improvements using .NET 4.6.1 and 64 bit over your 32 bit application. Also, going over 2Gb of memory usage – is it possible your application should be restructured not to hold all the data on the client side? Probably revisit a different pattern for client-server interaction is timely?

Connect 2016 Keynote – oh boy

Any Application, Any Developer, Any PlatformThe tower of Bagel. Bagel high rise.And I was thinking that last years’ keynote was a hard act to summarize. I’ll try to avoid dumping bunch of links here – many other people done that. Let me still try to summarize how Connect was – it all started on the Tuesday for me when I have had the opportunity to sit down with Jay Schmelzer, Director of Program Management and Sam Guckenheimer, Product owner of Visual Studio Strategy to speak about the upcoming announcements without actually speaking about the upcoming announcements; and would like to thank Eric Maloney from Microsoft for making that possible. For the big day itself, I’ll try to follow the ‘any’ trifecta – Any Platform, Any Application, Any Developer here the same way as this triplet became the official mantra of the day. The trifecta actually came live as a physical token as well. But let’s not jump too much forward.

image15 minutes before startAny Developers’ (and DevOps’, security architect’s, etc) life was made easier by ditching the static KB security article page and moving to a shiny new https://portal.msrc.microsoft.com/en-us/security-guidance portal. And of course the new Flow Partner Program with 6 new services. Any Platform has seen a significant change by Samsung releasing support for .NET for Tizen (TVs, watches got shown), by Google (and Nancy and xUnit) joining the .NET foundation (and as it turns out they have been a contributor for .NET for a while, and now ASP.NET became a first class citizen on Google Cloud), and of course, nothing smaller than (wait, I need to check whether hell is feeling well in the freezer) the end of one and a half decade of cancer – Microsoft <3 Linux Foundation (actually Microsoft been a significant contributor for the Linux kernel for a while now). Btw, did you know that the first 25.000 dev essentials users get 3 month of Linux Academy free with ‘MCSA: Linux on Azure’ course preloaded? Also I suggest starting to browse http://docs.microsoft.com – new documentation on Azure, SQL Server for Linux, Visual Studio 2017 RC (btw, ever considering moving away from ReSharper in favor of native, I suggest https://aka.ms/vs2017productivityguide, also, I’m looking forward what NCrunch’s next step would be as test as you type is now part of the IDE), C++, EntityFramework and more, and all being editable through github PRs. So go ahead, and do extend missing documentation instead of just leaving comments on it.

#RedShirtRocks - new shirt?imageThrough the color of shirts, we saw that the love for Any Developer (red shirts) and Any Platforms (black ‘devops’ shirts) were undivided, still one of the best burns of the keynote was when Scott Guthrie got the question from Beth Massi: “New shirt?”. Any Developer (probably just ‘Anyone’) could see how the Visual Studio family got extended with two new members – next to Visual Studio Code, Visual Studio Team Services and Visual Studio (for Windows? Original? Vintage version? – Miguel de Icaza), now we do have Visual Studio for Mac (based on Xamarin Studio / Monodevelop, however many pieces has been replaced with actual Visual Studio code) and Visual Studio Mobile Center (your one stop mission center for your app, the integration of all Mobile related ALM and Azure functionality). We have seen demonstration for the Any Platform part by Chris Dias with a demo covering MongoDB, a Mac, docker, azure, nodejs, .NET – actually Linux Foundation membership started to make sense as this might have been a OSS conference just I missed the title somewhere? 🙂 Chris not only showed lightweight interaction – one of the more heavyweight pieces when injecting the MongoDB connection string into environment variable for the NodeJS application to pick up from Azure Portal UI (of course it would work using just the rest API and / or DSC application deployment templates).

Github founder Chris WanstrathimageIf you would think no other surprise guests on the stage, ‘ohmyyyy’, we are so wrong – Any Platform. Github founder and CEO Chris Wanstrath showed up briefly and demonstrated the unprecedented love of Microsoft towards anything opensource. You cannot be a CEO without numbers, so he brought some along around commits, committers, projects and so. Not only did we speak about the Linux Foundation membership, but also proved by a person no other than Jim Zemlin, Executive DirectorJim Zemlin, Executive Director of Linux Foundation of the foundation.

Next section was about Mobile, and when it’s about Mobile and Microsoft it’s about Xamarin – distinguished engineer Miguel de Icaza and Xamarin CEO Nat Friedman gave strong demonstration of the first hand experience with the new Mobile development capabilities around Visual Studio, around the new Mobile Center and it’s integration into Azure, and much more.image Xamarin getting lot of love from Developers, and we hear about the trust it gets from the enterprise.image Comes as a little surprise that Visual Studio 2017 RC (release notes) is being announced by Nat – actually a good example for even more ‘mobile first’ 🙂 James Montemagno started to raise the heat in the room showing off the iPhone emulator, the realtime forms preview, live edit, Xamarin inspector for Android and many more – so more that he ends up announcing Visual Studio for Mac (see above), with ASP.NET Core support in it. It gets included in each and every Visual Studio subscription – even the community edition. Nat and James gets the privilege to demo Visual Studio Mobile Center – seldom you do see kicking off builds, CI, pipelines, etc on a conference stage (although I still remember last year when we were dissecting the new experience of Visual Studio Installer – who would think watching an installer is gonna be interesting?).James Monemagno and Nat Friedman doing build and CI on stage

Growing family of Visual Studio

 

From the devops world, not only have we seen ‘overnight’ (I’m not sold on that one yet) migration from onprem to cloud, but also we have seen Mr. Demo himself – big applause for Donovan Brown 🙂

Mr. Demo

Did you know you can love that warm, fuzzy feeling when you do deploy to docker from Visual The hardware backstage for the demosStudio? And you only need to sing ‘Just riiiiiight click’ while you are doing that. Actually, I’d need to have Donovan’s right clicked shipped in my production code, can I do that? Even Scott Guthrie needs Donovan’s right click, on stage. I have to admit, that Donovan not just being awesome presenter, but again had a few ‘this is where you clap’ moments by showing off cross docker boundary work by rubbing some devops on it. Continuous delivery rulez! And before you would think the world is only about right click, we welcome the selfies as well: Beth Massi shows of taking a selfie and taking a live video feed, demoing cognitive services and Azure functions in an elegant and entertaining way.

Beth Massi proving that there is a reason 'selfie' was the word of the year

SQL Server SP1 delivers enterprise features for the masses

Than we had one of the surprise announcements for the day (at least for me) by closing the gap with SQL Server SP1 delivering most if not all of the SQL Server Enterprise features for all versions – yes, even for the free express version. OLTP and data warehouse, operational analytics, compression and partitioning, polybase, encryption, row level security and masking – are all there. I really liked the deepdive into SQL Server (me being a server side guy originally) with Lara Rubbelke, and installing SQL Server for Linux into Docker literally in seconds blown my mind.

#redshirtrocks speaks about SQL Server news

Lara Rubbelke adding indexes to SQL Server for Linux

Not only basic functionality got reproduced for Linux like querying, data load, sharding, partitions (actually not that basic), but also all the special indexes that makes SQL Server blazingly fast. (did you know there is a USQL extension for VSCode? of course next to the mssql extension) Related to performance – in case you were living under a rock, stackoverflow.com is a Microsoft shop – they actually do run the whole site on a hot-warm setup, e.g. 1 SQL Server bearing with the load.

From SQL Server to bots – we have seen the bot framework before, now it has new support for Slack, Facebook Messenger, Microsoft Teams (surprised?) next to skype, and with the possibility to debug into the bots, have them access internal and external services and more.

Show what makes things real with Scott Hanselman

Stacey Doerr and Scott Hanselmann demoing coded UI testing using Selenium for UWPI shouldn’t miss the set of basic announcements from here: Entity Framework Core 1.1, ASP.NET Core 1.1, and .NET Core 1.1 itself (did you know that over 60% of contributions to Core are coming from the community? I’m also to thank the community to making it so great and fast!). However this wasn’t the part of Scott’s presentation which left me speechless (rare occasion), and not the fact that he prefers zsh when running the shell inside VSCode – it was the demo using Selenium to automated, coded UI test applications written not just in UWP, but also in VB6. Kasey Uhlenhuth also showed up to ‘filter out those suckers right out’ by demoing the new navigation and intellisense capabilities of the IDE – ReSharper, your turn 🙂 .

Maria Naggaga demoing the new .csproj formatSo we all heard about the demise of the project.json which we started to love (who wants GUIDs in the project file?), so I wasn’t happy when it was announced a few months back that .NET Core 1.1 would prefer .csproj files again. Through the demo of Maria Naggaga I learned this is not actually the case! Yes, project.json got removed in favor of .csproj – but this is not my grandfather’s csproj! No GUIDs, clean structure, ability to use wildcards – actually it feels and seems like using grunt, gulp or similar. While Maria showed up amazing performance numbers on a 20 way server, the newest round 13 TechEmpower data came in – not only ASP.NET delivered 859x speed advance, but delivers unbelievable low latency numbers and ended up in the top 10 with ASP.NET for Linux!

With these words I finish the keynote blog post, watch this space for the next rounds of posts covering the afternoon sessions and the special #FINTech sessions that were delivered the day after.

//Build’16 Keynote – Day 2

Let's do some Azure this time. Did you know that they are bigger than Google and Amazon combined? Let's hear more from the Red Shirt ™ ! This post is more picture heavy than usual, so many things to show not just write about!

 

 

What are the main reasons people choose them? These are Choice and Flexibility (management, applications, application frameworks, databases, middleware, infrastructure), the Openedness (choice of device, framework, OS), their Enterprise readiness (certifications, compliance, ability to choose between service provider datacenter, azure datacenter, your own datacenter – same tools, APIs, UIs to manage), and Productivity (focus on developers – did you know 40% of Azure clients are startups and ISVs). There are the various Azure app services you can create – providing web, mobile, logic, api as building blocks.

 

 

 

 

 

 

 

And here comes Xamarin – it's FREE. FREE as in really FREE and OpenSource. You do get it for the community free edition as well. And if this wouldn't be enough – you don't need a Mac anymore. And the windows emulator have multitouch. And with android emulator. Using Xamarin Android Inspector, with markdown support. With Roslyn providing code completion. With live editing for Android. Xamarin Studio on the Mac – free!

 

With Visual Studio Team Services getting the Xamarin Test Cloud added, you have a complete mobile devops life cycle now. "I'll just rub a little devops on it and it will make it better". With not only picture playback, but also video playback with realtime memory, CPU and log correlation.

"The first time I installed Linux was after I joined Microsoft."

No devices to buy, no VMs to manage. All comes hand-in-hand.

 

And we switching gears ™ to IoT.Starting with Open Mobility Cloud for cars (BMW this time, not Volvo ). Noone is going to ask you to deliver IoT. People ask you to make them access data easier and better. Check outhttps://azure.microsoft.com/en-us/campaigns/mydriving/ if you interested.

Announcement time again: introducing Azure Functions (with an opensourced platform), enabling to host snippets in the cloud with only paying for the actual resources you use. With automatic alerting, cloud connectivity and more. And another announcement: Azure IoT Updates with Start Kits, Hub Device Management, Gateway SDK, and more.

 

And now over to one of my favorite topics: Microservices.

267 million messages per second with 50.000 concurrent user in the same battle. Age of Ascent MMO game round now, anyone?  Age of Ascent developers helped adding 2300% increase in speed to Kestrel – thanks to them going opensource. Who does not love opensource?

 

 

And our favorite one lesser Scott is there showing an opengl game, Visual Studio.NET and Service Fabric Explorer at the same time. Object Oriented design moved to the cloud. You already know this if you know how to code .NET. Little learning curve for IReliableDictionary and Queue – not your usual collections.

 

Can I submit a PR for fixing the typo? 

"When I test my code I test it in production." "F*ck, awkward" "This is the classic off-by-one error in a MMO game"

Actually next to learn about weather we see another game, using DocumentDB:

 

And now a new area (is it just me feeling we have been rushing through more areas than ever?): PowerBI (free till May 1st), with PowerBI SDK for creating ability in your application to add PowerBI capabilities and connectivity to your own application.

Next topic is productivity. Reinventing productivity. Developer productivity. Transition to the cloud. Delivering new productivity experiences on the mobile. Building a modern productivity ecosystem. The platform opportunities are already open today. You can build intelligent applications by connecting to Office services. You can make your solution part of the office applications. And you can engage the users through conversations – conversations as a platform. You need a productivity platform and working ecosystem for this. The four pillars around this are mobility of experiences, collaborative productivity, intelligence everywhere and being trusted all times.

You can use Microsoft Graph to reach the data – similarly how you did it using Microsoft Hailstorm ( https://en.wikipedia.org/wiki/.NET_My_Services , anyone remembers it?). The demo is using DocuSign to show how the new beta graph API enables you to use the data and intelligence from the Microsoft Graph. The office addin capabilities (announced today) now making it easy – using web technologies (html5, css, javascript; and technologies like OAuth). This enabled announcing Office addins for Office 2016 for Mac and Office 2016 for iPad/iPhone/Android. Also, having a common, modern distribution using enterprise or normal application store enables you to easily reach people.

Simple web technologies and a config file enables you to write, package and deliver your addins easier:

We speak of a Seattle company – Starbucks connectivity in your email available now 

Machine generated alternative text: Starbucks for Outlookchooi. Vow .GftThjnk You!IO O2JI s. *a>e’C.f f.. FavørI.s •—- oWeddingr. O___ , ‘ 7f(5_ —ee AI>

Machine generated alternative text: Sta rbucks for Outlook< Check Outrl Microso//build/-’siœo, O.ooe Y Om Aioia.QLu. riprjòtt cornCatd Arnotint $100Chooi.c Your Paent Mr-thod[vlsA 1111

Office 365 Group connectors – another productivity announcement, from now on you can add custom connect, already 60 providers having their information actively added to the threads:

Also enabling trusted, secure video and audio conversations by using a the common communication platform, embedded into the applications:

And probably the last gear change:

Having the Muzik platform iOS/android/windows phone addins – devices, IoT, next generation productivity. Showing demo for Highspot and machine learning – they are an AWS shop, but running PowerBI there. And – running azure website inside powerpoint as an addin, and use Vorlon.js to debug the application realtime. Also adding possibility to add the bot framework and platform using node.js and restify.

 

And introduced http://projectmurphy.net and the Skype bot you can use there for playing with 

We learned a lot about ongoing projects – open source projects Microsoft is involved in, user groups Microsoft is involved in, Enterprise customers and ISVs Microsoft is involved with, the involvement with students and universities, etc. Lastly – we learned about a new show called http://www.decodedshow.com/ as part of the closing words.

 

I think I have to repeat myself from yesterday: Empowering developers!

//Build’16 Keynote

What I figured out just by watching the pre-intro – they are more low-key about the event than usual. No wild build-up to the keynote, music is relaxing and downtempo. And they are very blue 

 

1600_5F00_phpszxezymicrosoft_build_2016_header_image.jpg

1600_5F00_phplnvfosp3300034.jpgSatya Nadella started by taking over the stage. Taking over – he is full of energy, everyone loves him (what is not to love on the guy who brought you SQL on Linux, Office for iPad, etc.) He quickly points out how dev conference is a dev conference: it's about networking and being inspired. This unique characteristic what he wants to build on and celebrate. He brought up topics in his opening speech that focused on society and how it can be a mainstream thing; how it can either hurt or help it; how it should empower you. He also was overly optimistic, and said, that optimism must be buoyed by making the right choices. And of course, the mantra of 'mobile first, cloud first'. "Cloud is not a single destination. It's a new form of computing" he said.

 

1600_5F00_phpxhnma9p3300038.jpg1600_5F00_4.pngCreating, building and reinventing is the 3 main pillars for cloud and is Microsoft's ambitions in this space. Windows 10 is off to a great start – he said. New platform for human voice, fingerprint, and more? "It's such a great time to be a Windows Developer." And there are 270 million Windows 10 installation (5 billion store visits); if we look at the 1 billion installation in 3 years, we are not that far from the forecast – and actually is the fastest ever adoption.

royen.pngTerry Myerson starts with "Hello Developers" – anyone wants to continue with "Developers! Developers!" and large amount of sweat?  Windows 10 anniversary update would still come free.It contains new ink experience (with ink workspaces for last used ink apps), biometrics for Microsoft Edge (got demo of it, using biometric scanner to log into the website), support for Windows 10 on XBOX, enabling general XBOX One development (e.g. any retail XBOX One can be used as a dev kit/machine, using the same UWP username/account). You get nice controller support for selection, focus, etc. But also you get speech recognition and more on the XBOX, and with full VS.NET debugging experience. Hololens gets also refresh during the summer. Bryan Roper stayed in character with his clothes and style, no surprise  They are bringing pen & paper even further into the focus. He demoed the new ink features – front and center; and he just started! He was able to write with ink and that got contextive focus from Cortana providing full integration for sticky notes ('Call mom tomorrow' gets translated into reminder). Can I get an 'Ohhh' – Ohhh!

 

1600_5F00_php49fr87p3300045.jpgWe saw demo of a virtual ruler using whiteboard/sketchboard as well, and just tweeted it from the application. Important to know how you get something new – ink and touch together, enables for example amazing features in PhotoShop. Also, we got demo of 3D maps and ink usage – points of interest, plotted routes, etc. Also we got demo of using ink in Office – Word to remove texts, for highlighting; Powerpoint to show how items can be lined up, etc. Generally Microsoft is creating a layer of contextual computer learning to make the stylus smart and useful in a way you want it to be. It's more of a real digital pen than ever.

As part of the keynote, Facebook was announcing that it's bringing it's ad network to Windows 10 universal apps, that will considerably help monetizing applications.

home.pngAnd at last (35 minutes in) "It's about time we looked at some code!"  Kevin Gallo is on stage! "We want Windows to be home for Developers" Part of UWP got AnimationFX platform introduced with hovers, blurring, flowing, shadows. All GPU accelerated! And also with deep ink integration. Here comes "Hello world" for ink, with InkCanvas and InkToolbar. The new design language seems to merge Material, Jellybean and existing metro; flat & robotic, but layering and animations.

linux.pngVisual Studio 2015 Update 2 and Anniversary SDK preview was announced, that enables use the features above. Next topics was web apps, e.g. how to make a desktop application using only web technologies. And yes, BASH shell is coming to Windows. Not VM, not cross compiled. New Linux subsystem supports this. This enables people stay in BASH, emacs, etc., e.g. with their known tools but still use Windows.

And officially announced was Centennial – Win32 app converter, to continue running your desktop application; they will get built into WISE, Installshield, etc. And with doubleclick support for .appx, with support for accessing live tiles, toasts, etc. You only need to add the extra functionality as a separate DLL and load that on demand when you are. This will help move the 16.000.000+ applications to the store.

 

devmode.png1600_5F00_w10.jpgAnd the expected demo from Xamarin – nice addition was a remote XLB editor from Visual Studio next to rest of nice, immersive features. Ok, Terry Myerson just said Bash and DOS in the same sentence. If you are doing a drinking game, this is the time to drink the whole bottle. They just mentioned we will focus on gaming now – Phil Spencer first, Kipman on Hololens next. Phil will surely have a hard time convincing people that UWP is the best platform for writing games. Killer Instinct, Quantum Break, Tomb Raider, Gears of War, etc all being UWP. In May they add GSync and FreeSync instead of VSync. DX12 is coming full speed, for full screen games, with overlays, and more. They actually demoed Age of Empires (directly from steam!), Witcher 3, running as an UWP, full frame rate, full screen.

This ins't a hobby. It's a commitment – said Microsoft about Xbox One Universal apps. and the preview of dev mode is available from today. And DX12, which makes it all possible is the fastest adoption of API so far.

hololens.png

And yes, shipping for Hololens is happening today. And they are opensourcing Galaxy Explorer. We got a good demo on how medical students can use Hololens. "To think and see beyond the possible" Also demo of Destination Mars, in Kennedy Space center and onto the Build conference. At last people can try doing everything Matt Damon did in Martian was wrong. Hololens do transform your world.

 

cortana.pngAnd Nadella is back to 'switch gears'. We will help computers learn so that they can help in everyday tasks. It's not about man versus machines. It's about man with machines! By augmenting human abilities and with experiences, being inclusive and with earning trust. Human language is the new UI. Bots are the new apps, digital assistants are meta apps. Intelligence gets infused into all interactions. As a result of this idea, Cortana is building to be an actual assistant, not an assistant that's limited to platform/device. Right now Cortana answers one million spoken questions per day, 1000+ application connected. New version of Cortana will work on lock screen, having a full screen experience; also having an integration with Outlook. "Sent Chuck to powerpoint I worked on yesterday"; by sending text message it automatically sets up meeting and moves other meetings around. Also will figure out it's during lunch time, so it will try to suggest eating out; all based on the connected applications. This happens based on a connected application which looks into calendar and decides to toast based on that. Based on receipt in email, Cortana suggested submitting expenses. "what toy store did I got to last year at build?" Cortana Developer Preview invites are available!

domino.pngGrowing number of conversation canvases are there – slack, kik, groupme, wechat, line, skype, email, sms, etc. They look into making these into rich conversational canvases. Where does this lead? Into working Cortana into the applications via using bots. Like transcribing video messages, having rich bing powered cards, brokering conversation with 3rd parties, knowing context from previous conversations, and sharing context between brokers. Like not only booking calendar, but booking hotel, suggesting to contact people, etc., this working for typed text, voice but also for realtime video and for hololens. Cortana really behaves like a real assistant – though making available the newly announced skype bot sdk; with a hackathon to kick it off; and is available in the applications from today; based on Microsoft Bot Framework (with bot builder sdk for nodejs and C# available from github), Cognitive Services (new website with 22 services at start at https://www.microsoft.com/cognitive-services, and with a demo ofhttp://captionbot.ai/ and CRIS recognition of voice) and Machine Learning (with many tools to teach the system on the fly and involve humans to help when machine is stuck). The idea is to have cognitive micro-services that you could use from each of the conversation canvases, not only from Skype. Also a very nice (actually, I'd say, amazing) demo for people for disabilities on how to use these services in action.

 

The summary of the day: Empower developers!

Ubuntu on Windows – what does this mean

Seeing the recent set of announcements – starting from Office for iPad through buying up Accompli, Sunrise, Xamarin, etc., also announcing Microsoft SQL Server for Linux – it came less of a surprise that Microsoft is bringing Ubuntu on Windows – however comparing it to the Microsoft of the past (Steve Ballmer once considered Linux users a bunch of communist thieves and saw open source itself as a cancer) it still comes as a big surprise. We still lack some of the details there, but we are seeing various Linux subsystems integrated into Windows (does it mean that Bash would be coming for Windows? I think yes). So we are not talking about a Windows-Ubuntu hybrid OS. Neither we talk about a virtual machine. However, as a result of this, Ubuntu would be able to run on native Windows libraries, using the subsystems, and gives access to Ubuntu from within Windows without the overhead of a VM/dual-boot setup.

What else I expect? Some excitement around Ubuntu LXD and using together with containers and Windows would be nice.

Ionic just added support for UWP

Ionic just announced (http://blog.ionic.io/announcing-windows-support-in-ionic-2/) – as part of the other huge sets of Microsoft Build announcements – that their API and toolkit, along with a total UI looknfeel and component set is coming for UWP. Why is this important?

If we glance at the sessions of //Build'16 you can see they focus on two major target right now: game development for UWP and web development (or better to say, using web technologies) for UWP. You could ask, where is the desktop development? Next to having a session focusing on moving desktop apps to UWP (using project centennial, which enables bringing win32, .net, etc apps to become part of the UWP ecosystem and windows 10), there is no speak of desktop development at all. What does this mean? A move of focus? I have been watching the whole UWP story for a while, and by now I'm positive (even if not sure) that the web technologies is the way how desktop applications would be built. So, I'm more than thrilled to wait for the //Build'16 keynote and the breakout sessions where this would be hopefully dived into.

Connect2015 – FSI DevConnect, afternoon sessions

The next session on the FSI DevCon was focusing mostly on Machine Learning – how can you use many of the achievements recently came out of Microsoft (most of them open sourced!) to target creating a new kind of AI. We’ve seen some amazing demos of Project Oxford's (Microsoft's in-cloud solution for evaluating queries like 'Twins or not?' and much more serious questions as well) scalability, up to 150 billion evaluations per second. As I have been a Windows Hello user as well, obvious was the question – does the face recognition being the same in Windows Hello and Project Oxford? Turned out to be they do share some of the codebase, but Hello does depend on 3D camera points and much more to make it more robust.

·         Microsoft expands availability of Project Oxford intelligent services: http://blogs.technet.com/b/machinelearning/archive/2015/10/26/microsoft-expands-availability-of-project-oxford-intelligent-services.aspx

·         Microsoft open sources Distributed Machine Learning Toolkit for more efficient big data research: http://blogs.technet.com/b/inside_microsoft_research/archive/2015/11/12/microsoft-open-sources-distributed-machine-learning-toolkit-efficient-big-data-research.aspx

·         The Language-Integrated Quantum Operations (LIQUi|>) simulator: https://github.com/msr-quarc/liquid

 One of the best quotes of the days I think should be paired up with the next discussion topic: Universal Windows Apps and Platform, which was: "Windows RT OS? No we are not discussing that now." There is not much I'm allowed to share on the rest of the discussion.

The last big topic we dived into was bitcoin and block chain – to help figuring out what my/our strategy is supposed to be on it. If you still struggle separating the two: if block chain is Manhattan, bitcoin is just one building in it. Same way: if block chain is the iPod, Ethereum (more on that later) is iTunes. We discussed the basic on block chain and bitcoin – What are tokens and addresses. How it works as a P2P network. How it forms consensus. What is a block chain VM and how it works. Why resolving the truth is going to help you next to just storing the information. What are smart contracts and why they are smart – how you are incubating disruption here. We looked into what ÐApps are, how they are distributed applications built with the smart contract platform Ethereum. How the smart contracts enforce themselves as they live on the block chain, how they react to events, multiparty actions, how they can help you transfer assets. How you can create composite contracts. What clause chains are? And most importantly: how you end up with a giant worldwide distributed virtual machine. We looked more deeply how ÐApps work – how it's a combination of a contract and a JavaScript GUI to work with Ethereum and eth. And then popped up the reason why we were there – to learn about 'Azure Block chain as a Service'! We looked at how Ethereum block chain as a service serves a vision with service fabric and microservices, and I think I agreed on that block chain is can be a bigger thing than FIX if needed. The ability to fire up my own ubuntu/go based solution for playing with block chain in the cloud is appealing, and the support in VSCode is giving me a good development IDE to write the sols and configuration files for it.

 

As the last of this series, I'm saying this here the last time: It's a different Microsoft now! 🙂