E-mail: sk@(this site)
Date of birth: November 22, 1983
Spoken languages: Russian (native), English (fluent), German (elementary)
- 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  (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 , St.Petersburg, Russia, Part-time Associate Professor
Responsibility: industrial measurements using computed tomography devices and images recognition techniques.
Achievements: published the book , received OPTEC 2012 grant.
- 2010 – 2011, SPB Software , 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 , 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 , 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 , 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 , 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 , 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 http://www.linderdaum.com (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 [http://www.packtpub.com/android-ndk-game-development-cookbook/book]
Kosarevsky S., Latypov V. Detection of screw threads in computed tomography 3D density fields // Measurement Science Review , Vol. 13. No. 6, p. 292-297, 2013. [Read: http://www.measurement.sk/2013/Kosarevsky.pdf]
Kosarevsky S., Latypov V. Practical procedure for position tolerance uncertainty determination via Monte-Carlo error propagation // Measurement Science Review , Vol. 12. No. 1, p. 1-7, 2012. [Read: http://www.measurement.sk/2012/Kosarevsky.pdf]
Kosarevsky S., Latypov V. Development of an algorithm to detect screw threads in planar point clouds // Measurement Science Review , Vol. 10. No. 4, p. 136-141, 2010. [Read: http://www.measurement.sk/2010/S1/Kosarevsky2.pdf]
Kosarevsky S., Latypov V. Inertia compensation while scanning screw threads on coordinate-measuring machines // Measurement Science Review , Vol. 10, Num. 2, p. 68-71, 2010. [Read: http://www.measurement.sk/2010/S1/Kosarevsky.pdf]
Kosarevsky S. Practical way to measure large-scale 2D parts using repositioning on coordinate-measuring machines // Measurement , Vol. 43, Issue 6, p. 837-841, 2010. [Read: http://www.linderdaum.com/Papers/KosMEAS2010.pdf]
Kosarevsky S. Alignment problem while measuring thread pitch of large thread gauges on the profile measuring machines // The International Journal of Advanced Manufacturing Technology , Vol. 48, Num. 1-4, p. 267-272, 2010. [Read: http://www.linderdaum.com/Papers/KosIJAMT2010.pdf]
Kosarevsky S. Determining alignment in measurement of a large-diameter thread by means of devices for profile measurement // Measurement Techniques , Vol. 51, Num. 12, p. 1273-1278, 2008. [Read: http://www.linderdaum.com/Papers/Kos122008.pdf]
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.