Sergey Kosarevsky


E-mail: sk@(this site)


Date of birth: November 22, 1983

Spoken languages: Russian (native), English (fluent), German (elementary)

Experience summary

  • Mobile software development and 3D graphics on mobile platforms
  • Solid OpenGL experience
  • Industrial and scientific volume rendering for computed tomography and images processing
  • Implementation of real-time CAD 3D rendering systems
  • Interest in modern real-time rendering techniques


  • Languages and toolchains: C/C++, Object Pascal (Delphi, FreePascal), Python
  • Platforms: Windows, Android, BlackBerry 10, MeeGo
  • APIs and libraries: Win32/64 API, STL, ATL, Boost, Qt, OpenGL 4, OpenGL ES, OpenCL, OpenAL, GLUT, FMOD, FreeImage, LibVorbis/OGG, Android NDK
  • Version control and build systems: Subversion, Git, TeamCity (i mean i can setup the environment from scratch)
  • Software engineering: design patterns, refactoring, unit tests automation
  • Tools: Doxygen, LaTeX, Open Workbench, Trac, Mantis, Bugzilla, VTune, gdb (remote debugging)


  • 2007-2010 PhD in Engineering at North-west State Technical University, Automation department, St.Petersburg, Russia.
  • 2001-2007 Master’s honours degree in Engineering at Saint-Petersburg Institute of Machine-building, Faculty of nuclear machine-building, St.Petersburg, Russia.
  • 1995-2000 software development study at Anichkov liceum (additional education in Computer Science), St.Petersburg, Russia.


  • 2011 – present, Yandex [1] (after SPB Software was acquired by Yandex), St.Petersburg, Russia, Senior Software Engineer

Responsibility: development of the next-gen multiplatform mobile 3D user interface – SPB Shell 3D and Yandex.Shell.

Achievements: published the book Android NDK Game Development Cookbook.

  • 2010 – present, Saint-Petersburg Institute of Machine-building [2], St.Petersburg, Russia, Part-time Associate Professor

Responsibility: industrial measurements using computed tomography devices and images recognition techniques.

Achievements: published the book [3], received OPTEC 2012 grant.

  • 2010 – 2011, SPB Software [4], St.Petersburg, Russia, Senior Software Developer

Responsibility: development of the next-gen multiplatform mobile 3D user interface – SPB Shell 3D.

Achievements: established a MeeGo port of the project from scratch; added stereoscopic capabilities to the rendering pipeline; implemented copy-protection mechanism and many features all over the place.

Tools used: C/C++, Python, Win32 API, ATL, Android SDK/NDK, Eclipse, MeeGo SDK, Qt, gdb.

  • 2006 – 2010, Izhorskiye Zavody [5], St.Petersburg, Russia, Lead Engineer

Responsibility: development and deployment of new measurement methods, measurement data collection and analysis algorithms for coordinate-measuring machines; probes motion planning on coordinate-measuring machines.

Achievements: improved, implemented and deployed a repositioning method on coordinate measuring machines (see paper in Measurement).

Tools used: C/C++, Python, Win32 API, STL, AutoCAD, SolidEdge.

  • 2008 – 2010, Saint-Petersburg Institute of Machine-building [6], St.Petersburg, Russia, Part-time Teaching Assistant

Achievements: received St.Petersburg Government Grant No. 3.4/15-04/001, 2009; The President of Russian Federation scholarship 2009/2010 and OPTEC – Carl Zeiss grant, 2010.

  • October 2008, Carl Zeiss IMT [7], Oberkochen, Germany, Contract Job

Responsibility: fixed compatibility issues of ACIS renderer in Calypso metrology software with Windows Vista.

Achievements: solution was shipped as a patch to Calypso.

Tools used: C/C++, Win32 API, OpenGL.

  • 2006, Carl Zeiss IMT [8], Oberkochen, Germany, Internship

Responsibility: extended the ACIS renderer of Calypso metrology software with programmable shading functionality.

Achievements: solution was shipped in Calypso 4.6.

Tools used: C/C++, Win32 API, OpenGL.

  • 2002-2006 (with breaks), Izhorskiye Zavody [9], St.Petersburg, Russia , Internship (technician, engineer)

Responsibility: development and implementation of measurement methods; technical measurements with 3D coordinate-measuring machines.

Tools used: C, Object Pascal, Win32 API, OpenGL, AutoCAD.

Commercial software projects experience

  • Yandex.Shell (2011-2013, next-gen multiplatform mobile 3D user interface)
    • Designed and implmented many optimizations for the rendering subsystem
  • Linderdaum Puzzle and Linderdaum Puzzle HD (2012, multiplatform picture-puzzle games with unique features)
    • Used Linderdaum Engine to ship a multiplatform game on Android and BlackBerry OS 10
    • Coordinated a distributed team of 2 developers, 2 freelancer designers and 3 translators to build the product
  • SPB Shell 3D (2010-2012, next-gen multiplatform mobile 3D user interface)
    • Established a MeeGo port of the project from scratch
    • Added stereo capabilities to the rendering pipeline
  • Calypso 4.8: (2008, cross platform metrology software)
    • Adapted the ACIS renderer to Microsoft Windows Vista
  • Calypso 4.6: (2006, cross platform metrology software)
    • Extended the ACIS renderer with programmable GLSL shading
    • Implemented high-resolution screenshots (posters), different display modes for CAD geometry (transparency, hidden lines dashing, etc.), video player.
  • Tools: (2002-2003) for graphical representation and evaluation of measuring results collected via Leica TDA multitheodolite systems and autocollimators. Used as an internal software at JSC Izhorskiye Zavody
    • Implemented Bezier and NURBS splines and surfaces rendering using OpenGL
    • Implemented 3D data import from Leica AXYZ software and export to AutoCAD DXF format

Open source software projects experience

  • Linderdaum Engine (2004 – present) Real-time 3D rendering engine.
    • Designed and developed a 3D engine from scratch
    • Implemented many modern rendering techniques and effects
  • LinderScript Run-Time (2005 – 2007) An object-oriented scripting system and virtual machine integrated tightly into Linderdaum Engine. The goal was to create a system allowing script classes to be inherited directly from native C++ classes with absolutely no changes to a native C++ code and transparent invocation of scripted methods from the C++ code.
    • Implemented a scripting system where scripted classes can be inherited from C++ ones
    • Implemented a fast byte code virtual machine for it (comparable to Lua and Perl)
    • Got it done with only standard C++ features used (templates metaprogramming)
    • Made an ad hoc C++ code prepocessor to autogenerate all the necessary binding code

Research & development projects

Inspection of screw thread fits by virtual gauges method using data acquired from coordinate measuring machines and computer tomography systems

Funded by OPTEC – Carl Zeiss IMT GmbH grant, 12.2009-12.2010

Originator and co-researcher. The goal of the project is to find suitable simulation and feature extraction methods to implement a so called “virtual gauges” inspection method for screw threads. The project consists of two stages: the first stage is to extract screw threads’ parameters from point clouds scanned on 2D coordinate measuring machines; the second one should end up in feature extraction from 3D volume data obtained via computer tomography systems (Carl Zeiss Metrotom 1500) with possible approach to do a fit simulation of two CT-scanned threaded workpieces.


Kosarevsky S., Latypov V. Android NDK Game Development Cookbook []

Peer-reviewed publications

Kosarevsky S., Latypov V. Detection of screw threads in computed tomography 3D density fields // Measurement Science Review [1], Vol. 13. No. 6, p. 292-297, 2013. [Read:]

Kosarevsky S., Latypov V. Practical procedure for position tolerance uncertainty determination via Monte-Carlo error propagation // Measurement Science Review [2], Vol. 12. No. 1, p. 1-7, 2012. [Read:]

Kosarevsky S., Latypov V. Development of an algorithm to detect screw threads in planar point clouds // Measurement Science Review [3], Vol. 10. No. 4, p. 136-141, 2010. [Read:]

Kosarevsky S., Latypov V. Inertia compensation while scanning screw threads on coordinate-measuring machines // Measurement Science Review [4], Vol. 10, Num. 2, p. 68-71, 2010. [Read:]

Kosarevsky S. Practical way to measure large-scale 2D parts using repositioning on coordinate-measuring machines // Measurement [5], Vol. 43, Issue 6, p. 837-841, 2010. [Read:]

Kosarevsky S. Alignment problem while measuring thread pitch of large thread gauges on the profile measuring machines // The International Journal of Advanced Manufacturing Technology [6], Vol. 48, Num. 1-4, p. 267-272, 2010. [Read:]

Kosarevsky S. Determining alignment in measurement of a large-diameter thread by means of devices for profile measurement // Measurement Techniques [7], Vol. 51, Num. 12, p. 1273-1278, 2008. [Read:]

Winning awards and grants

  • OPTEC grant, 2012.
  • OPTEC – Carl Zeiss grant, 2010.
  • The President of Russian Federation scholarship 2009/2010.
  • St.Petersburg Government Grant No. 3.4/15-04/001, 2009.
  • Ranked 9th at ACM Northeastern European Junior Pilot Programming Contest, 2000.

Stack Overflow profile

Leave a Reply