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 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.
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.
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.