Jeffrey Richter, Pavel Yosifovich, Greg Young and all-all-all. Hardcore and architecture on DotNext 2018 Moscow
First of all, there are some “uncategorized” speakers. These are the people who themselves could complete a separate conference. You know their names: Jeffrey Richter , Pavel Yosifovich and Greg Young .
Usually in articles on Habré next to the speaker, we immediately bring his photo. In the case of Geoffrey and Paul, a special case - you better remember these people from the covers of books:
On the right are the books of Pavel Yosifovich . He is known as the author of “Windows Internals”, “WPF Cookbook”, “Mastering Windows C ++ App Development” and five courses at Pluralsight. If you are also interested in C ++, Pavel recently posted a video on YouTube about the C ++ memory model. In addition, he is a well-known developer, trainer and speaker, but in this role we almost never saw him - he almost never happens in Russia. And so, Paul - we have on DotNext. This is a great success and victory, that everything turned out and he will really come. In his new report, “Windows 10 internals for .NET developers” , he will tell about interesting internal features of Windows 10, how these features affect .NET-developers and how they can be used for service.
On the left is Jeffrey Richter's book . We have already done a detailed interview with him.for Habr, if you really want to know what the person who sets the direction for the development of Azure is thinking about, you go there. Jeffrey is the serial creator of classic books. Having gained popularity in the early 90s thanks to the book about programming Windows 3.1, he did not stop. The next big book, Programming Applications for Microsoft Windows, became a classic, later published as “Windows via C / C ++” and has been published in several editions. The same happened with "CLR via C #". People are still asking when the next reissue of “CLR via C #” will be (if you are also interested in it, come to the conference and ask yourself!). He is now Partner Software Architect at Microsoft, working in the direction of Distributed Cloud Apps & Storage and dragging the entire platform along to the bright future. It is highly recommended to go for it.“Building responsive and scalable applications” , a report on the effective use of cloudy iron, from a person who knows all about it.
As for Greg Young , he doesn't have any particularly high-profile books. He is “only” the inventor of the term CQRS, one of the most famous and iconic figures in this direction. As you probably already guess, in CQRS everything is absolutely not as simple and clear as it seems at first glance, and Greg is the same person with whom you can discuss all this. If you want to see what explains Greg - he instantly sought on the YouTube , he once wrote in CodeBetter , and if you look on Amazon for books on CQRS, it was entrusted to him to write the introduction to the book «Exploring CQRS and Event Sourcing» authored by Director Splunk.
DotNext has established itself as a conference where leading speakers appear over and over again, revealing the most difficult special issues. There are several topics that turn almost any report into hardcore, for example, ensuring maximum performance and implementation details of complex technologies.
We have already talked about Jeffrey Richter and Pavel Yosifovich. But that's not all! Let's see what Raffaele Rialdi, Chris Bacon and Egor Grishechko have prepared for us.
Well, let's go with the trump cards, have you ever wanted to write your .NET runtime? Did it work out? Chris Bacon turned out to make a pilot project DotNetAnywhere , really compatible runtime with support for things like multithreading, PInvoke, garbage collection, and so on. It was his project that was used to build the Blazor framework , which allows you to run .NET directly in a browser using WebAssembly technology. (By the way, Nikita Tsukanov did a report about Blazor, there is video on YouTube ). In general, on this DotNext there will be “So you want to create your own .NET runtime?” - a rather geeky and unusual report about writing runtime.
Let us turn to more practical topics. If you have been to DotNext, then you should already be familiar with Rafael Rialdi and the topics on which he specializes. If not, now is the time to get acquainted!
This time Rafael will arrive with a new report “Boosting memory management in interoperability scenarios” . You may have noticed that new APIs have appeared
Memory<T>, and now you can have access to unmanaged memory, without doing meaningless copying into managed objects. In the course of the report, Rafael is going to bury himself in these APIs, show details on practically interesting examples like IoT, and that a mere mortal can do all this in his daily activities.
Recently, ValueTask, task-like types and IValueTaskSource appeared in recent versions of the language. Many do not even know that these types exist, and most of those who know about their existence, do not understand why they are. Egor Grishechko in the report “ValueTask: what, why and why” will tell you what these new funds are, what they are for and when their use is justified, and when not.
Almost all reports deal with performance in one way or another, even if in passing. This is a feature of the work of the developer. But some want to highlight specifically, these are the reports of four speakers:
- Konrad kokosa
- Yegor Bogatov
- Evgeny Peshkov
- Alexandre Mutel
We have already seen a report about our own .NET runtime. What about your own GC? Will we need to patch a terrible file of two megabytes of generic C ++ code? Fortunately, no. In .NET Core 2.1 they added a new feature called Local GC, which allows to completely replace the standard garbage collector with something handwritten or vice versa - to use the standard collector outside the usual .NET environment. In the report “Make your custom .NET GC -“ whys ”and“ hows ”Konrad Kokosa will introduce us to how all this is done. It will be interesting and useful mainly for those who want to get deeper into the memory management and behavior of the GC. The main essence of the report is not so much the fact that you came home from the conference and immediately transferred the product to a self-written something. Rather, this is a cool inspirational report that broadens the boundaries of the possible. You do not have to do this, but now you have the opportunity to experiment. GC seems less and less an incomprehensible thing in itself and more and more falls into the hand as a convenient and obedient tool.
But GC is just the beginning. Recently, in many runtimes it has become popular to give the user access before generating processor SIMD instructions, such as SSE and AVX. For example, in JS, they added (and removed) SIMD.js, in Java, the Panama project deals with it, and so on. Not bypassed this mod and .NET. We were given super powers, but they are such that it is not enough to have them - we must also be able to use them, and it is difficult. On the one hand, control at this level requires tremendous motivation and qualifications: to write a vector code that surpasses the scalar performance, you need to tense up not only with things like alignment, but also follow specific instruction sets, think about the result of generation and things that happen if you go off the fast track. On the other hand, if you really write as much as possibleperformance application and save every beat, then you can meet with the stupidity of even the most advanced compilers. Even such a comparatively studied problem, the allocation of registers, is NP-complete ( one , two ), requiring human intervention, and it is unlikely that the situation with SIMD was something better.
This year, Egor Bogatov arrives with a new report “Optimization Inside .NET Core” , in which he will tell how to generate SIMD from a high-level code. With Yegor, we will soon release a detailed interview on Habré. Now I want to say that Egor works at Microsoft, specializes in Mono and .NET Core, and on DotNext performs a report not for the first time. Keep a couple of previous entries:
Egor is very interested in the creation of computer and mobile games, in which you can apply all these optimizations. A recent story from Assassin's Creed Odyssey, just released, confirms this: developers had to specify AVX / SSE 4.1 processors in minimum system requirements, even though the client base was decreasing (these are Intel 2nd gen processors: Intel Core i5-2400 and higher called Sandy Bridge, and which are not all).
If the example of the best-selling game did not convince you, then definitely convince the Alexandre Mutel. This is the second speaker, with whom we will have a detailed interview for Habr. He works for Unity Technologies, a company that creates one of the most popular game engines, Unity . (By the way, they recently opened the C # part code for reading). Alexandre knows for sure that there is such a critical code with which ordinary C # still cannot cope. Therefore, they invented a special “burst” compiler: it turns a limited subset of C # into an optimized native code using LLVM, which allows you to achieve performance comparable to C ++, and sometimes even faster. How to generate code better than RyuJIT? Which subset of C # makes sense to write superfast code? These and other questions will be addressed in the report “Behind the burst compiler, converting the .NET IL to highly optimized native code by using LLVM” - you definitely won't want to miss it!
I would like to finish the description of this category with something that you can instantly gain immediate benefit from. Apparently, this role is perfectly suited “System metrics: collect pitfalls” . Evgeny Peshkov from Kontur company will tell how to overcome metrics: how do they differ from each other, what to do with performance problems in
PerformanceCounterhow Performance Counters are arranged inside and what follows from this and so on.
Eugene's previous report, “Special Exceptions in .NET”, took second place at the DotNext Piter 2018 conference. In it the features of each type of exceptions, such as
OutOfMemoryException, which arise in case of errors in the operating system or runtime.
Best practices and architecture
After our announcements, it can sometimes give the impression that DotNext is some kind of solid hardcore for low-level developers. In fact, there are enough other categories in the program. Take a good look at the program - next to most of the reports there are tags. Choosing which report to go on, pay attention to them. Hardcore - this is a tag about the performance and details of the compiler, next to them is a talking icon with a "goat." But see how many human themes there are that can be applied right now!
Meanwhile, to find excellent reports on “good practices” and “architecture” is a very difficult thing. The fact that one seems to be a brilliant idea for others sounds like complete nonsense and vice versa. Have the speaker in the company made a certain architecture of the system, and we have a different way? And what does that mean? Fortunately, there is a set of topics that can be discussed not only for reasons of taste.
First of all, these are areas in which trouble is evident. Every time you fly an airplane, you want to listen to a collection of music, and one famous Russian cloud service says - it’s good that you uploaded your collection to the built-in disc and went offline, but can you check the license? To verify the license ten kilometers vertically. The next time you download everything in Hi-Res to the internal drive and you are going to listen to the player application. And somewhere in the middle of the flight, an honestly purchased player asks - everything is fine, but I forgot to check the license and resume it. You can reach ten kilometers vertically. From a developer’s point of view, this looks even more hellish, because many familiar frameworks do not at all imply the absence of a network connection. In some cases, you have to write a lot of ugly things like duplicate code for direct and caching reading. Now we multiply all this on the cross-platform and stay at the broken trough. Or does it seem so at the beginning? Write in the comments. On DotNext there will be a wonderful report on this topic,“Creating airplane mode proof Xamarin applications” from Gerald Versluis, which you can know from numerous presentations and blog posts and a couple of books. Despite the title, this report will be interesting even to people who are not familiar with Xamarin.
There are eternal topics, the exact answer to which has not yet been found, but every year understanding grows. One of the enduring battles - TDD vs TestLast. Let's start with the fact that many who have problems with testing in general, at the process level - in the world of deadline driven development you will not unwrap too much. We even made a special conference about testing, Heisenbug. Programmers are still more difficult - TDD was invented around the year 99 as part of Extreme Programming. Despite all the genius, it did not capture the world, which is facilitated by a number of factors. In ordinary life, it turns out not even Test-First, but the real Test-Last. This approach also has advantages (it fits much more easily into deadlines), and a number of obvious drawbacks. Remember the mercilessly high-hop article "TDD is Dead" from the creator of Ruby on Rails? It was written in 2014. 4 years have passed, and the pendulum has not remained in place. And how do you yourself feel about this issue? On DotNext there will be “Test Last, Test First, TDD: when to apply this or that approach”- A report with a talking title from Alexander Kugushev. Alexander will dwell on all these approaches and consider their applicability on concrete, rather complicated examples.
One more thing echoes this report - “Pragmatic unit testing” Vladimir Horikov, a specialist of another type, an expert in rescuing huge enterprise legacy projects. Yes, we do not like to talk about it, but sometimes the silliest things lead to the downfall of even the most durable projects built for eternity . One of the technical factors behind the long-term success of technology companies is the correct unit tests. We all know a lot of practices, but in the long run, not all practices are equally useful. This report is not for beginners - it is for those who can write tests and want to bring their understanding to a new level. By the way, Vladimir has a great blog.in which he parses the most interesting architectural tasks. Pulp Fiction is highly recommended as a beginner junior for enlightenment, and seasoned seniors for systematization.
In the section about good practices, I would like to mention another report - “How to survive under load: a fault-tolerant server, a smart client” by Igor Lukanin. Igor is a person who, as a representative of Kontur, attended almost all of our recent conferences. We are with phillenniumrepeatedly interviewed him and quickly noticed that he was able to give a deep and accurate answer to a huge number of practical questions. It was possible not to prepare for an interview with Igor on purpose — we asked him any questions, and he answered almost everything. In addition to the main question: when will you come to our conference as a speaker? And so it happened. The description of the report says simply: “You will learn from the report how to create such microservices and carry out load testing to make sure that they are able to withstand the load.” There is no doubt that this will be the case, and it is worth a lot. In the end, the Contour infrastructure is probably the largest .NET production in Russia. In any case, you can always ask additional questions to Igor in the discussion area.
And finally, our last category today is architecture. Many of us remember Joel Spolsky 's article “Don't Let Architecture Astronauts Scare You” . If you haven’t read it - look, since then nothing has changed much. “Remember that architecture lovers usually solve problems that they think they can solve. Not the ones that are useful to solve, ”Spolsky reminds us. Our “architectural” reports are selected on a general basis: they must have a specific practical utility, a specific target audience, clearly convey thoughts in just forty minutes, set aside for the report. Despite the apparent simplicity of such requirements, not all applications pass them.
So who is with us this time? Greg Young we already discussed at the very beginning of the article. This is a “out of category” speaker who is worth a visit simply because it is Greg.
Vagif Abilov ( VagifAbilov ) will arrive with the report “Life of actors in a cluster: why, when and how” . Vagif is a renowned speaker and member of the DotNext program committee. By the way, particularly high demands are made on the PC participant report - this should be an example of how to tell good architectural reports. This time there will be a powerful report on the actor model, Akka and the limits of their applicability. We will discuss the scaling and basic patterns of cluster solutions. It is clear that you can tell more, but it is difficult to do without spoilers. Just come to the report and find out all this by yourself. All decisions are not some kind of astronaut flight of thought, but are tested by the experience of the Norwegian Broadcasting Corporation (NRK).
Vagif was not immediately a member of the PC, but started as a speaker on previous DotNext.
People learn architecture from old books that were written for Java. The books are good, but they give a solution to the tasks of that time with the tools of that time. Time has changed, C # already looks more like a light Scala than Java, and there are few good new books.
In the report “Instant Design,” Maxim Arshinov will talk about the criteria for good code and bad code, how and with what to measure it. Will make an overview of typical tasks and approaches, analyze the pros and cons. In the end, it will give recommendations and best practices for designing web applications. Maxim - you guessed it, well-known habroavtor @marshinov. He is a co-founder of the Kazan outsourcing company "Hightech Group" and besides doing business he teaches at the Graduate School of Information Technologies. That is, it is a report from a person who has been in the problem “from both sides of the barricade”: from the side of learning new technologies, and from the use in real business.
And finally, the last report in this review. Alexey Merson with the report "Domain-driven design: a recipe for pragmatics" will reveal to us the essence of DDD. More precisely, who does not know - find out. Who knows - learns better. Rich personal experience allows Alexei to tell complicated things in a simple and understandable language.
We remind you that DotNext 2018 Moscow will take place very soon - on November 22-23 at the Radisson Royal Moscow Congress Park. Tickets can still be purchased on the official conference website .
And our friends DevZen Podcast recently released a release from the PC DotNext, you can listen at your leisure.