What should the .NET conference look like in 2016 as the .NET world undergoes a tectonic shift? Obviously, (ASP).NET Core will have a big impact on the lives of developers, but for most of them it won’t happen until a tangible time later. What should we talk about in that case – the big innovations that will become relevant later, or the more familiar topics that are important here and now?
St. Petersburg’s "Summer Developers Festival, " consisting of three consecutive conferences, began with DotNext 2016. How was the dilemma resolved there, and how did DotNext go at all? From the photo of the organizing team, you can see that for all the hardcore, the event was not without a summer mood, and the rest of the details are under the cover.
It’s hard to expect that the most memorable detail at the opening of the conference would be the name of the volunteer task, but that’s exactly what happened here. Program director Andrey Dmitriev speaking about the fact that the speakers after their reports go to the "expert zone" (where they answer the questions of interested spectators), specified that volunteers even have a special role for the task of "taking away the speaker after the report. It is called "speaker’s tow".
Sounds funny, but at the same time the point is revealing: it answers the question "why go to conferences when you can learn everything on the Internet". The opportunity to ask a question on the sidelines has always been an advantage of personal presence, and when all the conditions are created for this, with a dedicated expert area and boards for illustrations, one can get even more out of the event.
After opening there was a keynote from Dmitry Soshnikov (Microsoft) "How Many Lives .NET Has. Starting with nostalgia (even COBOL code appeared on the screen) and getting to the future (like local functions in C# 7), in the process he made a show: using Microsoft Band he measured his pulse ("here it dropped sharply, usually it means the speaker died, but not in this case"), and using Microsoft Cognitive Services he recognized his emotions by face expression ("I can better be happy than sad").
Then the whole thing split into different rooms, and then it became clear how revolutionary and everyday can coexist within the same conference: they were simply given different tracks, so that everyone who came could choose for themselves what was more important to them.
From the main stage, English-speaking speakers ( Maurice de Beyer , Dino Esposito , Adam Sitnik ) talked about what the move to (ASP).NET Core means for the .NET world. It turned out to be a hall for those who want to be ready today for the challenges of tomorrow.
The third room was initially occupied by speakers from JetBrains with a series of reports about their new IDE Rider (They have recently already briefly told us about it, and here they were able to tell us more details). As the project has not yet reached release, it was also about the future, but closer. Thanks to the Early Access Program it is already possible to use if you want, and among the first users are JetBrains themselves, using Rider for Rider development. This explains why their products are so much loved: is it possible to motivate the developer to improve the product more effectively than when he feels on his own skin any shortcomings?
And in the second hall at this time there were reports about codogeneration, optimization and dynamic prototyping – in other words, the talk was about what you can get practical benefits from here and now, without waiting for the bright future.
It is curious how different the reports on ASP.NET Core sounded. Maurice de Beyer calmly stated the facts: .NET in its usual form is no longer up to date, so now everything will be more modular and cross-platform (no wonder: when Azure started to mean a lot to Microsoft, the rigidity of being bound to Windows started to hinder getting customers).
Dino Esposito, on the other hand, used his sarcasm to the fullest, describing the situation "Microsoft first makes a revolution, and then suddenly wonders what problems loyal customers will have with legacy code". His rendition of the hypothetical dialogue about the migration of a major project looked so vivid that the audience perfectly understood the gist of the last line, which he portrayed silently:
– How much would we need to invest?
– A million dollars and a year’s work.
– And for what?
– To do what I’m doing now.
The sudden change at the release candidate stage does seem a bit odd. But that doesn’t mean that Microsoft makes a bad product, and Dino never said such a thing. He only said it would take a couple of years to get to the "really suitable for production" stage. As he said smilingly at the end of his speech, "this fits well with Microsoft’s whole policy: you shouldn’t use their products until version three". Judging by the volume of laughter in the audience, for a great many in the audience, Windows once started with 3.x.
Esposito changed Sasha Goldstein (Sela Group) with a presentation about PerfView. It was the third report in English, and there were five of them in the main hall that day: at this conference you could not be bored, even if you do not know Russian at all. As feedback from the audience about Goldstein’s talk showed, many benefited in practical terms from their first glimpse of the tool and their immediate desire to use it.
And later in another hall he spoke on "The C++ and CLR Memory Models", and on this occasion the feedback was even more enthusiastic: many noted his ability to "talk simply about complex things". As a result, one and the same speaker took both "gold" and "bronze" in the top 10 DotNext presentations (according to the audience ratings):
- Sasha Goldshtein — The C++ and CLR Memory Models
- Dino Esposito — ASP.NET Core 1.0: Challenges and Opportunities
- Sasha Goldshtein — PerfView: Measure and Improve Your App’s Performance For Free
- Andrey Akinshin, Julia Tsisyk, Anatoly Kulakov – Let’s talk about arithmetic
- Dmitry Soshnikov – How Many Lives of .NET: Pondering the Fate of our Beloved Platform
- Sergei Shchegrikovich – ETW for .Net developers
- Igor Chevdar – Codogeneration for optimization
- Dmitry Ivanov – Reactive multiprocess interaction : JetBrains Rider Framework
- Igor Labutin – Diagnosing WCF
- Vitaly Baum – Practical examples of creating Microservices
Meanwhile, in the second room Romuald Zdebski (Microsoft) was talking about games, and the question arose "how relevant the report is at this particular conference." Zdebsky used spectacular videos of the latest games like Deus Ex: Mankind Divided, but these are AAA titles, big game changers, big Western companies – and could a Russian .NET developer learn anything for himself? As it turned out, he could.
First, the report pointed out that simple games (like 2D) can be made with Xamarin – so you can try to make something for all mobile platforms at once without facing a high entry threshold. And secondly, it was said that even in a more ambitious project you can cut corners : by taking the Unity engine and buying models from the official store, create a full-fledged game without mastering many things.
Microsoft’s decision to open up the Windows Holographic platform (used in HoloLens) was mentioned in passing. Right now it does not affect the developers, but in the long run the news is good: if the VR/AR market turns out to be big, it will be great to write code for a large user base of AR devices from different manufacturers. By the way, during the breaks of the conference, it was possible to assess the prospects of VR/AR on your own experience and vestibular apparatus: the attraction with the DK2-version of Oculus Rift did not stand idle.
The afternoon talk in the main hall, while not at all about Core, was also in the "hardly necessary for your current project, but actually worth knowing" format. Andrey Akinshin (JetBrains) presented puzzlers related to arithmetic, and opened the room to new things in seemingly the most basic operations. The first example, "Write(0.1 + 0.2 == 0.3);", hardly surprised many people when the answer was false (floating point operations are widely known to give rise to such surprises). But here were many more reasons to make mistakes – for example, we found that an apparently obvious expression leads to unexpected results in a specific configuration. What do you think is the right one here?
Then two reports in a row from Nikita Tsukanov (ProMarket) and Maurice de Beyer – were devoted to Docker. As Maurice pointed out, the project name and logo are extremely well chosen: the analogy with the loading of containers on seagoing ships explains its usefulness perfectly. There was a time when ships were loaded "as is" (for example, separate barrels) and this led to "compatibility issues": how to arrange them so that they could fit as much as possible without crashing. With the advent of strictly fixed size shipping containers that are guaranteed to be compatible with each other, life has become much easier and loading ships much more efficient. Docker makes it possible to achieve roughly the same thing.
Finally, in the last slot was the report Roman Nevolin. (WaveAccess) on machine learning. Here, as with the report on games, there was a question of "is it relevant to the audience": may it be the future, but does it matter specifically to the audience? And here the speaker also explained that it does: the range of tasks for which machine learning can be useful is quite wide, and the threshold of entry is lower than one might assume. Not to be unsubstantiated, Nevolin demonstrated its use – for example, for such a pressing task as recognition of spam in a stream of incoming messages. He was especially memorable for the phrase, "the groping method is the basis of machine learning, it will save us.
According to Roman, machine learning is primarily useful in such cases :
1. When an algorithm is difficult to describe in code, but easy to explain to a human.
2. When trying to predict changes (e.g., stock prices).
3. When an algorithm must improve by accumulating data.
Curious to know in the comments: in what you are working on now, do you encounter tasks that fall under these descriptions and where machine learning could help?