Vasil Velikov, Software Developer in Sofia, Bulgaria
Vasil Velikov

Software Developer in Sofia, Bulgaria

Member since March 7, 2018
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.
Vasil is now available for hire

Portfolio

  • PROS
    C++, MongoDB, MySQL, Python, Linux, REST, Cloud, SaaS
  • ESI Group
    C++, Java, OpenGL, GLSL, JavaScript, Node.js, Git, Jenkins
  • INCOM Storage GmbH
    C++, Linux, SCSI

Experience

  • Mathematics 15 years
  • Algorithms 13 years
  • C++ 13 years
  • Performance Tuning 10 years
  • Concurrent Programming 10 years
  • Software Architecture 6 years
  • MongoDB 5 years
  • MySQL 5 years

Location

Sofia, Bulgaria

Availability

Part-time

Preferred Environment

Linux, Vim, Visual Studio Code, Visual Studio, Git

The most amazing...

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

Employment

  • 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: C++, MongoDB, MySQL, Python, Linux, REST, Cloud, SaaS
  • 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: C++, Java, OpenGL, GLSL, JavaScript, Node.js, Git, Jenkins
  • 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: C++, Linux, SCSI
  • 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: Python, NumPy, SciPy, OpenMPI
  • 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: C++, Python, Intel VTune Inspector and Amplifier, algorithms, mathematics

Experience

  • Search Engine for Airline Tickets (Development)

    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 (Development)

    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 (Development)

    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 (Development)

    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.

Skills

  • Languages

    C++, C++14, Java, JavaScript, Bash, Python, HTML, PHP, CSS, GLSL
  • Libraries/APIs

    Standard Template Library (STL), jQuery, OpenGL
  • Tools

    Git, CMake, Jira, Atlassian Confluence, Jenkins, Gerrit, Buildbot, Apache JMeter, Postman, Vagrant
  • Paradigms

    Generic Programming, Design Patterns, REST, Concurrent Programming
  • Other

    Algorithms, Mathematics, Data Structures, Software Architecture, Processing & Threading, Profiling, Debugging, Performance Tuning, Data Scientist, Full-stack, Numerical Methods, Computational Geometry, Rendering
  • Frameworks

    Boost, Bootstrap, Swagger
  • Platforms

    Linux, Windows, CUDA, Docker
  • Storage

    MySQL, MongoDB, MariaDB

Education

  • Master's degree in Scientific Computing and Numerical Mathematics
    2012 - 2016
    University of Bonn - Bonn, Germany
  • Bachelor's degree in Mathematics
    2010 - 2012
    Sofia University - Sofia, Bulgaria
  • Bachelor's degree in Computer Science
    2007 - 2011
    Sofia University - Sofia, Bulgaria

To view more profiles

Join Toptal
Share it with others