In conversation with Dmitriy Vyukov, Intel Black Belt Software Developer

Submit New Article

March 1, 2009 10:30 AM PST


Tell us a little about yourself: where do you live & what do you do for a living?
I live in Moscow and work as a C/C++ software developer. At my current job, I work with telecom servers, client-server systems, VoIP. In my free time, as a hobby, I work on synchronization algorithms, threaded code verification tools, multi-core processor programming models and everything related to that.

What was your first experience in the IT industry?
In my first job, I worked on testing web applications. Although I transferred to another department as a programmer fairly soon, I don’t regret having worked as a tester. Quite the reverse; I actually believe that it is a necessary and useful experience for any programmer since testing is an integral part of the development process.
I had taken up “amateur” software development much earlier. When I was nine, my parents gave my brother and me our first “computer” – it was an MK-85 programmable microcalculator. Even though it was just a microcalculator with a one-line display, you could program it with a simplified Basic dialect. Then there was a ZX-Spectrum, and then later, an IBM PC compatible computer with an 80x286 processor. Although much of my computer time then was dedicated to games, I’ve always been interested in “making the computer do what I want” through programming. For me it was a sort of a toy construction set, but with a much greater variety of details.

That's great. Can you talk a little about the technologies do you work on? Which of these are you most impressed by?
Hard to tell… I can be impressed by something new and unconventional, so as my outlook and expertise increase, fewer and fewer things impress me. Besides, most of the technologies are not something new, but something old and well forgotten on a new round of development. The latest two things that have really impressed me, given me the feeling that “there’s something else there, something new and fundamentally different from what I know” were lock-free synchronization algorithms and synchronization algorithms for relaxed memory models.

What excites you about being on communities, participating in discussion forums?
What interests me most in communities and forums is exchanging experience and ideas with like-mined people. I always strive to be “at the cutting edge”, to take an interest in everything new and try to make my own contribution into the progress of the IT sector. Although book materials are well presented and comprehensive, they inevitably lag behind the current state of the industry by at least a couple of years. Some relevant materials may be discovered in research articles, but their topics are often more theoretical rather than applied; Besides, articles are a unilateral communication channel, so to speak. In such a situation developer forums and communities are an exceptionally valuable resource where you can find new ideas “right from the horse’s mouth”, where you can publish your own ideas and receive valuable feedback. In particular, this is precisely what has attracted me in Intel Software Network.

Besides, helping your colleagues, both beginners and a lot more experienced ones, strange as it may seem, it is a very good source of your own development. You can’t explain anything to anybody simply and clearly unless you understand it in detail yourself. (“If you can’t explain the relativity theory to a child, you don’t understand it yourself.” A.Einstein). Communication at a professional forum is a constant incentive for your own development, you have to study documentation, conduct tests, organize and structure your knowledge.

What excites you enough to wake up every morning?
I work with threading and synchronization, so I’m certainly inspired by what’s currently going on in the field of microprocessor technologies. Processors become multi-core, cores come to support more than one hardware thread, separable data caches are added, GPU starts working together with the processor, processors are integrated into NUMA systems, and all this comes to be located on everyone’s desktop. This is really a turning point in the history of computer engineering.
All these trends cause numerous problems, but at the same time they provide the opportunity to start a new page, offer a ground for developing and implementing new ideas, models and approaches – and which developer doesn’t like to invent new approaches and rewrite their code from scratch? :) Of course, everybody would have preferred further regular increase of processor clock speeds without any architectural changes; but at this stage this is already impossible due to technological reasons. And if this is so, I’m here to be a part of all this.

Tell us about the upcoming projects are you working on...
Right now I am working on the development my library for unit testing of Relacy Race Detector synchronization algorithms (http://groups.google.com/group/relacy); the major direction of my work is to simplify writing user unit tests. Ultimately I’d like to have an option of testing the project production code directly without any alterations… although apparently that can’t be fully achieved under the current approach.
At the same time I’m developing new synchronization algorithms, aiming to to achieve linear scalability in multi-core, SMP and NUMA systems (http://groups.google.com/group/lock-free).
Also in the background mode I’m working on my idée fixe – something like an enhanced Erlang + enhanced Threading Building Block + embedded support of scalability-oriented design patterns, and all this wrapped into a high-level C++ library. I know ambitious projects of such scale are doomed to failure :), but that doesn’t bother me right now, because I’m not bound by any commercial obligations and deadlines in this respect. However, working on the project is interesting and educational as such, and it makes me ponder on numerous relevant and nonconventional issues. I don’t know, possibly this project might see the light later on…

What improvements/ changes would you like to see on the Intel Software Network?
Even more participants, even more interesting discussions and blogs, even more technical materials!

Thank you for your time Dmitriy!