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.
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.
As the last of this series, I'm saying this here the last time: It's a different Microsoft now! 🙂
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?
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 battle.net 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.
Next session was focusing on the 'Future of Software Development'!
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!
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.
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 – 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 – http://01.org/acat – 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 asp.net 5 on windows OR linux and Microsoft AND RedHat will support you. Easiest to acquire is through http://get.asp.net – try to visit it from your mobile device 🙂 http://docs.asp.net got refurbished as well – hosted and built at ReadTheDocs using Python and Sphinx and managed as source in GitHub using reStructuredText.
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 https://www.visualstudio.com/products/free-developer-offers-vs and learn 🙂
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#.
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.