NIX Solutions at .NET Developer Days 2018

7 November 2018

.NET Developer Days is an annual conference that has been gathering thousands of tech specialists in the field of .NET development under the roof of Warsaw Expo XXI. Developers come here looking for technological innovations and the most up-to-date information from notable professionals like Donovan Brown, Sasha Goldshtein, Neal Ford and many others. Experts from NIX Solutions Nazarii Taran, Vladimir Chmuzh and Denis Pavelko also attended the event this year and are ready to share their impressions.

IMG_20180918_083254-1

The conference went on for three days. The first day was set aside for a six-hour workshop dedicated to the topic of “Making .NET Applications Faster.” On the second and third days, we could listen to reports on the most relevant technological topics: cloud services and infrastructure, modern architectural approaches, application deployment, machine learning, optimization, etc. On the first day we decided to attend Sasha Goldshtein’s master class on application performance.

Sasha began his seminar by presenting useful tools for measuring performance and profiling of .NET applications: for example, BenchmarkDotNet library, which allows taking measurements of code performance, or the multifunctional utility PerfView. We also recalled the basic construction and operation principles of the central processor, which we found useful in the analysis of almost all subsequent topics.

Then we looked into problems like cache missing, cache invalidation, branch misprediction, and situations, in which the frequency of such events can be reduced by increasing performance. The speaker was joking all the time about how cool it is to use these methods when multiplying matrices (he recently started developing AI at Google, so multiplying matrices for him has become a pretty common thing).

In addition, Sasha talked about vectorization and how modern processors can parallelize various types of operations using the types from the System.Numerics.Vectors namespace, including arithmetic and cryptographic operations, operations for comparing strings and literals, and many others.

Then we discussed various nuances of work and settings of the garbage collection on the .NET platform: when and which GC modes should we use, profiling memory management using PerfView, etc. After each topic we supported the received information with practical tasks, which contributed to better perception of the material. In general, the seminar turned out to be useful and inspired to conduct a more detailed analysis of the topic, including its low-level side.

Scott Hunter – a person who is actively involved in the development of .NET Core, .NET Framework, and many other Microsoft key products – opened the conference. He explained at what stage of the development .NET is today, what awaits us in the future and what innovations you can try now in the .NET Core 2.2 version. As a result we considered the ability to develop desktop applications with .Net Core, which should appear in the third version, and the ability to use .Net in the browser through the Webassembly and a new Blazor framework as the most intriguing technologies. During the presentation some technical problems happened. At some point, black bars filled the screen, and the organizers could not remove them for a while. In response, Scott jokingly said, “Come on people, just reboot it! We are living in a world when something does not work, you just reboot it!” The speaker did an excellent job and gave a decent start to the conference.

The rest of the reports of the first day were devoted to equally relevant topics. There were a couple of presentations about Azure DevOps (in the recent past, Visual Studio Team Services), a platform that combined the functionality of the issue tracker, and the CI\CD server. Recently, Microsoft has been significantly updating this product, making it more convenient and functional.

The Docker reports covered the architecture of applications running on containers and the examples of the migration of legacy projects to this kind of architecture. We liked the report on deploying MS SQL Server using containers. This allows you to greatly simplify and speed up the CI/CD processes associated with the database. The report described several options for using Docker images:

  • without saving data between launches. Most suitable for autotests;
  • with saving data between launches. For local use and use on dev/QA/staging environments;
  • and migration of database changes schema to production environment.

In other reports speakers covered topics of multithreading, Azure, and architectural approaches in software development. The final report of the first day was done by Donovan Brown. He described how Microsoft improved themselves in process of developing Azure DevOps, how their development processes, product vision and their attitude to it have changed in time. Starting from using third-party products in the development process, the team became its own first customer and began to develop products, using the tools that they created for themselves and their clients.

The presentations were divided by coffee breaks, where you could get food and beverage from the buffet, play Xbox and chat with the guys at the sponsor booths. In the evening of the first day we could relax and enjoy live music performed by a duet of pianists who played songs for the audience.

On the second day there were a lot of reports related to AI. Microsoft representatives talked about their tools: Cortana, Azure Cognitive Services, ML.NET, Azure Machine Learning Studio. We also listened to a report from Google spokesman Kevin Nelson, who contrasted his company’s achievements with the ones from Microsoft. Both companies have achieved impressive results in the field of AI, providing a clear REST API for ready-made solutions in the implementation of their business problems.

The final report of the second day and the entire conference was read by Tim Huckaby, an AI visionary and person who uses his work to solve real problems “to make a world a better place”. He spoke about the success of the company in the field of computer vision, but also mentioned that at this stage they still do not have enough computing power to implement all their ideas.

It was a great conference that showed us where the world of information technologies is heading, what advances in the field of neural networks were achieved by such giants as Microsoft and Google. It was nice to know that in the pursuit of new achievements, companies do not forget about optimizing applications and remember that a more powerful computer does not solve the problems of a poor-quality application. Neal Ford did a fascinating speech about the possibility of using Feature Toggle in a project and how it helps developers get the most recent changes from other team members. In the evening, Donovan Brown explained the use of this technology in Azure DevOps. It was interesting to hear how the introduction of Feature Toggle changed the development process and the Microsoft product itself.