Gordan Sikic, Developer in Medulin, Croatia
Gordan is available for hire
Hire Gordan

Gordan Sikic

Verified Expert  in Engineering

C++ Software Engineer and Developer

Medulin, Croatia

Toptal member since November 5, 2018

Bio

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

Jungle Disk LLC
C++, XML, Git, XML Parsing, Windows, Object-oriented Programming (OOP)...
Uljanik Shipbuilding Computer Systems
Rhinoceros 3D, 3D CAD, 3D, Virtual Reality, Virtual Reality (VR), Solaris...
Uljanik Shipbuilding Computer Systems
3D CAD, 3D, Solaris, Microsoft Visual Studio, XML, Unix, wxWidgets, XML-RPC...

Experience

Availability

Part-time

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)

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, 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++

Real-time Dynamic Behavior Template Library

This header file represents a "header only" library that defines dynamic behavior for variables of a certain type.

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.
1995 - 2000

Master's Degree in Multidisciplinary Technical Sciences

University of Zagreb - Zagreb, Croatia

1983 - 1990

Bachelor's Degree in Aerospace Engineering

University of Belgrade - Belgrade, Serbia

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

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring