The world's most popular open source database
Lenz Grimmer is a member of the community relations team at MySQL AB. He lives in Hamburg, Germany and has worked for MySQL since April, 2002. Before joining the community team in December 2005, he was a member of the release engineering team that is in charge of creating the official release builds of the MySQL server.
One of the new features in upcoming MySQL 5.1 Server will be the Event Scheduler. This feature was implemented by Andrey Hristov within the scope of a master’s thesis for the University of Applied Sciences in Stuttgart. We incorporated his contribution into our code base – you can read more about this feature in this article from Peter Gulutzan. Andrey is now employed by MySQL AB as a Software Developer. I asked him if he would be interested in sharing his story and provide some more background about himself.
Q: Hi Andrey, thanks for taking the time to answer my questions. Could you tell us some more about yourself and your personal background?
I am 27 and was born in Sofia, Bulgaria, in a freezing february afternoon of 1980. I was “infected” about computers and programming at age of 12 by my uncle. I studied physics for five years at the high school but realized that my passion really is about computers. From that time I remember the joke “The world is about physics and maths is just an instrumentarium to help” :).
Because of this passion, I applied for the BSc in Computer Systems programming at the Technical University – Sofia. After graduating in 2002, I enrolled in the MSc program there but decided to move to Germany after 2 semesters because I received an admission for the MSc in Software Technology, international program, at UAS-Stuttgart. From there I graduated in spring 2005.
In the near future, I plan to write another thesis for the TU Sofia to receive my master’s degree from there, too.
As you can see, I have spent most of my life in Bulgaria and the last 4 years in Germany. I currently live in Stuttgart, which is in the south-west of Germany and considered to be the most technically advanced region of Germany.
Q: Thanks for sharing your educational background with us! The result of your master’s thesis, the Event Scheduler, is one of the new features in MySQL 5.1. Can you tell us some more about how you came up with the idea and how it evolved? When did you get in touch with MySQL AB about it?
Actually, the original idea behind this feature wasn’t mine. I think it is interesting to learn how I ended up writing it as part of my thesis. I started my professional life in 2000, while I was still studying, doing PHP development. I liked the PHP project and spent countless hours on getting better at it. At one moment I started submitting patches and in the other one I received CVS commit privileges. I continued to contribute.
In this small community of core developers I met Georg Richter, the maintainer of the MySQL extensions. At that time, he was living in Stuttgart. When I moved to Germany to study, we became very close friends. Georg offered me to become co-maintainer of ext/mysql but by that time I had no free time because of studying and working part time.
In 2004 I spoke to him that I needed to write my master thesis for a company, because that is the University’s policy. By that time he was already an employee of MySQL AB and contacted people around, I suppose, Brian “Krow” Aker, Director of Architecture at MySQL.
At LinuxTag 2004 I met Brian in Karlsruhe and it was decided to implement a “cron for mysql”, also known as WorkLog #1034. I will never forget this number, which marks the entry number in our internal task tracking tool :). If I delivered code which could be used it was going to be included in the official MySQL source tree. So it started. There was some scratchy notes from MySQL AB how it should look like and what it should do. I then spent over a month researching what other vendors had implemented in that area. This was a requirement for the thesis, as it should not only include code development, but also some research work.
After five weeks had written a specification about the syntax and how the scheduler will work. It was fun to discover that what I designed as the syntax was quite similar to the what is used in Sybase AS IQ!
Subsequently the implementation phase started. There is still only one book which considers the server internals. But it is only a chapter of few dozen pages. The book is “MySQL Enterprise Solutions” from Alexander ‘Sascha’ Pachev , a former developer of MySQL AB. In his book, he mentions that “MySQL’s source code is not for the faint-hearted” (the citation could be unexact, as I don’t own the book anymore). There is also a document from MySQL AB which sheds some light on the server internals but it is far from complete. Learning how MySQL ticks is a lengthy process. At the same time I had to implement a new feature, which turned out to be a prototype. The prototype was ready in February 2005. In the meantime I suffered the loss of a family member, which made it a bit harder to deliver the code on schedule.
At that time I was already interviewed by MySQL AB for a position in Germany at a customer. My advantage was my knowledge of the server internals which the other members of the team didn’t have to the same extent. For about a year I was analyzing crashes of MySQL 5.0 beta versions in installations with more than 40.000 tables, fixing 5.0 bugs and 5.0 saw GA.
Then came the decision to add my code to MySQL 5.1, after a review. In fact, the scheduler was originally written for 5.0. So for about the next twelve months I was fixing scheduler bugs. The internal architecture passed two revisions and what is now in the sources should actually be called Event Scheduler v3…
The message between the lines here is, that if someone wants to become a MySQL developer, he has to be at least a bit active in the FOSS field and start contributing patches, or approach us asking for an idea on what to implement. We do care about the FOSS movement and like to work with people who also do.
Q: This sounds like you had some exciting times! What was it like for you to work with the MySQL developers before you became an employee? How was the coordination and review of your development work handled?
It was always a joy to talk to the developers. My supervisor during the thesis writing process was Sergei Golubchik, which was an honour. But it came with the price, that Sergei is quite busy, always. It was also a bit unfortunate that I had no access to internal resources of the company at that time. But I saw this process changed when another thesis was written for MySQL.
The problem is still that the MySQL developers are quite busy with their duties, because of course we want to deliver code of better quality quicker, that it is hard to supervise an external person. Still this investment can pay off by employing the person. In any way this is the best form of an interview with a candidate. Which actually used to be the way to evaluate hires in the past.
During the bug fixing phase I was supervised by Konstantin Osipov. My work with him was more than pleasure.
Q: Now that the feature has been incorporated, are you still involved in the further development and maintenance? Or have you been assigned to other tasks in the meanwhile? What is your role within MySQL AB now and can you tell us what are you currently working on?
There are two sides of the coin. I am no longer in charge of maintaining the scheduler because I am now working on mysqlnd, the new MySQL native driver for PHP. Still, I keep a close watch on the code, the bugs being entered and of course help everyone who needs assistance in fixing it. It is like a child of mine, I love it :)
mysqlnd is a quite new project of MySQL AB but quickly advancing. I would not name it a new connector, because it is actually not a connector, it is more like a special purpose client library. It is supposed to replace libmysql in the PHP world. In detail, one can decide to build the extensions to connect to MySQL with libmysql or with mysqlnd. mysqlnd is licensed under the PHP License, a BSD License derivate. This solves few problems:
Q: This sounds very promising, I hope we will soon hear more about this ongoing work! Speaking of work – where is your office? Do you work from home like so many others at MySQL AB? How do you like working this way?
I don’t have a separate office and like like most of my colleagues, I work at home. Well, my flat is in a building that was previously used for offices, so it looks like an office :). But that’s my style, I like cubic forms.
It is completely different experience than working in an office environment. I don’t see anyone during most of the day, so one should be able to work in isolation. Communicating over IRC however is a way to keep yourself from full isolation. Not being bound to an office has its advantages. I work in the environment designed by me, my books are nearby. For lunch, I can cook everything what I like, as I don’t like fast-food.
Q: Being a home worker myself, I know exactly what you mean. What do you do outside working hours?
It is hard, at least for me, to separate working from after-work hours, because when there is passion there should be no stop. Still I have non-working hours :). I like to travel around Europe. I enjoy riding my roller blades for hours, being replaced by ice-skating in the winter. Hiking in the mountains is also a pleasure, though the mountains nearby Stuttgart are kind of low.
In the cold winter evenings I prefer reading books or diving into Wikipedia.
Q: Well, so far this winter has been everything but cold – but I still hope you find some time for diversion. Thank you very much for answering my questions!
This interview was performed in January 2007