Start of main content

  1. November 3. Online

    • Watch recording

      Talk type: Talk

      OpenTelemetry distributed tracing instead of logging everything

      Tracing processing errors or finding the source of a distributed system slowdown takes a lot of time. And it is difficult to generalize the experience of using tools to solve these problems.

      But OpenTelemetry can set common standards for exporting metrics and application traces, allowing to aggregate them in a distributed environment on different platforms.

      The speaker will break down examples of using OpenTelemetry in web services, databases, queues, and show how to export it all to different backends.

    • Watch recording

      Talk type: Talk

      Rich Model and Anemic Model: enemies or friends

      There is a lot of debate in the community about whether Rich or Anemic is the best model to use. At the same time, the camp of consultants actively supports the Rich Model, while the Anemic Model is popular among developers. Let's talk about the model without prejudices and from a practical point of view. First of all, let's define the terms Rich Model and Anemic Model, and the criteria by which we can distinguish them. Let's see if we should use two data models: a business model for the business logic and a separate data model for the base mapping. We'll see which cases are impossible to implement in the canonical Rich model. Let's discuss if the anemic model is as terrible as it is criticized. And come to the pragmatic model, which is the most common in practice.

    • Watch recording

      Talk type: Conversation

      Learning challenges from 0+

      Does everyone need to learn programming? At what age is it better to start and what language to learn first? What problems do teachers, parents, and students face? Let's talk about all this and the future of programming at the DotNext 2022 Autumn Main Studio.

    • Watch recording

      Talk type: Talk

      MediatR not needed

      In the industry, using MediatR is considered a good thing. After working with a large number of services that used it, the speakers realized that in 99% of cases it is harmful. You will learn more about why it is so and what evidence there is for it in this report.

    • Watch recording

      Talk type: Talk

      Interesting approaches in implementing design patterns

      Over the years of researching design patterns in C#, we have identified some interesting approaches that creatively exploit the possibilities of the language. In this talk, let's look at how some Gang of Four design patterns can be implemented in a very unusual way.

    • Watch recording

      Talk type: Talk

      Think Like an Architect: The Engineer's Mindshift

      Let's analyze common barriers and difficulties on the way of professional development of an engineer, as well as possible ways to overcome them. Let's see how an architect thinks in different situations, and try to understand the key differences and nuances that an engineer should take into account.

    • Watch recording

      Talk type: Talk

      Write like a ticktocker, not a grandfather. New C# constructs in combat

      Over 20 years of evolution, many versions of C# have come out, and gradually the set of constructs has expanded. Unfortunately, not many people can grasp this diversity in their heads and continue writing as "their grandfathers wrote in C". The report will contain many examples of how to rewrite the old code in a new way and how not to get carried away in this case.

    • Watch recording

      Talk type: Talk

      How to teach your child to program (and beyond)

      The discussion about whether all modern children need to learn programming, because "programming is a second literacy", has been going on since the middle of the last century.

      Let's try to slightly broaden this discussion and see what role the computer, as a tool, can play in shaping children's style of thinking and modern scientific worldview. Let's talk not only about programming, but also about generative art, Data Science, maker science, and artificial intelligence.

    • Watch recording

      Talk type: Talk

      Writing functionally in C# and F#

      Let's explore little-known features of C# and try to write code in F# for which there are no functional means in C#. And at the end, we will try to find out if F# is needed in .NET projects.

  2. November 4. Online

    • Watch recording

      Talk type: Conversation

      Opening

      We will talk about the schedule, sessions, and share the information. Join the broadcast to find out what's on the air soon!

    • Watch recording

      Talk type: Talk

      Zero-downtime deployment and databases

      Microservices have been part of our lives for a long time. They enable scalable and fault-tolerant solutions. But when a new version is deployed to a cluster, sometimes errors related to database updates occur.

      The speaker will break down popular ways of deploying to a cluster. He will show typical problems that occur when updating the database, and ways to solve them. We will also understand how updating NoSQL databases differs from traditional relational databases.

    • Watch recording

      Talk type: Talk

      Writing code when writing code: source generators

      The speaker will consider different variants of solving real-world problems and compare their pros and cons. We will discuss in detail the variant with code generation: what are the advantages of such a solution, what problems arise and how to solve them.

    • Watch recording

      Talk type: Talk

      Testing code that interacts with the database

      The talk discusses different approaches to testing database interaction in .NET, both using Entity Framework and other tools. We will compare pros and cons of different solutions and their implementation strategies.

    • Watch recording

      Talk type: Conversation

      Uniting .NET developers: how to launch and develop guilds in a company

      Guilds are communities of specialists united by a technological stack and common goals. Their members exchange experiences, set common standards and have a real opportunity to influence the company's processes. At the roundtable, we will talk about what other benefits guilds provide and how to launch them in your company.

      The participants of the discussion are the leaders of the .NET guilds from Alfa-Bank, Kontur, Dodo, and Postatech. They will share their experience in building and developing communities: you will learn how to sell the guild idea to the management, whether guilds should be part of the organizational structure, and what the leader's role is in all this.

    • Watch recording

      Talk type: Talk

      SkillsFlow: developing a system for managing skills and competencies

      The speaker will talk about the creation of the SkillsFlow skills development and assessment system. You will learn about the criteria for determining the level of a specialist, the tactics of interviewing a .NET developer, and more. The system is based on the SFIA, a global framework of skills and competencies for the digital world.

    • Watch recording

      Talk type: Talk

      Let's talk about descriptive statistics of performance distributions

      Application performance metrics are never described by a single number. They are random values from some distribution. But how do we describe that distribution? How do we consistently calculate the mean and degree of variation? How do we calculate quantiles and plot the density of a distribution? What to do with multimodality and extreme outliers?

      There are dozens of different methods for each of these tasks, each with its own characteristics. In this talk, we will dive into the fascinating world of descriptive statistics and discuss the variety of mathematical tools available. And after the talk, you will have a general understanding of the issues in this area and the adequacy of certain approaches, which will protect you from common mistakes when aggregating performance measurements.

    • Watch recording

      Talk type: Talk

      How to write applications that don't break in production

      Every developer considers many quality metrics in their work: performance, readability, extensibility. But for all this to be important, an application must simply work to begin with.

      This is what we will talk about: writing code which reduces the probability of error, its testing and deplotting. Let's discuss how to reduce the probability of bugs at each stage of development, how to track them during testing, and what to do if you still have uploaded incorrect code.

  3. November 20. Online + offline

    • Watch recording

      Talk type: Talk

      High refresh web

      Every year more and more devices with displays that support high screen refresh rates appear on the market. There is more and more software that requires graphical resources of the device (GIS systems, graphic editors, games) on the web. The speaker will tell you what you need to take into account to ensure that JS-animations on such displays and in such applications work without errors.

    • Watch recording

      Talk type: Talk

      What's new in .NET 7 and C# 11

      Together with the release of .NET 7 came C# 11 with new features: generic math, raw string literals and list patterns. In the talk we will look at what you can find interesting in the new version of .NET and related frameworks - ASP.NET Core, MAUI, Blazor and others. We will definitely touch upon minimal APIs, source generators and WebAssembly. We will also discuss what features make writing the modern cloud-native applications easier: integration with OpenTelemetry, autogenerating docker-containers, rate limiting and so on. And, of course, let's not forget about performance improvements.

    • Watch recording

      Talk type: Talk

      Introduction to Reactive Programming

      React is not reactive (spoiler: not really), but Vue, Svelte and Angular are. But why? In the days of jQuery, when a program received data, it had to know all the places where that data was involved in order to update it. Now the frameworks let you just update the data, and they'll do the mapping themselves. This is one of the principles of reactivity - dependency inversion. The mapping follows the change in the data to do something itself. In React this does not happen, but still it is better than it was - now we do not need to update manually in all places, the framework will do it for us. The talk will not be about frameworks, although we will talk about them, too, but more about the fundamental things.

    • Watch recording

      Talk type: Talk

      Algorithms of request trottling

      The speaker will talk about different approaches to implementing asynchronous locks and semaphores and their application to control the load on services (Rate Limiting). The standard SemaphoreSlim, System.Threading.RateLimiting, and other algorithms will be discussed.

    • Watch recording

      Talk type: Talk

      ESLint is more than just an "extend"

      ESLing is a powerful tool. If handled properly, it will serve faithfully. But often all the work with it is reduced to extend from a well-known plug-in. How to unlock its potential, how to reduce time for reviewing the code, how to make a reusable config and what Prettier has to do with it? You will learn this from Denis's talk.

    • Watch recording

      Talk type: Talk

      Instruction pipelining from 8086 to 2022: how the pipeline works in modern processors

      Superscalar pipeline, µop cache, branch prediction, pattern recognition, Out-Of-Order pipeline, re-order buffer, and simply hyper-threading - all these mechanisms and technologies are added to modern processors to speed up execution of instructions and improve performance of final programs. But globally modern architectures do not differ much from the first Pentiums and are very similar to 8086 processors. 

      Let's see how RISC-processors work in 2022 and how it affects .NET-programmers, using a simple example of a supermarket chain's revenue calculation.

    • Watch recording

      Talk type: Partner’s talk

      Code as data, or Be a cool programmer

      An engineer often has the problem: "How do I grow up?" You don't want to become a manager. Learn new frameworks and programming languages? Read a book about Hamster Driven Development? But you can look at your code differently, it is just a set of lines. You can analyze them, generate them, change them. Frontenders often write programs that translate some data into strings. So why not write a program that "writes" programs?

      Using examples, the speaker will show how other programs help us write/modify. From IDE prompts to handwritten generators and code modes. It's easier than it sounds. And that's where Alexander sees his development as an engineer.

    • Watch recording

      Talk type: Talk

      Hacks and hams from JS gamemode that are suitable for cycling app optimizations on the web

      A talk for those who write their own games or highly loaded distributed data models. For example, a startup with an infinite board and the shuffles on it. 

      The speaker will consider the connection between some high-level concepts and simple JS code. The knowledge gained can come in handy when writing your own bikes and when exploring low-level inserts in the code of popular libraries. The whole talk is based on GameDev experience, in particular the development of the PixiJS renderer. 

    • Watch recording

      Talk type: Talk

      lock(_sync): the illusion of a perfect choice

      Due to the fact that lock is a language construct that succinctly and clearly creates a monopoly code execution section, it creates the illusion of a single correct solution. The speaker will consider the algorithm of its work and answer the question: is it so?

    • Watch recording

      Talk type: Talk

      Event Sourcing: deep dive

      There are many challenges and pitfalls on the way to building an Event Sourcing system. You will have to make important architectural decisions, and the wrong choice will bring significant problems or even bury your project. The speaker has been involved in the topic of Event Sourcing for more than four years and has gone over every possible rake. In this talk, he will share his experiences.

    • Watch recording

      Talk type: Talk

      Open source from a lawyer's perspective

      Open source is a non-legal topic with legal issues at its core. We will talk about why a lawyer becomes a developer's best "friend" and how to avoid unexpected risks for a company when using open source components or software. We will also talk about the trends in prosecution for violations related to the misuse of open source. We will learn how it happens and why we should be worried about it when developing software in Russia.

    • Watch recording

      Talk type: Talk

      Animations and their optimization in corporate projects

      Despite the cheapening of device performance, animations are still quite a "heavy" story for the browser, and you have to put a lot of effort for smooth animation and high FPS. On the example of animations from real projects, written in Nuxt 2 with GSAP 3 and Lottie libraries, let's understand the nuances of wow effect creation with animations.

    • Watch recording

      Talk type: Talk

      The mysterious EF Core, or How to Write Your Own Extension

      The speaker was surprised to learn that EF Core does not know how to create views and track changes to their source code out of the box. You will learn about a package that allows you to close these issues. The speaker will also give useful information to those who want to write their own extensions.

    • Watch recording

      Talk type: Talk

      Why not put all the configs in a separate package, reducing the boilerplate to zero?

      Have you ever had to copy configs of ESlint, Babel, Webpack, and other tools from project to project? Your package.json already has so many plugins that you can't find real project dependencies among them? What if you could get rid of all unnecessary dependencies by putting them into separate thematic packages? And all the configs would be reduced to a single line of import, and the boilerplate to 100 bytes.

    • Watch recording

      Talk type: Talk

      Architecture tests

      When it comes to a more or less complex system, for which long-term existence and, most importantly, development is assumed, the question of architecture becomes extremely important. But during the life of the system, how do you control the rules that a particular architecture implies?

    • Watch recording

      Talk type: Talk

      How much does it cost

      Let's try to calculate what we need to run a more or less decent Node.js service on VDS (blue-green deployment, balancing, database, logging) and compare it with the AWS stack approach (lambda, RDS, API-gateway). And maybe even compare Selectel with Yandex Cloud.

    • Watch recording

      Talk type: Talk

      Batching in the React

      Dmitry pointed out that few developers at interviews answer the question about pitching. Some of them even hear this word for the first time. The speaker will talk about this phenomenon in React. How it worked in older versions and how it works now.

    • No record

      Talk type: Conversation

      Fail Section

      Every failure is actually an interesting engineering challenge. That's why we love hearing about other people's mistakes and how to overcome them.

      At the session, speakers will talk about their fails and what it took to fix them. The activity is not broadcast or recorded.

    • Watch recording

      Talk type: Talk

      Citydrive: The Ride Continues

      An amazing and in some places unfunny story about how Citydrive manages to give customers access to ten thousand cars around the clock. The recipe for one of the largest carsharing companies: NodeJS, Redis, RabbitMQ and a little pinch of luck.

    • Watch recording

      Talk type: Talk

      [Test] + <T> = ❤️

      For their work, popular test frameworks use attributes, the applicability of which has significant limitations due to their implementation in .NET. In the new version of C#, the potential of attributes is increased through generalizations. The speaker will show how generalized attributes allow you to create more efficient and expressive tests, and test frameworks, in turn, make this possible with their rarely used functionality.

    • No record

      Talk type: Talk

      Lightning Talks: What's bugging us about .NET

      We all love .NET. But to be completely honest, everyone has something they would like to change in the technology.

      This will be the focus of this section.

    • Watch recording

      Talk type: Conversation

      Debate.JS

      Truth is born in argument. Arguing well is a skill that requires practice. Politicians and businessmen use sports debates to practice this skill. Our participants will try their hand at this discipline. 

      You'll see our speakers and experts try to defend a randomly chosen point of view on a random JavaScript-related topic without preparation or searching for materials. Only arguments, eloquence, and courage!

    • No record

      Talk type: Talk

      Lightning talks

      Lightning talks are mini- talks from the conference participants. At Lightning talks there are three rules: the time of the talk is strictly not more than 10 minutes only conference participants can read reports; the  talk must somehow overlap with IT in a broad sense. The activity will not be broadcasted.