This year C3D Labs celebrates the 20th anniversary of its C3D geometric kernel. Twenty years ago the founders of ASCON Group made the decision to begin writing a new mechanical CAD system, today known as KOMPAS-3D. To power the system, the company established a team to write a 3D kernel good enough to compete with foreign kernels in operability and functions. This is where the history of the "Kolomna" geometric kernel begins.
During the years that followed, ASCON continuously developed and improved the kernel. New modeling methods were invented, computational algorithms were developed, and additional modules were added such as a parametric solver, the data converter, and a visualization module. Behind all these changes, there always were a special group of people developing the geometric kernel, which more recently was renamed C3D.
Today, more people are taking an interest in geometric modeling, many of whom keep tabs on who develops what. So to celebrate the 20th anniversary, we decided to conduct a series of interviews with our development team. We begin with the women fr om C3D Labs and their first representative Anna Ladilova. The interview was conducted by C3D product manager Arkadiy Kamnev.
Anna, I know you are originally from the city of Nizhny Novgorod [formerly Gorky]. How did you end up in here Kolomna [near Moscow]?
I was looking for a job, and the only one that suited me at that time was a geometric kernel project in Kolomna. I was more than happy to accept ASCON's offer.
What did you do before that?
In 2007, I graduated from the Mechanics and Mathematics department of Lobachevsky State University in Nizhny Novgorod (UNN) with my master's degree in mathematics. In the last year of my masters course, I started to teach at UNN’s and Mathematics department, and then worked in the IT department of the Nizhny Novgorod State University of Architecture and Civil Engineering. After I successfully defended my Ph.D. thesis, I began teaching at the Applied Mathematics department of R.E. Alekseev Nizhny Novgorod State Technical University.
You joined the geometric kernel project in 2012. Were you recruited by C3D Labs or was it initially ASCON?
I first was employed by the mathematics unit of ASCON in Kolomna. My job there was supporting geometric kernel functions.
Was this the kind of work you were expecting to be involved with?
Of course. I wanted to work in an area closely related to mathematics. While it is not difficult to find a job in Nizhny Novgorod related to programming, there are no jobs involving mathematics apart from at educational institutions.
So now that you live in Kolomna, what were your impressions of the town? Do you miss Nizhny Novgorod?
I hardly miss Nizhny Novgorod at all. I really like it in Kolomna! It is a small and quiet town. My work is a 20-minute walk from home -- unlike Nizhny with its traffic jams and so forth.
Tell us about your job. What tasks do you mostly deal with?
Initially I was involved in surface modeling, doing so-called "surfaces on webs of curves." The problem was that some of the conjunctions [two or more events occurring at the same point in space] were not satisfied. More specifically, they functioned not quite as they should. I managed to correct them. Next I worked on edge and facet filleting operations. There are many other tasks that I'm working on now.
Tell us a few words about the C# project.
The C3D kernel is a library written in C++. At a certain point, the company needed a similar library in C#, and so we had to determine how best to adapt it to the .NET Framework. We decided to write a wrapper for the library in C++/CLI. (Common Language Infrastructure is a C++ extension for .NET.) Considering that both languages -- C# and C++/CLI -- are developed for .NET, the library objects and methods supported by the wrapper can be easily used in C# code. (A wrapper is a set of objects and methods that contain library method calls and library objects.) It was clear that to implement the task within a short timeframe we needed to create the wrapper code automatically. That is why we decided to write a special code generator. Python was chosen as the programming language.
—Had you used Python before?
I learned it on the fly.
Unbelievable. You studied at a mechanics and mathematics department that does not even mention computers in its name, and then you learned a new programming language just like that? Had you studied programming at the university?
We were taught C and C++ during the first two years, and we were expected to know numerical methods to some extent. In my fourth year, our department began cooperating with the Nizhny Novgorod Institute of Information Technology. Through them, interested students from the mechanics and mathematics department could take free courses on C++ and study the fundamentals of UNIX. Of course, I was among those students, and a year later I got my certificate.
If you know at least one programming language, then it is much easier to learn another. It's another thing, however, to learn the nuances of each language! That's why for now I can't say that I've become a great Python programmer. Nevertheless, our Swedish customer Elecosoft Consultec like developing their Staircon software with the wrapper we provided them.
Here is a question that interests me: What do you like most in your work?
I like it when I finally get to grips with a task. After all, not everything works after at a first attempt and so I have to try several different tracks. If none of them is any good, it can get annoying! But when I find a solution that works out well, I become enthusiastic, the development process runs faster, and I just enjoy seeing the results of my work.
Who helps you with ideas if you run out of them?
I search the Internet for specific articles that are openly accessible [not behind a paywall], including those by foreign authors. Even though we work in Russian, we at C3D Labs are not afraid of working in English; it comes with the territory.
Do you communicate directly with foreign customers?
Not often, but sometimes I do. They seem to understand me!
Let's go back to your research activities. In 2010, you got your Ph.D. diploma in mathematics. What was the subject of your research?
I wrote my thesis in mathematical logic, algebra, and number theory entitled "Deformations of Exceptional Simple Lie Algebra." It was purely theoretical work related to specific mathematical objects, the analysis of their attributes, and the building of new ones. Now, it turns out that most of the work addressed by mathematics are classification tasks. The classification results regarding the Lie algebras are used in physics in, for example, quantum field theory. When physicists discover new mathematical objects in their models, it is important for them to know what kind of objects they are, to determine their attributes. In my opinion, all physics is about building and studying mathematical models.
Do you continue your research activity, and do you plan to write a doctoral thesis?
We'll see. My most-recent article was just published in 2015, and it also concerned Lie algebras [generalization of three dimensional vectors with vector product].
When people arrive at ASCON’s Kolomna office, they often see you fully kitted out on your “iron horse.” How long have you been riding your bicycle to get about town?
Ever since I came to Kolomna.
Why don't you use a car or public transport?
There is no point to having a car in a small town when my work is a 20-minute walk from home, and I don't think that public transport in Kolomna is all that convenient. It appears to me that walking does not take much longer than taking the tram. So, I’m left with going by bike.
Do you ride in winter, too?
Yes, my bicycle has studded tires. I try to ride very carefully!
What is your favorite hobby -- what do you do in your spare time?
I practically have no spare time. After work, I often help schoolchildren and students with math. I regularly take part in academic seminars at Kolomna Pedagogical University; there is no time to get bored! Since my student years I've liked doing system administration tasks. For example, I’ve become a fan of the FreeBSD [Unix] operating system and so I follow its development, innovations, and technologies. Generally, almost all my hobbies are associated with computers, math, or reading books.
Do you read mainly scientific and technical literature, or do you read fiction as well?
Of course I read fiction. I like foreign classics, such as Victor Hugo. Lately, I've been reading books in English and French. When I get tired of sitting all day long at my desk, I go out cycling.
Tell me about your fondness for Gorodets [vivid folk] painting?
The craft is popular in the Nizhny Novgorod region wh ere I grew up. My father is good at painting, and when I was at school I took painting courses. I now mostly work with cutting boards, bread boxes, and so on.
There are many graduates who only consider their future in popular professions. What can be done to interest them in kernel development?
This work would be of interest to graduates specializing in technical and natural-science fields who do not want to forget all they learned in university after just one year in the workforce and are not afraid of challenges. Kernel development is a process that is much more interesting than just writing known code for existing algorithms. However, despite it being seemingly simple, my job often involves complex and non-standard mathematical work. There is plenty of room for improvement in development, flights of imagination, and self-fulfillment -- although an interest in processes and the ability to think outside the box, when needed, are crucial.
Do you think the Russian-built C3D geometric kernel can compete with Western-made kernels?
Of course it can! Our advantage is that with the knowledge gained from our domestic mathematics schools, we can create algorithms that are swifter and more advanced than those of our competition.