They say that you can endlessly look at three things: how the fire burns, how the water flows and how other people work. That is, the ideal object for observation is the live broadcast of a large conference.
And by the way, we have one for you. This Sunday and Monday, DotNext 2017 Moscow is held - the largest conference in Russia dedicated to the development on the .NET platform. Three dozen speakers will make presentations on the present and future of the .NET platform, on optimizing performance and multithreading, on the internal structure of the .NET platform and the CLR, on profiling and debugging of the .NET code, and so on.
And you have the opportunity to participate in this - without having to go somewhere or go through half the city, on YouTube, for free. How exactly - read on.
First, many already know that the JUG.ru Group has begun to conduct open broadcasts, have been to several, and want improvements relative to the past.
And we really improved a lot. Recently, several conferences have taken place, such as Joker , DevOops , SmartData , the technology has run in, and now the current stage of evolution can be observed at DotNext 2017 Moscow :
Just save yourself these YouTube links. Please note two days are two different links:
In an open broadcast, only the first hall is available, including the opening and ending keyout.
A separate question is how the program of this hall was formed. Of course, we use ConfPlanner , created with the participation of Vladimir Sitnikov . ConfPlanner works on the basis of OptaPlanner and automatically tries to ensure that all the direct participants in the conference are included in the reports that they indicated in the survey. But nevertheless, the results of the work of automatics are creatively analyzed by the organizers, based on the understanding that the participants of the open broadcast will watch the first hall. The sequence of reports of the first hall has its own internal logic.
Participants' questions ( those who watch for free, too ) are taken into account, you can ask them in the official telegram channel of the conference. It is recommended to understand Telegram in advance. Right now go and install it!
Andrey DreamWalker Akinshin, JetBrains
Keynout has several goals, including - to convey the spirit and essence of what will happen next couple of days. This report will focus on typical performance testing issues and possible approaches to solving them. Andrey Akinshin is working on the Rider project, is a manteyner of BenchmarkDotNet and, in general, knows a lot about micro-optimizations.
Vladimir VladimirKochetkov Kochetkov, Positive Technologies
The second report is about security, and it has exactly the same practical orientation. We recommend reading the speaker’s biography on the site in order to understand that this is the best security expert and an obvious candidate for communication in the discussion area after the report.
The report is devoted to the problem of vulnerabilities of .NET-applications to injection attacks in languages ​​of various grammars (HTML, JavaScript, URL, SQL, Path, etc.).
The first part of the report will consider the formal model of an application vulnerable to this class of attacks, and a universal approach to protecting against them based on it.
The second part is devoted to a review of the open library LibProtection, which allows developers to safely use the familiar API for working with formatted and interpolated strings when working with input data and hiding behind it a full-featured built-in runtime protection tool.
Mark Seemann, blog.ploeh.dk
Functional programming has one big problem - it’s very difficult to talk about it. Attempts to convey to people something using terms like “zygohistomorphic prepromorphism” easily drive an unprepared listener to mind.
Mark is the author of the popular book Dependency Injection in .NET , the author of countless blog posts , and the speaker at so many conferences that he had to start a public schedule on his website. And he tells every time more and more new. If anyone can talk about FP, it's him.
What will this report be about?
In object-oriented design, dependency injection is often used - this pattern is very popular, but nevertheless it is a rather complex approach to solving the problem of separating related entities. In functional programming, there are ways that are much simpler and more efficient.
In this report, Mark will consider the use of dependency injection in classic object-oriented design and explain why it is not necessary (even undesirable) to use it in functional programming. Following this, it will be clearly shown how the use of functional programming by the technique eliminates the need to use mocks and stubs in unit testing, and allows you to completely eliminate garbage from a direct listing of dependencies.
Karel Zikmund, Microsoft
In the top of performance, there are two reports on network performance.
The first of them is led by Karel Zikmund, an English-speaking speaker, known for being the Software Engineering Manager in the .NET Framework team and the .NET Core, and is the CoreFX manager for Networking, Crypto, Collections, Process, etc.
Karel will talk about the architecture and the specific implementation of the .NET Core network stack, especially about performance and portability. The following topics will be covered:
Dmitry shwars Soshnikov, Microsoft
Artificial intelligence is now one of the most discussed topics and the main engine of digital business transformation. Microsoft’s AI strategy includes democratizing AI for developers, i.e. providing easy-to-use frameworks and services for solving intellectual problems.
Dmitry is a technology evangelist from Microsoft, specializing in the Internet of Things, in the development of universal Windows applications and in the field of functional programming.
In this report, Dmitry will show how .NET-developers can use the capabilities of AI in their projects: starting from ready-made cognitive services running in the cloud, ending with teaching neural networks in .NET-languages ​​and launching complex neural network models on compact devices like Raspberry Pi.
Dino Esposito, JetBrains
As you already know, microservices are vertical layers of functionality, independent from each other in terms of technology, paradigms, and even, to some extent, data. Like any other isolated module, microservice can be easily replaced or rewritten, or even horizontally scaled without the risk of regressions. Microsevreis can be loosely coupled part of a distributed architecture, but they can be used separately, by themselves. This architecture has many advantages, and not so many disadvantages. More importantly, it is more common than it is customary to talk about. “Microservices” is just a special name for anything that is not a well-developed, comprehensive system.
In this report, Dino will share with us the painful experience of developing a microservice architecture, during which his company built the infrastructure in many stages, having very limited resources, collecting the results by brick and trying to ensure that when adding new Kripikov, the old ones would not fall off .
Dino is a well-known trainer, consultant and evangelist, a CTO of a rapidly growing IT company. He has written many well-known books for Microsoft Press. This report continues the glorious tradition in which Dino tells how to overcome this whole mess, which we have done ourselves.
I remind you that Dino has another report - the final keyout, definitely worth a visit.
Sasha goldshtn Goldshtein, Sela Group
In our hardcore "low-level" section there are two reports related to debugging. And both - about cross-platform applications.
The first report is led by Sasha Goldstein - an outstanding performance engineer who invariably occupies top positions at all conferences, no matter where he speaks. We interviewed him several times, I advise you to familiarize yourself with: a couple of videos of 2015 , videos of 2016 , interviews about working with a performance, and a review of the tools of the .NET performance engineer .
In this report, Sasha will talk about the following. Imagine having managed to run your favorite ASP.NET application on Linux or even something with a console interface. What's next? A happy ending? Oh no. In fact, you will have to face memory leaks, strange crashes, performance problems, and many other troubles - and what to do when it all happens in production? On Windows, we have a bunch of interesting tools, but they won't work in Linux, and there are no simple alternatives yet. In this report, Sasha will talk about how debugging and profiling of .NET Core applications on Linux now look like. How to investigate using perf
, how LTTNG
used as a replacement for ETW
events, how to compile and understand LTTNG LTTNG
, and much more. Sasha will talk about collecting core dumps , and how to get information interesting for the .NET developer using lldb
and SOS
. This report will be a very difficult journey through the wilds of unfinished utilities and special command line magic, but in the end we will come to a happy end! (but it is not exactly).
Federico Lois, Corvalius
In this report, we will look at the techniques and patterns used to write high-performance code — from analysis to the specific implementation of optimization. Let us figure out how to understand what optimization to use, and what problems usually arise when optimizing the database code. Many of these techniques were invented and polished to a mirror shine when developing RavenDB 4.0 - a fresh version of the NoSQL engine for the .NET platform. RavenDB is a rather complicated thing, in which optimization has been going on for nanoseconds for a long time, and it is necessary to optimize in time, IO and processor simultaneously. Most of the techniques discussed in this report can be applied anywhere, regardless of language or framework.
Federico went a long way to be able to tell about his discoveries. He is not only a co-founder of Corvalius and Codealike, but he has actually worked on the performance of algorithms for the last ten years, using both CPU and all kinds of tricky hardware like GPUs as hardware. This is a person who is not afraid of working with binary data, registers and low-level optimization, and at the same time fascinated by the technology of parallelism and modern computer graphics. In general, if anyone can tell a report on low-level optimizations in C #, then this is it.
Raffaele Rialdi, Vevy Europe
Code generation in runtime is a very powerful and well-studied technique, but many developers are still reluctant to use it. Usually the study of Expression Trees begins with some simple example of how to create a predicate (filter) or a mathematical expression. But not the Expression Trees single .NET developer is alive. Most recently, it was possible to generate code using the compiler itself — this is done using the Roslyn / CodeAnalisys library APIs, which, among other things, also provide parsing, crawling, and source generation.
In this report, we, together with Rafael, will analyze the real ways of using code generation. In some cases, they can greatly improve the performance of the application, which in turn leads us to a dilemma - if the generated code is so useful and we are going to use it often, how can we debug this code? This is one of the fundamental questions that arise in real projects.
Rafael is a practicing architect, consultant and speaker with MVP in the Developer Security category since 2003, which right now has been involved in enterprise project backends, specializing in code generation and cross-platform development for C # and C ++. In other words, Raphael is the person to whom almost any question about code generation can be asked in the discussion area, and not only about .NET, and he will most likely answer.
Dylan Beattie, Spotlight
This will be a very philosophical, and at the same time, a purely practical report. He will be led by Dylan Beattie - a person with so many work achievements and interesting projects that it is easier to read the full list on our website . In the context of the report, it is interesting that Dylan is a system architect who right now is working on building complex modern distributed applications and, accordingly, on developing the right APIs for them. And he will probably play us on the guitar, at a party after the first day of DotNext with Vagif.
But back to the report. The point is that we have been working all our life on systems created by other people. Starting from a simple UI on the phone, and ending with the cloud infrastructure of the modern Internet - the interaction between systems and users is the foundation for our understanding of the technology and sensations from its use. If you build the right interaction, users will be happy and will work productively. If the platform leaves only bad impressions, it only leads to inefficiency, fear and anguish from using such a product.
Whether we are aware or not, every time we create new programs, we also create user experience. People will interact with our code — as end users, or maybe as members of the development team. Or maybe they are mobile application developers using your API, or is it someone who needs to go to the night to fix the problems that have arisen. From the outside, this may seem like quite different cases, but in fact they have something in common. Dylan calls this the word " discoverability ." (I do not specifically translate this word, because the report will still be in English, and in English it has more meanings than the Russian equivalent of “intelligibility”).
In this report, Dylan outlines ideas and discoveries relating to user experience, API design, psychology and psychology of learning, and shows how you can integrate the idea of discoverability at all architectural levels of the application. There will be illustrations on real big projects, with explanations of how discoverability works with different interaction paradigms. It doesn't matter if you create databases or system libraries, hypermedia API or mobile applications - one day there will be a moment when someone starts interacting with your code - and when this happens - it’s better that they are satisfied, right?
Roman Nevoroman Nevolin, EPAM
Newtonsoft.Json
is the most popular package in NuGet. And next to it, in third place, is the Entity Framework. Perhaps this is a good demonstration of how often .NET developers process a variety of data. And for each type of data - its own library, and a bunch of wrapper classes that you have to write in order to obtain all the benefits of strict typing. And this should be done for each new data source.
However, F # offers us another solution to the eternal problem - type providers. A solution that allows you to maximally simplify work with any data types, get rid of writing and maintaining classes of wrappers, and at the same time solve completely different problems, like drawing complex graphs and working with neural networks with F # tools.
If you want to know how to use type providers, what problems they solve, how they work and how to write your own provider for your tasks, come to this report!
Knowing F # is optional . Roman does research in the field of Machine Learning and develops his own machine learning tools, so he can explain complex things with simple words.
Dino Esposito, JetBrains
Imagine yourself in 2048. What will be considered art? How will we do the usual things, how will we do business?
Dino will tell us a story - a fictional story - which can be considered science fiction. Or a special cellular fiction. In 2008, one guy made Bitcoin. To manage Bitcoin, you need to use a common registry - Blockchain. Blockchain is a public registry for transactions - in the future, transactions of any type. Imagine that someone went further, on a couple of levels. Blockchain spread throughout the world, and became the basis for absolutely everything. Banks, notaries, government - in short, any third-party certifying authorities - were on the verge of disaster.
Imagine that in 2048 the whole world turned out to be entirely based on Blockchain, and any transaction in it is visible, traceable and verifiable by anyone. Imagine a world in which people dress in RFID-connected clothing connected to Blockchain. Any step you take is also monitored (by the way, now they are watching 2017 too!). Your location is well known to everyone, all the actions I recorded. Imagine a world in which computers deal with most of the most tedious tasks you’ve ever met in life - they make decisions for you, drive a car for you, order plane tickets for you, buy different things for you - and even write for you programs.
Imagine a world in which only thoughts and dreams are all truly yours, and they are the only pleasant thing that you still have. (No, I do not think that computers will have sex for you, even in 2048!). Will it be utopia or anti-utopia? A world without deception, envy and crime. Full of honesty, freedom, love. (And yes, free love is like the kind that hippies dreamed of in the 70s, but much better). Time will tell, and time flies very quickly.
Source: https://habr.com/ru/post/341910/