Today, we are going to introduce to you Maksim Khizhinskiy, leading C++ software engineer of VAS Experts company. Maksim is a member of the team developing deep traffic analysis platform VAS EXPERTS DPI, in particular, he is in charge for creating of such functions as CG-NAT and BRAS.
I graduated from St. Petersburg State Electrotechnical Institute named after Ulyanov-Lenin My first experience in programming was in 1983, when I was working on programmed hand-held computer MK. For its time, it was a cutting-edge gadget – over 10 registers, indirect addressing, memory for up to 100 commands. My father was so interested in this device that at the end squashed numerical calculation of polynomial of degree 9 in this would-be computer. I was inspired by this process, we were discussing how to free one more pair of memory cells, what must be optimized to increase degree of polynomial and other ideas. Then, there were summer courses for seniors in Leningrad University (currently), where I have tried PL/1 on Mini Computers and Single Network of Computers.
I started working as programmer since 3rd year in the University. In the beginning of 90s, I had to quit my very interesting, but nearly voluntary job as a programmer in the research institute and started working in a bank. My wife and I, we will never forget our feelings when I got my first banking salary that was 10 times bigger than “defensive” salary. So I went on working in different banks till 2006. I can’t say the job was very interesting, but it gave me an opportunity for self-development.
My next position was in Peter-Service company (developer of MegaFon billing system), where I got to know in practice what the software industrial development is, how to work in big team, and develop for different server platforms. It is in this place that I, having an access to various processor architectures, started studying zealously (for self-development) methods to increase software performance, which led me in the world of lock-free and other unconventional algorithms.
Then, I worked on many other projects, including speech processing for iOS and Android apps, software for STB (set-top box). Now I’ve joined a team developing deep traffic analysis system in VAS Experts.
C++ has enchanted me when I was in the Institute in 1990 passing course of object-oriented programming (OOP), and professor chose exactly C++ as language. It has to be said that at that time (I don’t know current situation) Department of Systems Programming taught intended mathematicians not languages, but approaches, Each approach has its particular language, which nuances we learnt ourselves. So, we learnt OOP on example of C++, and Java wasn’t even in the blueprint stage. Studying out C++, I just realized that it is mine, and up to now I have never been sorry about it. Even if I were to change the language, it would be difficult — now I even think in C++.
I can say nothing about Java, Ruby, because I don’t know them. When I see Java stack trace, I want to cry and laugh at once.
I like Python, its ideology, development. I use it, when I need to do something fast and cheap – tests, housekeeping scripts.
In general, lock-free data structures, or competitive data structures, — are the structures, access to which hasn’t to be synchronized from different flows, its algorithms allow to distribute concurrent requests. Traditional synchronization methods of concurrent access – mutexes, critical sections, conditional variable – actually make our multi-threaded program single-threaded, reducing performance and sometimes a lot. The only right way of multi-threaded programming is without shareable data, then each thread operates with its local data. But often it is difficult to carry out, and there are data shareable between threads. Competitive structures can help in this situation.
But lock-free data structures are not the main thing in multi-threaded programming, they are only one of many tools, which are quite dangerous. The main thing is to choose right internal program’s architecture, methods of its components interaction. This affects directly the future of your creation, whether it can be developed. For example, I’ve noticed that mutex is like cockroach: if program has mutex, it is trying to globalize, occupy more and more parts of code, it wants to be noticed. To prevent such a globalization, mutex is divided in several mutexes, which results in some strategy of its application, about which everybody always forget, because big team is working on the project. As a result project is not being developed. The reason for it is only one mutex-cockroach appearing in the project two years ago because of lack of time to think up alternative solution.
As in any other profession, you have to love your job. Programming is being changed very rapidly: new approaches and ideas, more advanced hardware, new languages, and the old ones obtain new capabilities — one has to monitor and apply all of this to stay up to date.
Team of VAS Experts has created a great kernel of deep traffic analysis system (DPI) VAS EXPERTS DPI, on the basis of which many interesting things can be made. Using it, we can control all traffic of the carrier and do it very fast on regular server hardware! To this kernel different functions can be added – from controlling the subscriber’s access to the network and “cutting” of the traffic to ensuring the security of both the subscriber and the provider – recognizing and reflecting network attacks outside / inside the operator’s network, and full support for LESS systems.
Currently, I’m working on BRAS function. BRAS tasks depend very much on configuration of the carrier’s networks. Stage by stage we add support for all best practices, it is very good that FastDPI can do many things from the box, we just have to pack it correctly and nicely.
Truth be told, I don’t know. Any project is mostly not a programming itself, but debugging of finished program, which takes 80% of time and efforts. Development in telecom is not so specific, problems and solutions are the same during development of any server software.
If we compare development of software for server and PC, then there are differences here. Mainly, they are in volume and delays. But this differences are blended gradually, in my opinion. For example, for an Android smartphone I used the same programming techniques, the same internal program architecture and the same C ++ language as for the server, and everything has worked out perfectly, only the scale was different.
I have never considered myself as a network pro, I’ve always been easy about network as a data propagation medium: got it, processed it, sent it For me, the main thing is “processed”.
In my opinion, network household differs from all the rest with utmost mismanagement and lavishness. The abundance of de facto standards and de jure standards, which often differ in important details. Also, it should be noted that there are major players in the market of hardware, which often distort standards or make their additions to them, making them mandatory for all; long life cycle of decisions; the high price of errors and omissions in the protocols – all this has to be taken into account and we have to adjust to it somehow. Perhaps, this is the main difference of “network programming”.
SCAT gives full control over traffic and, in principle, can satisfy any reasonable fantasies of both the subscriber or provider, and the state in the person of Roskomnadzor (RKN). The key word is reasonable here. Unfortunately, if the provider’s fantasies, as a rule, are completely pragmatic and feasible, the ideas of the RKN often violate the fundamental principles of network neutrality. I mean, for example, viewing the contents of https through a mitm-attack.
When I see prices for the devices of these producers, I’m proud! There are many reasons for it. The main is price, of course. But there are another too: we are a young, compact and ambitious company, we are more responsive to changes in the Russian market, because this is our market. Major companies, by virtue of their size and bylaws, are not as agile as we are. Although, they have some advantages: if, for example, Cisco says “do it in this way”, everyone will cry, complain, but do exactly so, and if we say that – very few people will listen. But from this one more advantage follows – we hear our customers.
Depending on what and why to import. In Russia, it is turning into some end in itself. The modern globalized world has blurred a long time ago the concept of imports for high technologies.
As for readiness, if we pay attention to who works at Google, Oracle, Microsoft and other major companies, we will see a lot of our programmers. It turns out that instead of replacing “their” solutions, the reverse process occurs – the moving of “our” brains “there”. A person is always looking for a better place, and a talented programmer also looking for “where it is more interesting”.
So, we have been ready for a long time and we can substitute, the main thing is not to interfere and create a normal climate in the country.
A very simple question – for 10 years already in my free time I’ve been doing my project https://github.com/khizmax/libcds about competitive data structures. I call it a weekend and long evenings project. Sometimes I act as a popularizer telling what lies at the base of lock-free structures, how to apply them, what interesting algorithms are there.
Of course, it helps in the work – my brains are already trained on “mutex evil” and on the recognition of the data race.
In my opinion, I am in my own place – I like what I do. If it becomes boring – I will change the company, but not the profession.
Just for fun: all the tests for professional suitability, which I passed, always put my “military” skills on the first place. I don’t understand this: two years of compulsory military service in the Soviet Armed Forces they tried to make a sergeant of me – it did not work out. So they let me go as a private . Perhaps, these tests implied a different Army with different military men.
As for any other profession – to burn with enthusiasm, enjoy the job, watch for professional news and new trends. A good programmer should be a fountain of ideas and crazy proposals. If to his next crazy idea you answer “try to implement it at your off-duty time” and he will do it – this is a real programmer!
To get more detailed information on advantages of VAS EXPERTS DPI and how to use it effectively on carriers networks, as well as on migration from other platforms, please, contact experts of VAS Experts – developer and providers of VAS EXPERTS DPI analysis system.