Vasil Velikov, Developer in Sofia, Bulgaria
Vasil is available for hire
Hire Vasil

Vasil Velikov

Verified Expert  in Engineering

Software Developer

Location
Sofia, Bulgaria
Toptal Member Since
November 5, 2019

Vasil is a curious software engineer with in-depth knowledge of algorithms and mathematics. He has over ten years of experience writing high-performance software in C++. His expertise includes design, architecture, estimation, implementation, testing, integration, deployments, and documentation.

Availability

Part-time

Preferred Environment

Git, Visual Studio, Visual Studio Code (VS Code), Vi, Linux

The most amazing...

...software I have developed is a set of complex computational geometry algorithms used for photorealistic rendering.

Work Experience

Technical Lead Product Development Manager

2017 - PRESENT
PROS
  • Led a 10-member team of developers, QEs, and DevOps.
  • Contributed to RESTful API design.
  • Designed deployment procedures.
  • Automated the deployment process using Jenkins.
  • Implemented core product features using C++.
  • Performance-tested REST services.
Technologies: SaaS, Cloud, REST, Linux, Python, MySQL, MongoDB, C++

Core Software Developer

2016 - 2017
ESI Group
  • Developed various features in C++ 14.
  • Developed a generic C++ reflection framework.
  • Implemented geometry processing algorithms and visualization with OpenGL.
  • Developed the front and back end of a PoC of a web-based CAE data management system.
  • Developed the continuous integration system.
Technologies: Jenkins, Git, Node.js, JavaScript, GLSL, OpenGL, Java, C++

Software Developer

2014 - 2015
INCOM Storage GmbH
  • Designed and implemented a standalone Linux software for recording to CD, DVD, and Blu-Ray.
  • Implemented an extensive test coverage.
  • Created documentation with Doxygen.
  • Owned all stages of the development - design, architecture, estimation, implementation, testing, integration, and documentation.
Technologies: Linux, C++

Software Developer, Scientific Computing

2014 - 2015
Fraunhofer Institute for Algorithms and Scientific Computing
  • Designed and implemented a module for molecular potential fitting.
  • Applied local and global optimization methods.
  • Researched optimization algorithms from various research papers.
  • Contributed to the parallelization of the computations with non-blocking MPI calls.
  • Created documentation with Sphinx.
Technologies: Open MPI, SciPy, NumPy, Python

Software Developer

2009 - 2014
Chaos Group
  • Implemented and optimized rendering and computer graphics algorithms in C++.
  • Owned all geometry processing modules.
  • Integrated with third-party libraries and frameworks.
  • Contributed to detailed profiling with a focus on fine-tuning the algorithmic and memory performance.
  • Implemented Python binding for the C++ API.
Technologies: Mathematics, Algorithms, VTune, Intel, Python, C++

Search Engine for Airline Tickets

The computational complexity of the seemingly simple task of finding a return trip from point A to point B is immense. The evolution of the air travel industry has made the search for possible flights and prices intractable. This project attempts to address this complexity with a mixture of heuristic and caching techniques. The core of the search engine is based on various heuristic graph algorithms used to navigate through the search space. An upper layer of the engine aggressively precomputes and caches hundreds of gigabytes of data in NoSQL databases.

I oversaw the delivery of the project.
My responsibilities included:
- building the project roadmap and ensuring its delivery
- resource allocation
- definition of and adherence to the internal Agile processes
- release and deployment management
- active participation in technical and architecture designs
- active participation in code reviews
- delivery of core features

The technologies used were:
- modern C++, Python
- several SQL and NoSQL databases
- Linux, Git
- virtualization and distributed computing

Framework for Generic C++ Reflection

A key difference between C++ and most modern languages is the lack of reflection - the ability to perform runtime introspection and method invocation. The main reason for that is the core philosophy of C++ - "you don't pay for what you don't use." Reflection, however, has several useful applications even in the context of C++:

My responsibilities included:
- automatic serialization and deserialization
- automatic building of API bindings for other languages
- in-depth code analysis

The purpose of this project was to create a generic framework for C++ reflection that can be run on any code base without any modifications of the code. The implementation of the framework was based on a two-pass compilation; the purpose of the first pass was to gather and store the class meta information. The framework was written in C++ and exploited heavily modern C++ features - variadic templates and template trait techniques.

My responsibilities in the project were to design, implement, and document the entire framework, as well as provide proof of concept implementations of the aforementioned applications.

Subdivision and Displacement Geometry Algorithms

A key part of each photorealistic rendering engine is the underlying geometry, which represents all objects in the scene. There are various types of geometry from simple meshes, NURBS, metaballs, point clouds, and dynamic geometry, to name a few. The purpose of this project was to implement various types of dynamic geometry, generating demand only when needed. Geometry handling is one of the parts of a rendering system that requires the most processing time and memory. This is why the proper choice of algorithms and thorough optimizations are fundamental.

I worked on this project and the V-Ray rendering engine. I had ownership of the dynamic geometry modules.
My responsibilities included:
- design and implementation of new dynamic geometry generation algorithms
- maintenance and improvement of the existing algorithms
- in-depth profiling, performance, and memory optimization
- integration of third-party geometry libraries
- documentation

The technologies used were C++ and several profiling tools.

Molecular Potential Fitting

The project consisted of implementing a module for the potential fitting of the Tremolo-X software. The purpose of the module was to utilize various local and global optimization techniques to find a set of model parameters that minimize the discrepancies between the model values and the real data. The module was implemented in Python and was deployed on a cluster environment making use of the OpenMPI framework.

Languages

C++, C++14, Java, JavaScript, Bash, Python, HTML, PHP, CSS, GLSL

Libraries/APIs

Standard Template Library (STL), jQuery, Node.js, NumPy, SciPy, Open MPI, OpenGL

Tools

Git, CMake, Jira, Confluence, Visual Studio, VTune, Jenkins, Gerrit, Buildbot, Apache JMeter, Postman, Vagrant

Paradigms

Generic Programming, Design Patterns, REST, Concurrent Programming, Data Science

Other

Algorithms, Mathematics, Data Structures, Software Architecture, Processing & Threading, Profiling, Debugging, Performance Tuning, Full-stack, Numerical Methods, Computational Geometry, Vi, Cloud, SaaS, Rendering

Frameworks

Boost, Bootstrap, Swagger

Platforms

Linux, Windows, Visual Studio Code (VS Code), Intel, NVIDIA CUDA, Docker

Storage

MySQL, MongoDB, MariaDB

2012 - 2016

Master's Degree in Scientific Computing and Numerical Mathematics

University of Bonn - Bonn, Germany

2010 - 2012

Bachelor's Degree in Mathematics

Sofia University - Sofia, Bulgaria

2007 - 2011

Bachelor's Degree in Computer Science

Sofia University - Sofia, Bulgaria

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring