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:

·         Microsoft open sources Distributed Machine Learning Toolkit for more efficient big data research:

·         The Language-Integrated Quantum Operations (LIQUi|>) simulator:

 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! 🙂

Dev-Test Starts with IT (set of Azure webinars)

Move dev-test for business apps onto Azure

Upcoming: Wednesday, December 9, 2015 1:00 PM UTC-5)

In this webinar, you'll learn how IT pros, accustomed to using on-premises VMware environments, can move dev-test for business apps onto Azure.


Dev-test on Azure

Available now on demand.

In this webinar, you'll learn how to set up your dev-test infrastructure on Azure, configure a site-to-site VPN, and move virtual machines from your datacenter to Azure.


Create self-service environments with Azure Dev/Test Lab

Available now on demand.

In this webinar, you'll learn how to use Azure Dev/Test Lab to quickly self-provision test environments, set policies, share reusable templates, and integrate Dev/Test Lab into your DevOps pipeline.

Connect2015 – FSI DevConnect, morning sessions

So on the second day of Connect, Microsoft did held two additional events at their New York building – VisualStudio Connect and FSI DevConnect. Based on my interest, I have chosen the latter – here is a small subset of those topics I'm allowed to speak about. In the morning of the FSI DevConnect, I saw ScottGu again – but without his signature red shirt I hardly recognized him, he dodged it for a blue one, I think the cloud finally takes over 🙂

We started with setting up the topics for the day: How to do DevOps in a heterogenous environment. How to do testing in such environment. What is the tooling in such polyglot environment. What to take on from microservices and containers today and in the future. What does service fabric mean on premise. What interop strategy scenarios should be considered. What is the WPF story. What is the client story now with continuum. How to paraphrase mobile first for an enterprise.

As I pointed out in the previous writeups as well, next to having monolith IDEs we should focus on a different approach as well – same applies not only to an IDE, but also generally for the management, operation, development, etc work. As such, we have to consider moving from integrated set of tools to rather pick the best tools and just make them work together more. Considering the new openedness of the Visual Studio marketplace, the number of extensibility options for both Visual Studio, Visual Studio Code and Visual Studio Team Services, Microsoft seems to embace the idea in full. The amount and level of extension points allow us to hedge the path forward, especially in the cloud. With regards tooling, this enables everyone instead of chasing technology, rather to leap forward to new approaching quickly – the power of the community.

We discussed the lack of focus on Microservices both in the announcements, but also on our day-to-day work – as these tend to be not really visual, and it's rather hard to do a nice presentation when you are just showing up a bunch of nice linted JSON files; therefore (the lack of good) presentability is really a capping feat for them.

Coming with enterprise focus, we have had to move the elephant out of the room – it's very nice and we are super proud that Microsoft at last is bringing .NET from a Windows centric world to the wild – but as they haven't started this when the technology was born, therefore there are tons of existing application, knowledge, systems written with it. What should I, the developer, already on Windows take away from the current landscape? Part of that is the changed cadence and delivery by Microsoft – we are already receiving Windows 10 Update 1, we are looking forward to the end of the month when .NET 4.6.1 would be released along with Visual Studio 2015 Update 1. And we know all of these are inplace updates – that is a risk! We should embrace the tooling (APIPort and Analyzer) to mitigate it, and also embrace various smoke tests and UI testing capabilities to make sure we can keep up with the cadence, especially if our applications are used outside the enterprise managed zone.

With this new cadence came also an interesting question – if we look at let's say how HTML5 is evolving, there were many standard that came, changed a few times than vanished forever, and HTML5 developers were fine with this. How should a company like Microsoft do the same – the attack surface of an operating system or .NET is still considerably bigger than the browser. We should someone start differentiating between 'we are committed to doing it', 'we are planning to do it', 'oh, we are just experimenting, but you should still use it, just be prepared we might kill of or resuit this underneath you with little warning' – e.g. this is nice in theory, but how would you get people use the latter? How would you move people off of the 'no longer recommended' function and release, and not letting them stuck forever?

We could not walk next to the other question – should I pick a docker image (or probably rolling my own similar containment strategy) OR should I use full VMs? Is there a need for a new middle ground that hasn't been yet looked at? Same way, we do have those people who are command line enthusiasts, and those who are the GUI lovers – is there a middle ground, should these people come together more? Now that windows became managable with command line (and we have SSH as well), does docker suddenly need a GUI?

Next session was supposed to be how to do DevOps on and with mobile, but we really did go wild with the discussion instead. We did look into how portable libraries became available across technologies and devices without the use of Xamarin, with the upcoming Visual Studio 2015 Update 1. We also discussed the options: if you are a C# developer, Xamarin is the solution for you – native UI, portable technologies, idiomatic C#, calling the native platform. However, if you happen to be a JavaScript developer, Cordova is your tool – high level of code sharing, but not a native look & feel (can be faked with the right amount of JS/HTML/CSS, provided through many libraries; and you need to test your application against many of the browsers (or you have to package the browser along your applicaton with all the security updates on you, as you can do with Crosswalk for Android).

As we have seen on the previous day, Visual Studio is in progress on catching up with non .NET developers – Python is a good example for that. Generally, according to the surveys, Visual Studio is a good brand that resonates well within non Windows developer communities too, and now with Visual Studio Code, and with the free Visual Studio Dev, and with cloud subscription, and with Visual Studio Team Service, and with Community edition, etc. it's really opening towards being a not-just-Microsoft-tech IDE. On the same topic, we could see on day 1, how the Visual Studio installer is leaning now towards to work very much like how or Steam is working in the way of delivering the actual IDE(s) to your machine, having a better update mechanism, different channels, shared and replayable install experience, etc. cross many platforms and scenarios. We learned about how Visual Studio supports TextMate bundles (TextMate being a very powerful and widely used text editor for the Mac), which is currently focusing on more the visual parts of the editors and only if you add the relevant wrapper around them, but we are getting closer to a more open ecosystem here. Also, if we look at some of the recent open sourced extensions by Microsoft, we can see how simple writing extensions could be, and can learn best practices on how to make these extensions well behave and to isolate well from the others.

A question related cloud and development was next – if we want to be able to use the cloud services for compilation and more, can we (and if yes, how) to encrypt the cloud source/storage for end-to-end SDLC and DevOps – this can only reliable work now if the compilation steps are happening at your private nodes, otherwise there would be a point you would need to uncrypt the sources in the cloud. But generally, we agreed on that our industry is on a (long) journey to the cloud. Data in motion is encrypted. Cloud domains (like Azure AD) is for your authorization and authentication. You can even use IP fencing, or depend on custom leased lines – as it was announced a little while ago, the custom country specific azure zones are also there with no insight into them from outside authorities.

But than, how you can do Agile and DevOps in a highly regulated environment, like a financial company? You need to depend and you need to give a strong role to your QA, but if you start to go in the over-prescriptiveness way – what is the tradeoff there? What benefits you having, are not the barriers overshadowing the gain? So, the idea here might be is to push testing even more – to the earliest point in the technical and also in the business development (prototyping tools, anyone?), this should result in decreased time for testing per release (example for this is the Visual Studio Team Services approach – used to be months of testing, now down for a few days due to the small level of incremental changes and high agility to pull back releases and redeploy). Which all depend on – what kind, level, amount of bugs you can tolerate? You do need to optimize along your feasible constraints here. And counting, measuring is not enough – an example for this: if you decide to measure your developers based on number of user stories being done – you will get lot of user stories done. If you measure based on number of bugs fixed – there would be many bugs, and they will be fixed. None of this measures are really true, only business success count, but you need to reflect that in your system and measurement policies through – which is hard, how does business success show up in a microservice that you just modified?

Also, based on Microsoft's own journey into it – having a workflow for easily and quickly consume opensource packages, with the right level of legal, packaging, building, etc. happening under the hood with an automated system is something everyone should aim to have (probably this is a market nieche, anyone have a sparkling idea for a startup? 🙂 ). On a similar topic – how should you grow your organization, your team, how you should nurture the people? Microsoft did switch to the 'yellow sticky notes process' for a while in some of the teams, which shows good results.

What is the 'yellow sticky notes process'? Actually from time to time you ask people which team they want to be in, have them write this down as option 1./2., and than try to match it with the budgets, project constraints, etc. Based on their experience for running this process for a while, a whoopping 80% of the people are just happy from the fact that the choice was given to them, but not actually asking for a change. Therefore you are only left with 20%, which save for some extreme cases when you have to ask someone to stay with a team for one more iteration, is usually working out nicely. This approach might be not feasible for many organizations missing the agility to do this, but still would worth start be thinking about.

Next post would be focusing on the FSI DevConnect afternoon sessions; here I commence the morning part.


Connect2015 – Future of Software Development

Next session was focusing on the 'Future of Software Development'!

We quickly figured out: Microservices ARE happening. For me this brings back soft memories of the first time I was doing real multi-tier applications – at that time expectations from the systems weren't that complex, therefore in some perspective those were close to being microservices with today's scale and view. Part of the current problem is that the tools already catching up with trend. When would the developers catch up? As on the previous session, we learned how much the software development should focus on optimizing development productivity – no empty cycles, more information at hand. Which is interestingly leads to the question, and recognition: there are actually two kinds of developers, those who wants to sit in the most complex cockpit available with as much HUD as possible and integration into all the workflows and systems – and at the same time the large group of developers who would rather see there development cockpit also made of smaller microservices, that are pluggable – for the latter was VSCode dreamed for, and I think it does fit those shows perfectly with the large number of extensions. Next came a topic many of us were dying for to hear about – is Javascript (e.g. hybrid), Xamarin (e.g. cross compiled language tailored for the device and capabilities) or native the answer. I think we answer we got – "it depends" is actually the best answer you can do, there is no one size fits all. We have seen companies moving back and forth between these technologies as they did develop their mobile and desktop experiences, so even it might be different based on the growing or changing requirements. Also, we got a more detailed answer, where the major point was about 'code sharing' – e.g. your choice should depend on what targers you have and how much code and design you can or want to share, and whether you can depend on having a network of you have to be thinking an 'offline first' approach.

Also we dove into the question of running and finishing now the full cycle again – from native to JIT to native compilation again, however this time with the added complexity that a dynamic cloud structure will most likely result in a cloud recompile. On the same topic and about older devices and browsers, it was expressed, that "evergreen" development IS happening. You just have to come up with your definition of your minimum client/browser, probably aggressively. Than came the question that broke down everyone: "I still have ActiveX controls…" Actually at their own time they seemed to be an easy, clean and quick solution. I agree with the panels opinion that it's just the question of managing two browsers, one for legacy and one for normal life – and actually with Edge and Explorer separate Microsoft did the same distinction. After jumping around desktop and mobile topics, we could not miss going to the cloud next: I don't think any disagreement came after we declared that a non IT company's core competency just should not be managing server farms. So the dream cloud of the future? Is it more than just moving applications off onpremise? We know and probably believe as well how much the cloud enables business transformations – for big data, for big firms, but also the same way for startups.

Of course we did dive-deep into docker, and how a fully dockerized world would look like, and how the idea and need of docker was arisen, nurtured and now being projected full scale. This wouldn't be an IT conference in 2015 if the question about IoT and wearables would not be rosen (actually I asked it) – whether we look into self driving cars, mesh networks, displays and glasses, we can be sure: our kids will have a different world ahead of them than we had. Will our kids, grandkids know how to drive? Should they know? After touching on all these topics, we went to understand the need and reason for aggressive telemetry – technical insight AND customer insight are both needed for a succesful telemetry, but also to have the ability in the DNA to act upon it quickly is the most important point. We learned the anecdote on why right telemetry is more important than just having it – the large number of clicks on 'Add Service Reference' in the IDE does not mean people playing with microservices if it was followed by a quick cancel each time 🙂 With having telemetry part of your cycles, you need to have the confidence (as you already have the insight) to roll back a release when needed and to mitigate the occuring risk – both in the cloud, on prem and on the desktop. Lastly, we discussed if the Visual Studio 2010 releasenotes focused on Silverlight, WCF, Workflow and the new architectural tools – what Visual Studio 2020 release notes would be about? It was a wild speculation 🙂 On the same thread the last short spark: with the number of technologies to interact growing uncapped – do we need developers with less specialization?

In a (looks like sticky) one liner summary: It's a different Microsoft now! 

Connect2015 – Creating Projects in the Open

In the afternoon of Connect2015 day one, a choice was given between IT Pro and Developer track – I went with the latter to learn about ‘creating products in the open', with Jay Schmelzer, Erich Gamma, Amanda Silver and Patrick Chanezon.

#Connect2015One of the first questions was about how RedHat and Microsoft are going to cooperate on giving support for CoreCLR for Linux, e.g. whom to call if the server is on fire. I think best is to be summarized as the quote ‘Open source does not decrease the level of support and / or change the release process'. Next question was on ‘How to respond to a new fancy JavaScript framework coming every month', and the answer was really to focus on developer enablement – if approached with the relevant tools (e.g. nuget/npm/bower/cordova plugin and extension support in the IDE, quick uptake of the new libraries by the people creating the packages, etc), the actual framework picked becomes a less relevant question. It was interesting to learn the scale of open source dependency – in the (now opensourced) VSCode 130 different open source components were used as a dependency. With switching to opensource – as we learned – insight was given into where a project is going, and enabled other teams and projects to build on the capabilities earlier. What is a nice side effect: the definition of ‘Done' had to become from crisp, under the set of watching eyes. Socializing side was also strong – you are socializing in a virtual open space across the continents, something hard to achieve otherwise; and also – opensource projects and being opensource became a recruiting tool both for Microsoft and both for companies using Microsoft tech. Also – it does not have to be big bang! Do something meaningful but small first, and do see how the community reacts, and also: Releasing imperfect code does result in engagement – and engagement is actually a good thing. We were reminded on two blogposts from Scott Hanselman between the lines: Open Source is a thankless job. We do it anyway. and Bring Kindness back to Open Source – being in opensource development do require social skills.

To underpin all the good things Microsoft sees, they now have a healthy pipeline of projects to be opensourced, but no details were shared.

In a (looks like sticky) one liner summary: It's a different Microsoft now! 

Next on the Developer track was ‘the future of software development' – in the next post.

Connect2015 – keynote from the room

#Connect2015Connect2015 – this was bigger than Build: the number of announcements, the number of demos, the number of speakers and partners were close to jeopardize the bigger brother conference. Hence, I'm trying to cover the event – as it was little (?) overwhelming, I'm not trying to nicely structure it despite my plan to do that 🙂

Connect2015 day 1 started with being seated on time – big achievement compared to previous events! (I have to admit; the nice white cushioned sofas seemed to be rather comfortable at that time; however 3 hours later were rather a torture device). In the first few seconds we were greeted by no other than Steven Hawking, and ACAT was announced – – adaptive fine-tuning of learning capabilities. How unprepared were we for the rest of the day – more than 60 announcements packed into just three hours really took its toll. In a few minutes we got the Scott overload (S. Guthrie and S. Hanselman), and learned that ASP.NET 5 RC1 is out with .NET Core and has a Go Live License – meaning we can go to prod with 5 on windows OR linux and Microsoft AND RedHat will support you. Easiest to acquire is through – try to visit it from your mobile device 🙂 got refurbished as well – hosted and built at ReadTheDocs using Python and Sphinx and managed as source in GitHub using reStructuredText.

#Connect2015In the next 5 minutes of the keynote we were able to tick out "publish to a Linux docker container in azure to run 5" from our todo list app (see Azure SDK 2.8 and support for Docker Tools for Visual Studio, Windows Containers, and Service Fabric) – and we learned "This is when you applaud". We seen Node.js Tools 1.1 for Visual Studio updated (works with the free visual studio for community version!), the python support updated (turns out that the VS.NET brand do resonate well outside Microsoft community as well and the usage along Python developers is growing), with R support in both IDE and SQL Server coming – music for my ears. If Visual Studio is mentioned, I cannot go along without mentioning that Visual Studio Code is now Open Source (we saw Erich ‘Eclipse' Gamma opensourcing it on stage) and a new Beta that supports extensions is out now, with TextMate bundle support. Also, extensions are asked to well behave and to isolate well on both code and full studio – this is a good news, supported through open sourced extensions that can be mined for best practices.  And Visual Studio news are still on: PHP support with navigation, minimal install option, open folder support, personalized install based on previous install (configuration stored in cloud), all these part of VS VNext which would come through one of the channels around you – and yes, the unified installer giving you option to select whether you want to go the ‘fast' or the ‘slow' channel and also giving you option to go VSCode, bringing the install experience to be leaner, faster, smaller. Btw, with S. Hanselman ("developers got a new super power: cloud!") it did get personal – we saw what real IoT is: it's not about an accelerometer or measuring temperature, rather based on the Nightscout Open Source CGM Project and many actual physical components we could see Scott's sugar level live ("you are normally sugared people"), while getting alerts on the band, on the phone, on the website, on the cloud, using C#, Javascript, C++ ("People wearing suite – this is C++"), all using coherent VS.NET experience. Also, instead of doing another ‘Contoso' we could see ‘connected Health Clinic', pulling data from simulated bands, showing service fabric, micro services, azure machine learning, and to see who is the number ONE Hanselman Stress Index cause. I have to mention, I did know about the ‘glimpse' open source project (next to application insights and browserlink), but the level of integration we saw was very nice!

We learned about C# as well from Anders Hejlsberg – we could see how pattern matching, overloaded switch/case, etc. could be implemented in the language. And of course it was all about TypeScript – watches, breakpoints, debug console, AND: PASCAL ON STAGE! Child hood memories.

One of the upcoming demos brought together Jules Kremer, Anders and Scott Guthrie – geekfactor overload, Google on the stage at a Microsoft venue! We saw the tons of extensions for VSCode as mentioned above – Chef, F#, Jasmine, React, Go – you just name it. And another Visual Studio member – Online – just got renamed – it's rather hard to keep up with all the announcements (grokking cloud code, anyone?)! It's coming with android and ios pipelines, MacInCloud support: build, deploy and test in the cloud (MacinCloud VS Team Services agent plan)! The plan is currently in preview at $30/month per agent with *no* limits on build hours. You'll still need Apple Developer Program to obtain certificates and the provisioning profiles to build and release your app, but a MacInCloud agent can be used with the *free* tier of Visual Studio Team Services through its one complementary "private" agent slot. Also, IntelliJ support for the new VSTS services, support for different git flows, JMeter support etc. So, as I saw – Visual Studio Team Services DevOps story: flexible, simple, but strong! Cloning environments, assigning approvers, Jenkins support – Donovan is in his best even in the 4th quarter! And – another edition of the Visual Studio goodies, but this time with license for Parallels, Azure credit and more – Visual Studio Dev Essentials, and it's free! And what if I need the full Visual Studio but for only a month? New cloud subscription options available. And another new related announcement – Extension gallery was converted into Visual Studio Marketplace! With not only addons for Visual Studio, but also languages, linters, color themes, snippets, debuggers and more for VSCode and bunch of plugins, build steps, etc. for Visual Studio Team Services (previously Online). Lost in the free offers? Go to and learn 🙂

Next Kevin Gallo was on stage: Multi channel, multi screen app delivery is the important message – with JavaScript (through Cordova) and with C# (through Xamarin) and with C++ (through Airspace). Sharing 80% of code between devices – despite seeing continuum demos from time to time, still Kevin's continuum demo left everyone speechless. We could get a glimpse of edit & continue for UWPs, with the XAML editing coming later. We got confirmation for Visual Studio 2015 Update 1 coming on 11/30 – just a few more days for some of the goodies! What about TFS? With Team Foundation Server, new features include dashboards that provide visibility to a team's progress of work, code, tests and builds, Git and Team Foundation Version Control in the same team project, the ability to query Kanban columns and SonarQube Analysis build tasks work with on-premises and hosted agents. Brian Harry will let you know all about TFS 2015 Update 1 on his blog also on November 30th – sneak preview was which can run in TFS and on VSTS, and realtime kanban editing and process customization experience.

Microsoft were also excited to announce that Visual Studio 2015 Update 1 will include Xamarin 4 support, providing an end-to-end solution to build, test, and monitor native mobile apps at scale with Visual Studio. It includes updates to Xamarin Platform, notably rebuilt support for developing iOS apps in VS, making it more convenient to build, debug, and deploy Xamarin.iOS projects from Visual Studio. It now uses the new SSH-based connection to simplify the Visual Studio-to-Mac network connection and provide a faster, more reliable connection over a well-known port. It is a rather big release, with the Xamarin team investing hundreds of hours to improving the performance and stability of mobile development in C#.

I don't remember exactly when, but sometime along the line also Microsoft Graph was released, along with extension to debug native code on devices with the free Visual Studio GDB Debugger Extension, also coupled with for Raspberry PI, Android native and Linux kernel debugging, and with which is for Arduino boards and similar. Free Azure Storage Explorer at that runs on all Oss, the Azure Service Fabric and the Azure Dev/Test Labs both available in public preview – did you know there are 28 Azure regions, more than Google or AWS? And now we have country operated regions, like ‘Germany' meaning that it's operated by the relevant authorities meaning no softie is on ground there ever? Also, seen the number of pledges from authorities, they were in the multi dozens.

Amanda Silver did steal the show (after it was stolen by Scott, Paula and Donovan) showing UI adaptation between Android, iOS, Windows phone, desktop, Apple watch, Microsoft Band, just wow. iOS and Android designers? Storyboard support?? Support for SpriteKit, Ionic, having support for Xamarin Mac agent? Overwhelming. Plugin support through nuget, bower, npm, cordova – you just name it. InTune plugin and push support plugin for cordova demoed on stage – very tightly packed demo. Than came the ‘Microsoft tech to build Android app on a Mac' point (Visual Studio Emulator for Android for Mac, on similar topic, Marshmallow (api 23) support would be added to the windows version) – which company's event I'm at, again? And than came: a chrome plugin for perfecto mobile for visual studio team services to reproduce issues on the physical device in the cloud? Mindboggling. We saw HockeyApp from Donovan, very nicely integrated into the overall experience.

What does the keynote mean? It means that you do build basically whatever you want, however you want, whenever you want. You can use your favorite tools (you dig VSCode or vim?), the OS you like (Mac, Linux, even Windows 🙂 ), and the languages you like (Pascal anyone?). VSCode on a Mac doing Node and deploying to Azure, compiling the android app on the Mac? You can do it! ASP.NET 5 with C# to Docker Containers in a bunch of VMs created in Azure and managed with Microsoft Operations Manager? You can do it! And on and on. Node.js on VSCode or VS, C to Raspberry Pi's in C(++) in VS, whatever you like.

In a one liner summary: It's a different Microsoft now!

I'll continue with a second post covering the Developer panel and another covering FSI DEVCONNECT which was another Microsoft event yesterday.