Head of Development2013 - PRESENTUljanik 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; initially, it began with 10-15 frames per second (FPS) for the entire ship and now can go up to 150-250 FPS. This allowed the presentation and examination of the entire ship without any degradation in the user experience. The speed-up was achieved by using spatial data organization in octree structures combined with OpenGL 3.1.
- Created a client/server system to share data and complete program state between many ShipExplorer processes running on different computers. It allowed remote discussions which assured that everybody was looking at the very same model in the very same way. 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 SVN repositories to act as one virtual repository, without the need of the external capability of SVN. The net result was a greatly simplified build system, with a very fine granularity for write access control of each particular repository.
- Added dynamic behavior to a ShipExplorer visualization subsystem. Before initiating the OpenGL drawing, all parameters (like zoom, translations, and rotations) are filtered by solving differential equations in real time. Each parameter was presented as a SISO system with a DC gain equal to 1.0 and an output of the system was used for actual drawing. It was implemented using C++ only.
CAD Subsystems Designer2005 - 2013Uljanik Shipbuilding Computer Systems
Technologies: C++, OpenGL, CMake, Boost, MATLAB, Corba, ANTLR 2, STLport
- 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.
Software Engineer (Contract)2004 - 2004Uljanik 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.
Software Engineer (Contract)2003 - 2004Teleconsult
Technologies: C++, OpenGL, Visual Basic, GRASS GIS
- 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.
Software Engineer2001 - 2004IT-Base
Technologies: C++, OpenGL, GDI
- 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.
Software and Simulation Engineer1995 - 2000Institute for Defence Studies
Technologies: C++, OpenGL, MATLAB, RTLinux
- 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.