Gordan Sikic
Verified Expert in Engineering
C++ Software Engineer and Developer
Medulin, Croatia
Toptal member since November 5, 2018
With over two decades of experience, Gordan is a veteran C++ software engineer with a strong background in numerical analysis and a passion for virtual reality, 3D graphics, and visual simulations. He is also experienced in mathematical modeling, CAD systems, and real-time systems.
Portfolio
Experience
Availability
Preferred Environment
Git, Windows, Linux, MacOS, 3D, C++, CMake, Rhinoceros 3D, OpenGL, MATLAB
The most amazing...
...thing I've designed and implemented a mathematical model for dynamic behavior of a MiG-21 aircraft to be used in a flight simulator for the Croatian Air Force.
Work Experience
Senior Software Developer (C++/Windows)
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.
Head of Development
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.
CAD Subsystems Designer
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.
Software Engineer (Contract)
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.
Software Engineer (Contract)
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.
Software Engineer
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.
Software and Simulation Engineer
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.
Experience
Real-time Dynamic Behavior Template Library
The dynamics are defined as single-input and single-output (SISO) system of the second order, using state space representation. The DC gain is 1.0, meaning that in a steady state, the variable will have the same value as the input.
Dynamic calculations are done in real time, using an Euler integration method, independent of the actual computing speed, provided that the CPU is fast enough (one of the key requirements of RT systems).
A dynamic variable behavior might be used, e.g., to smooth out movements of the mouse and to create a more appealing user experience in programs with OpenGL.
Education
Master's Degree in Multidisciplinary Technical Sciences
University of Zagreb - Zagreb, Croatia
Bachelor's Degree in Aerospace Engineering
University of Belgrade - Belgrade, Serbia
Skills
Libraries/APIs
wxWidgets, OpenGL, Standard Template Library (STL), GDI(+), Rhino, WebGL, Three.js, Windows API, Libcurl, OpenSSL
Tools
MATLAB, Qt Creator, CMake, Microsoft Visual Studio, Git, Subversion, GRASS GIS, Rhinoceros 3D, ANTLR 2, GIS, Wix Installer, MSBuild
Languages
C++11, C++, Python, JavaScript, Visual Basic, XSD, XML, C
Platforms
Solaris, Windows, Linux, Unix, Oculus Rift, MacOS
Frameworks
Boost, Apache Thrift
Paradigms
Object-oriented Programming (OOP), Multi-platform Development, Asynchronous Programming
Storage
XML-RPC, XML Parsing, SQLite, Amazon S3 (AWS S3), Google Cloud Storage, Windows File Systems
Other
Virtual Reality, Virtual Reality (VR), 3D CAD, 3D, CORBA, Concurrency, Semantic Versioning, Data Encryption, Programming
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring