The Incomplete History of Eolymp
Hello everybody! My name is Sergey Kolodyazhnyy and I am one of the co-founders of the Eolymp. Today I would like to share with you the story of how my computer science teacher Zhukovsky Serhiy (@zss) and I created one of the largest Ukrainian sites for studying computer science. Of course, over the years, many caring people have helped the site. This post mentions only a few of them, but I am very grateful to everyone who contributed.
At school, I always liked the exact sciences and I always enjoyed going to math and physics classes. In 2004, I entered the Zhytomyr City Lyceum #1 and discovered a new subject — computer science. I immediately fell in love with the new subject and began to stay late at the computer science class after school. I still remember the blue QBasic screen and my first own program that drew an interface similar to a hard drive formatting screen. I don't know if I managed to scare my teacher Serhiy with this, but he definitely noticed my skill in the subject and invited me to join the team to prepare for the computer science competitions. Thus began my acquaintance with algorithms and sport programming.
For the next few years, I diligently studied algorithms, solved computer science problems, participated in competitions, and was learning new programming languages and technologies. In the process, I created games and programs for everything I could think of. I even created a program to learn irregular verbs in English. I had some difficulties with English and my teacher said that I wouldn't pass English, if I don't learn the irregular verbs. Thanks to my simple program, I've managed to learn the irregular verbs and passed the exam.
At that time, there was no HackerRank or Codechef. We were solving the problems during after school computer science lessons, and at the end of the lesson we received a floppy disk with tests and answers to check whether the solutions were correct. So one by one we copied the tests to the computer, then ran each and compared the answers.
Also there was the Zhytomyr Internet Olympiad, which was conducted by Volodymyr Didkovsky from Novohrad-Volynskyi. Participants sent their solutions by email, and the organizers checked them manually. There was also the Vinnytsia All-Ukrainian Internet Olympiad NetOI, they would publish problems once a year and let you submit solutions using a simple form on their website. The results were available in the end of each round.
2007
In the summer of 2007, I started working on a website that would improve the process of checking solutions in computer science lessons. It all started with a simple form through which the user could upload a solution. When the server received the request, it would immediately compile it and perform testing. Of course, this process took some time, and the user had to wait until the page loads. It took time to figure out all details and set up the testing process, but by the end of the summer I had a working system.
In the fall of 2007, we began to actively use the system during lessons and it was named E-Olimp. Olimp, because we used the system to prepare for the computer science competitions (in ukraine called school olympiads in informatics), and E by analogy with E-Mail, because now testing was done online.
A little later, we created a website, and placed the testing system on one of the computers in the computer science class. The site aroused the interest of teachers from other schools and little by little new users began to join us.
One of them was Prysiazhniuk Anatolii (awpris), a computer science teacher from Berdychiv Secondary School #17. Anatoliy loved the ideas of the site, he created dozens or even hundreds of problems, actively answered users' questions, helped solve problems, wrote articles and organized competitions. It is impossible to overstate the contribution that Anatoly made to the development of the site. Unfortunately, he is no longer with us.
2009
In 2009, the site has already registered more than 1,600 users from various schools and cities. The small site has grown into a complex system that can no longer withstand the load. Therefore, the site was completely redesigned from scratch. New design, new features and a new testing system.
The site continued to exist and gain popularity in Ukraine. There were more and more problems, competitions and users. The Department of Applied Mathematics and Informatics of Ivan Franko Zhytomyr State University became interested in us and started to promote the development of the site in every possible way.
Later, our team was joined by a lecturer from Kyiv National University, Medvedev Mikhail (medv), now a professor at the ADA University in Baku. Mikhail began to actively support the site, publish problems and organize competitions. Thanks to him, people learned about the Ukrainian site in Turkey and Azerbaijan. We added the Azerbaijani language to the interface of the site, and thanks to the efforts of teachers from Azerbaijan we were able to translate many problems. Today Azerbaijan is the third largest country on the site.
2014
In 2014, the site underwent another update, the system was rewritten from scratch using a modern, at the time, Symfony 2 framework. The testing system was significantly updated and began to use Docker containerization technology. Web servers and testing system were moved to cloud hosting, that is, instead of physical servers, we began to use virtual. And the testing system finally got a server in the data center, instead of a small personal computer in the corner of the Department of Informatics.
The site was renamed to Eolymp and was moved to a new address www.eolymp.com, because, I finally got better with English and learned that the correct spelling is Olympic, not Olimpic. Although the old address www.e-olimp.com is still available.
We have started to use the new system to hold city, district and regional competitions in computer science in some districts and regions of Ukraine. In order to make the competitions to go as smooth as possible, we have started to create separate, empty and completely isolated copies of Eolymp, available only to competition participants.
2020
Earlier this year, I completely upgraded the testing system again and rewrote its core in Go, a new, modern and powerful programming language. I also started using Linux containers to run solutions in different environments. It's a special method of isolating processes in the operating system. This has helped to add new programming languages, improved the effort required to maintain and update the system, and significantly reduced server maintenance costs.
The site has also undergone significant, although, maybe not very noticeable changes. I've updated the version of PHP and Symfony, I rewrote and optimized many internal processes, such as rating, problem indexing, etc. I also get to implement few new features, such as the ability to view the code by teachers.
We also moved the site and testing systems to AWS. It is one of the largest and most powerful hosting providers in the world. Thanks to AWS, we were able to significantly improve the security of the site and the data of our users and move to a fundamentally new level of network security.
And this month, we started actively using automatic scaling technology in AWS. Now when the number of users increases, we automatically add new servers to the system, and when it decreases, these servers are removed. This way, our infrastructure automatically adapts to the load, increasing the reliability of the site during peak hours and minimizing costs at other times.
We have a lot of ideas for the future, we really want to help teachers and their students in learning, create tools to help to study computer science. So if you have ideas, please share with us, tell us how you use the site, what you like and what you lack. This feedback is very important to us.