This article is a collection of short and subjective mini-reviews of fourteen reports presented this year at the PyCon Russia 2023 conference in the Python zone. I want to note right away that I did not set a goal to accurately reproduce the texts or the content of the speeches of the speakers, but rather decided to leave in the memory of those present at the event a brief emotional clue about this wonderful event, and for those absent, if possible, arouse interest in the topics presented in order to find reports online and read them in person.
Also, of course, the purpose of the article is the opportunity to thank the organizers for the opportunity to attend such a significant event in the world of python, to thank the speakers for their work in preparing the material and for the mountains of adrenaline splashed out from a public speech, to thank the Magnit company, which paid for my ticket to this event .
Another small digression: this article is the first publication of the author for the Habr community, so do not kick much, all comments will be taken into account in the future, and criticism is perceived as a desire to make the author better.
So, let’s begin.
1. “Limit it”
The first report was, as the speaker himself positioned it – a cringe report: Limit it. It would seem that everyone in theory knows and simple truths about the need to set restrictions on various resource points… Denis told us the history of the project development in terms of analyzing the mistakes that they made during development. We all went through this, and every developer (including yours truly) has at least one sad story related to some kind of overflow … Listening to the report, I personally seemed to be looking in the mirror at myself, paradoxically from the point of view of anatomy, it did not sound. Thank you and respect to Denis for the incredible courage in public coverage of what many people have hidden in the distant recesses of the mind.
2. “Is it possible to go faster?”
A very informative report from Evgeny Afanasiev about the insides of a python (an ambiguous phrase, but the context decides). In particular, the speaker gradually, very carefully and, one might say, gently plunged us into the level of the python interpreter. And from there, from below, he showed us how the program code turns into fancy abstract syntax trees, which are transformed into bytecode and then, by disassembling, appear before us in the form of byte instructions. In other words, using a simple function as an example, Eugene demonstrated why Python code is slow, talked about ways to speed up its execution that currently exist, and about a whole community created with the sole purpose of making Python faster. The conclusions from the report, which I made personally for myself – what makes Python the most attractive language in the world, at the same time makes it slow. And that doesn’t seem to change, at least not for the foreseeable future. Nevertheless, thanks to Eugene for a fascinating dive into the depths of the python.
3. “Memory leaks and deadlocks: how to shoot yourself in the foot”
An interesting report from Streltsov Artem about memory leaks. As it turns out, no one is immune to bugs, especially hidden bugs like memory leaks. No one means absolutely, absolutely no one, including the standard libraries. And this is especially annoying. Instead of pleasant walks around the evening summer city and reflections on eternal topics, the tortured developer is forced to endlessly debug in search of a hole through which the application’s memory flows. Artem told us how to avoid this or reduce risks to a reasonable minimum. Simple and short tips, tortured by long hours of finding errors and debugging the application: choose proven and popular libraries, invest in good logging, test the application for leaks, check the settings of the test environment. Thanks to Artem for the report and for sharing valuable experience with us.
4. “Low level debugging”
Andrey Shubin in his report spoke about the correct and in-depth debugging of code in python programs. In particular, we were presented with various third-party solutions for debugging code and their comparative analysis. Andrey demonstrated how you can analyze the memory consumption of an application, the consumption of processor time, as well as analyze network traffic. Quite an interesting report on an unfamiliar topic. I myself did not have to debug my applications at this level, but definitely a plus in the treasury of knowledge on the topic of deep debugging. Andrei himself began his speech with the phrase: “You are debugging the wrong way …”, and, in my opinion, he more than justified his statement. Thanks to him for a kind of educational program.
5. “Lightweight CNC with EtherCAT in python and C”
A very unusual topic was presented by Danil Krytsyn about the use of python in an industry that is not typical for him (for python) – programming a machine tool with numerical control (CNC). At first glance, everything is quite logical: there is a python – a programming language, there is a CNC machine, i.e. program controlled machine. It would seem that we add the first to the second and we have a machine controlled by a python … But, of course, not everything is so simple. Danil in his report told us about the path that he and his team had to overcome from an intangible idea to a physical mechanism that, from a set of bytes and a piece of wood, is capable of producing, for example, a mobile phone stand. By the way, just such a stand, made on their own machine, was brought by Danil and presented it for the best question from the audience. I would like to thank Danil for a really interesting report and wish the guys success in their work. Perhaps at the next pycon they will come with stories about a robot controlled by a python, or maybe the robot itself will tell about it from the stage.
6. “How to use serverless and not mess things up”
The next report was devoted to a fairly relevant and relatively fresh topic of serverless applications. How to create a high-performance application without using servers? This question was answered by Peter Ibragimov from Whoosh. According to him, one of the tasks that the serverless approach solves is the ability to use as much production capacity as necessary to cover the current load at a particular point in time. Which, in turn, can either increase or decrease at different points in time, depending on the intensity of use of your application. For example, as the name of the presented company suggests, this is the load from the use of rented scooters: it is minimal at night, when users are sleeping, and maximal in the morning and evening, when they go to work and home, respectively. Server capacity to cover the load is connected and disconnected automatically by the environment in which the project is deployed. With this approach, you pay only for the server’s actual power consumption, without overpaying for equipment downtime. Sounds pretty good, right? But not everything is as simple as it might seem at first glance. The speaker spoke about subtle points, pitfalls and the dark side of using the serverless approach in his report with practical cases and valuable examples. Thanks to Peter for the invaluable experience and boring story.
7. “Who are these type-checkers of yours?”
A deep and detailed study of four popular solutions for type checking in python was presented in the report of Mikhail Gurbanov. In addition, the non-obvious possibilities of each of them were considered. A very pleasant report in terms of the quality of the material: everything is strictly structured and classified. If in my practice there is a choice of a specific type-checker, I will definitely use this report as a basis for making a decision. In a comparative analysis, MyPy won by a wide margin, and this is not at all surprising, since this project is supported by Guido van Rossum himself. Thanks to Michael and all their team for the research and for sharing with us.
8. Software vs Hardware. Confrontation»
The second day of the conference was opened by Mikhail Dyachenko, who presented a rather atypical report to the community. The project he is working on is responsible for the remote maintenance of automatic gas stations. They are self-service and structurally consist of several blocks that perform different roles: accepting payment, establishing a connection via the Internet, and others. So the question is, what does every developer do when his application or service starts to work differently than it was intended, i.e. when does the program crash? That’s right: in the general case, he goes to look for an error in the code. But what happens if the code serves complex equipment, which is also buggy and breaks? Then hardware glitches are added to the errors in the code. And sometimes the situation can literally reach the point of absurdity. For example, Mikhail told how a long and painful debugging turned out to be simply futile when it turned out that a caterpillar simply climbed into the unit controlled by the program, which closed the eclectic circuit with its body and changed the readings of the measuring instruments. In other words, Mikhail’s report was a kind of illustration to the well-known anecdote about a light bulb and programmers. Thanks to Michael for sharing with us, and we will move on.
9. Through pain with dependency-injector
Danil Gubanov from Tochka talked about the implementation of the dependency injection (DI) pattern in his speech: what problems DI can solve, difficulties and errors in implementation, choosing a third-party solution and analyzing the pros and cons of the libraries presented in the report. DI is one of the classic patterns in OOP and its main goal is to reduce the coupling of application components, as a result of which it becomes easily scalable, debugging and testing becomes easier. But that’s in theory. In practice, the incorrect implementation of this pattern can do more harm than good. For example, the readability of the code will worsen, which, as one of our mutual acquaintances says, will increase the cognitive load on the programmer, and, as a result, increase the number of errors, stretch the project timeline and make it difficult for new developers to enter the project. How not to avoid this and how to properly implement DI in your applications was told by Danil, for which many thanks to him and his team.
10. “Python functionality is a bad idea?”
The most sparkling report from Andrey Vlasovsky is located in the space between acting reincarnation and dissociative personality disorder. For thirty minutes, the stage turned into a theatrical stage, and the speaker into a theater actor of one role. Four personalities, four opinions – one actor. With all this, the report raised a rather relevant and urgent topic – “Functional programming versus object-oriented programming (FP versus OOP)”. The topic is quite complex and holistic. In my opinion, the speaker managed to maintain a certain balance between apology and criticism of the PLO. Nevertheless, it was not possible to achieve an ideal balance between the two points of view – the very title of the report semantically outweighs the OP, plus, the arguments, although they were effectively presented, protected the OP to a greater extent. And this is not surprising, since the speaker does not hide his biased opinion, which he honestly spoke about in the disclaimer to the report. Thanks to Andrey for the informative fan.
11. “Mojo – revolution or hype?”
Report from Andrey Gein. Mojo is a topic of relatively recent hype in the IT community. In May 2023, Modular introduced Mojo to the public. What is this? A new language, a python add-on, or a fiction with clickbait benchmarks laid out to attract attention? According to the developers of the new language, the speed of the application on it exceeds python by 35,000 (Thirty-five thousand!) Times. Is this possible, and if so, why? This and other questions were answered by the speaker as part of his study of new technology. As a result, in the near foreseeable future, a new, fast, high-performance programming language awaits us, which will be in demand in an environment where fast computing is the basis: ML, Data Science and Big data. We thank Andrey for the excellent report and for the time spent on detailed research.
12. “Carrot and stick architecture”
Nikolay Khitrov from Litres presented his report on how linters help to keep the code in the application uniform and clean, in accordance with the requirements and standards of the project. I really liked how easy and exciting the rather boring information was presented. After all, the analysis of the possibilities of modern letters cannot be called fascinating reading matter. Nevertheless, the speaker managed to present the information with a bit of worthy humor and at the same time convey the main idea. The opening illustration for the speech was especially amused, on which on one side there was a photograph of Donald Knuth, and on the other a cake from the Portal game. And if with a cake, as an allusion to a gingerbread, everything is less clear, then the photo of D. Knuth was accompanied by an epic phrase: “… and this is Donald Knuth, he looks at your code as a dull d… but.” As a result, the report made a certain impression on me personally and aroused a desire to at least indicate to our team the need to use characters in the project. Based on the latter, we can say that the speaker achieved his goal, at least in my person. Thanks Nikolai.
13. “The evolution of a new service and typical mistakes in its development”
Daniil Serbinovich from the Okko online cinema shared with the pycon participants the technology for the evolutionary development of the Python service. During his presentation, he touched on important aspects of the project’s growth from mvp to stable beta and beyond. He told how they had to cram the ever-growing needs of the business into their application, and what they ended up with. There was a lot of code on the screen, which is good – I personally love the code. More precisely, I love good code. It was very interesting to see how processes are built in such a highly loaded service as an online cinema. I still feel a kind of awe, a kind of secret feeling when you can look on the other side of the screen of your mobile phone, so to speak, peep into the holy of holies. Probably this is until you find yourself there in person, with a mouse and keyboard in your hands and a bunch of tasks in the jira. By the way, the author of this article received a prize for the best question from the audience and is now the proud owner of a sweatshirt from Okko. Thanks to Daniel for the report and for choosing me among other worthy applicants.
14. “Why we wrote another Python framework”
A rather high-quality report on the topic of clean architecture was presented to the python-public by Sergey Variasov. A team from the Evraz company was able to launch a new direction of python projects at their enterprise, while, according to the speaker, already at the mvp stage, achieve the goal set by the management to increase the profit of the enterprise. The success of the guys did not go unnoticed by the business and the team was set a new three-fold financial goal to increase profits … Which our colleagues successfully achieved, for which we congratulate them! According to Sergey, the “clean architecture” approach helped to achieve positive results in the project, thanks to which the developed application turned out to be flexible, composite and easily scalable. Once again, we congratulate the guys from the Evraz company on their success, thanks to Sergey for the success story and wish them to move at the same pace, without losing motivation to work.
In general, we can say that all the reports were very high quality and informative, and the speakers were great fellows. Separately, I would like to note that Andrey Vlasovskikh won the competition for the best report based on the voting results “Is functionality in Python a bad idea?” for the incredible presentation of the material.
Once again I express my gratitude to all those who took part in the organization of this event. See you next year in 2024.