Senior Software Developer (C++/Windows)
2019 - 2022
Jungle Disk LLC
- Improved and reorganized the CMake build system. I created a unified way of building all programs on all supported operating systems, Windows, MacOS, and Linux, building installers, and automatic build of third-party libraries.
- Modernized the code and introduced modern C++ capabilities into the system by converting and using moved str constructs. The idea was to minimize the source changes outside classes that were redesigned and improve the internal class design.
- Introduced various design patterns, such as the producer-consumer, adapter, and visitor. The goal was to lower internal bindings and interdependencies between various parts of the source base.
- Performed a general reorganization of a complete codebase. The reorganization resulted in a cleaner codebase that is well-prepared for future changes and is much easier to maintain.
- Carried out investigations regarding the future design of a program to introduce automatic code generation for XML handling and remote procedure calls. This included using modern middleware libraries like gRPC and SSD code generators for XML parsing.
Technologies: C++, XML, Git, XML Parsing, Windows, Object-oriented Programming (OOP), Windows API, C, CMake, Multi-platform Development, SQLite, WiX Installer, MSBuild, Asynchronous Programming, Concurrency, Libcurl, Microsoft Visual Studio, OpenSSL, Amazon S3 (AWS S3), Google Cloud Storage, Windows File Systems, XML-RPC, Semantic Versioning, Data Encryption, wxWidgets, Boost
Head of Development
2013 - 2019
Uljanik Shipbuilding Computer Systems
- Developed virtual reality extensions for the ShipExplorer suite, which enabled a complete immersion into the ship. It was made using Oculus Rift and OpenGL 4.X was used in order to improve the user experience, such as shadows and water reflections.
- Built Stereo 3D extensions for the ShipExplorer suite. This is an OS-agnostic system that was designed to elevate user experience using Stereo 3D capable output devices. It was made using OpenGL.
- Implemented speed enhancements without any loss in picture quality raising from 10–15 FPS up to 150–250 FPS for the entire ship. This allowed the presentation and examination of the entire ship without any degradation in the user experience.
- Created a client/server system to share data and complete program state between many ShipExplorer processes running on different computers, reassuring that all have access to the same data. It was made using Apache Thrift libraries for RPC and C++.
- Constructed a system to control ShipExplorer from a remote process running on a different computer. It is a callback-based system that also allowed an external process to respond to user input. It was implemented using Apache Thrift, C++, and Python.
- Developed a modular build system based on CMake and utilizing SVN. This allowed many mutually unconnected repositories to act as one virtual repository without the need for the external capability of SVN, resulting in a greatly simplified build system.
- Added dynamic behavior to a ShipExplorer visualization subsystem using real-time diff-equations solving using C++. Each view parameter was presented as a SISO system, and an output of the system was used for the actual drawing.
- Investigated the possibilities of including a 3D ship model into business web applications in Uljanik Shipyard using JavaScript, WebGL, and Three.js.
Technologies: Rhinoceros 3D, 3D CAD, 3D, Virtual Reality App Design, Virtual Reality (VR), Solaris, Microsoft Visual Studio, XML, Three.js, Unix, wxWidgets, XSD, Rhino, C++11, Linux, JavaScript, WebGL, Apache Thrift, Oculus Rift, MATLAB, Boost, CMake, OpenGL, Python, C++
CAD Subsystems Designer
2005 - 2013
Uljanik Shipbuilding Computer Systems
- Built an ANTLR-based alternate system for the parsing and interpretation of a CADDS-5 specialized language which helped in the parametric creation of geometrical shapes.
- Developed a CORBA-based client/server system for the calculation of a remote hidden line removal in a heterogeneous network environment that allowed a great number of clients to be served very quickly. The calculations which had taken tens of hours were now completed in a few minutes.
- Introduced a streaming C++ interface into a CADDS-5 console, instead of keeping the original Fortran-like interface.
- Created a system of hooks that allowed an extension and general change of behavior of internal CADDS-5 commands.
- Introduced STL (Standard Template Library) into C++ programming for CADDS-5, using STLport.
- Introduced a CMake build system into the CADDS-5 development environment, resulting in a drastically simplified complete build cycle.
- Designed and created the first version of ShiplExplorer, a software suite for the visualization, examination, and augmentation of ship structures; it ran on Windows Linux and Solaris. It was made from scratch using C++, OpenGL, and Boost C++ libraries.
Technologies: 3D CAD, 3D, Solaris, Microsoft Visual Studio, XML, Unix, wxWidgets, XML-RPC, XSD, Linux, Standard Template Library (STL), ANTLR 2, CORBA, MATLAB, Boost, CMake, OpenGL, C++
Software Engineer (Contract)
2004 - 2004
Uljanik Shipbuilding Computer Systems
- Created a system for the automatic nesting of shell plates, running on Linux and Solaris.
- Built a library for the 2D manipulation and examination of geometric shapes.
Technologies: wxWidgets, C++
Software Engineer (Contract)
2003 - 2004
Teleconsult
- Created a visualization-and-manipulation library capable of handling huge terrain areas as a part of a web-based client/server system. It was used for the initial decisions for GSM mast placement.
- Implemented a real-time visibility check; taking into account the type of terrain, terrain heights, and terrain draping.
- Calculated the all-around visibility and shadowed areas as a function of position on a terrain, height of the mast, terrain type, and terrain draping.
- Developed a drawing speed management system using a geo-mipmapping approach to optimize the user experience.
- Built a multithreaded memory management system to keep the memory footprint as low as possible and assure that all of the relevant terrain tiles are loaded and visible.
Technologies: 3D, Microsoft Visual Studio, GIS, GRASS GIS, Visual Basic, OpenGL, C++
Software Engineer
2001 - 2004
IT-Base
- Improved the mathematical correctness of a program's back-end. All of the calculations were moved into a specialized, handmade library.
- Optimized the graphics speed by writing various assessment tests and then the drawing functions were changed accordingly. All of the dynamic texture manipulations were moved out of GDI and executed manually.
- Redesigned a visualization subsystem of the program. Numerous changes were made in order to replace the GDI visualization back-end with OpenGL.
- Redesigned an import/export subsystem by making a generic IO library where all of the different formats were represented as a series of callbacks, resulting in greatly simplified code.
Technologies: Microsoft Visual Studio, GDI(+), OpenGL, C++
Software and Simulation Engineer
1995 - 2000
Institute for Defence Studies
- Designed and implemented various algorithms for antitank missile guidance. The initial design and testing were done with MATLAB with the Control Toolbox and implemented, in real time, with C++.
- Created a visual interactive real-time tank shooting simulation, using a mathematical model of the Fagot missile. The inner loop of the autopilot was based on an "inverse dynamics" algorithm and the outer loop was designed as a semiautomatic system where it was only necessary to manually light the target. The result was a very robust system that was capable of coping with the highly nonlinear nature of Fagot dynamics and ultimately, increasing the safety of the man firing the missile.
- Developed a mathematical dynamics model for the MiG-21 aircraft. It was organized as a set of nonlinear differential equations and was checked on three levels: the recreation of longitudinal and lateral modes of dynamic behavior, the recreation of its the aircraft's performance (the maximum altitude or operational envelope), and recreated the behavior mentioned in pilot manuals for the real aircraft.
- Designed and implemented a complete real-time visual flight simulation using a mathematical model of MiG-21 aircraft. Using the previously designed mathematical model, I made a complete distributed real-time interactive visual simulation, based on RTLinux extensions. The core program ran as an RT process with the highest priority while the original Linux kernel was processed with the lowest priority. The mathematical model was re-implemented as a set of kernel modules, while the rest of the simulation ran in the "userland" space.
Technologies: 3D, Linux, MATLAB, OpenGL, C++