/** * @author Marios D. Staikopoulos * @email [email protected] * @site http://staik.net * @github https://github.com/marstaik/ * @date-modified October 15, 2019 */
About
Developer
Enthusiastic programmer that loves solving problems; always trying to get the most efficient or most maintainable solution possible. Experienced developer utilizing a broad spectrum of programming languages, always striving for more knowledge and self-improvement. Exceptional skills in team management and Object-Oriented Design. High preference to compiled languages such as C & C++, but always flexible to use others as well, such as C# and Java - Language is not a barrier. Enjoys learning new technologies and ideas when the opportunity presents itself.
Experience
HERE Technologies
Timeline: 2018 - Present
Role: Software Engineer II
A member of a team dedicated to the alignment and synchronization of multiple data sources, such as
LIDAR, GIS Imagery, and sensor data for use and consumption by autonomous vehicles. The synchronized
data is combined and used into the production of a 3D Mapping platform used by various automobile
manufacturers.
- Experience in the Agile software development process.
- Worked with a large team of engineers to successfuly deliver multiple projects to critical stakeholders on time and with excellent results.
- Development of new algorithms and techniques to enhance both data alignment and updating of various input sources.
- Key role in implementing new algorithms to drastically reduce user-involvement in the generation of 3D maps for autonomous vehicles. Resulted in a reduction of direct user involvement in certain areas of the map by 70%.
- Successful in leading efforts to modernize and secure a large and old codebase. Efforts entailed things such as bringing the codebase to more modern C++ compilers, compiling on multiple newer Linux operating systems, improvements to SWIG JNI bindings for exposed C++ code to external consumers, and quality of life improvements such as enforcement of a clang-formatting policy to be used by over 30 software engineers.
- Critical role in the both creation of new Products and in the continued long-term Support of Products.
- Development of advanced user tooling in proprietary UI software using C#/C++.
- Development of software automation techniques for rapid deployment.
- Extensive use of the GoogleTest suite for both C++ and Java Unit Tests.
The Sandbox
Relation: Owner
Timeline: 2017 - 2017
Status: Completed
A small game engine written in C++ and OpenGL to experiment with real-time computer graphics and physics. It features a modular graphics shading framework, multi-threaded scene-based updates, a multi-threaded simple physics and collision engine, and other unique features. Demo
- Modular Game Engine written in C++ and OpenGL
- Extensive use of C++ and Windows API's to create a multithreaded engine for fast scene-based and physics updates across multiple threads incorporating these features: Collision detection with tight bounding boxes, Collision detection with arbitrary geometry, Procedurally generated terrain (diamond-square algorithm), Procedurally generated plants with L-systems, and a Simple Physics Engine.
- GLSL shaders written from scratch supporting features such as: Per-pixel illumination of texture-mapped polygons, Toon shading, Skyboxes, and Generic Object shading.
University Projects
Timeline: 2016 - 2018
Status: Work in Progress
A collection of projects during my time at the University of California, San Diego
- Created and implemented various data structures in C and C++ such as Binary Trees, Hash Tables, Linked Lists, Polymorphic Generic Containers, Red Black Trees, Priority Queues, etc.
- Created an encoder/decoder application using Huffman encoding.
- Implemented various advanced graphics technices such as skeletal animation systems, particle based systems for cloth physics, and fluid dynamics.
Project Ki
Relation: Owner
Timeline: 2016 - X
Status: Incomplete/Hiatus
Prototype for a Live web chat over web sockets with "groups" as seperate chat rooms with user customizability. Prototyped in Python, written in C with use of JS, Nginx, MySQL.
- Prototyped in Python, written in C.
- Multi-processing with communication queues to separate modules of the server and allow certain areas of the application to resize their process and thread counts to better handle server load.
- C classes written to manage specialized hash table of user and connection data in shared memory (System V IPC) for multi-processed server applications.
- JavaScript custom framework for the front end. Connected to the server through web sockets for client-server communication.
- Nginx for serving static content.
- MySQL used to store client data for persistent sessions and information.
- Tested to handle 150k concurrent users on a single quad-core Xeon 3.0 Ghz machine with 8Gb of RAM and 1Gb NIC.
arkvid.tv
Formal Name: Arkvid LLC
Relation: Owner
Timeline: 2014 - April 2, 2016
Status: Terminated
Created a video streaming engine with ~15m unique visitors a month and ~200k-350k pageviews a day. Served high-bitrate 720p and 1080p encodes with a daily bandwidth usage of ~40TB, accumulating thousands of dollars a month for server costs. Most influential project. As the sole developer/owner, lead a team of 6+ people to provide constant uptime and server monitoring for stability and optimal streaming capabilities, as well as listen to user feedback for improvements.
- Use of Python, C, Bash, MySQL, PHP, JS, HTML5, CSS/SCSS
- Created a custom reusable PHP Framework with central registry, namespaces, class autoloading, and link handling, to name a few (same as rawranime).
- Created a custom reusable JavaScript Framework with asynchronous page loading, modular design, and OOP page binding. Compiled with Google Closure compiler with advanced optimizations enabled. Allowed for the use of dynamically loaded pages to be bound by JavaScript. (same as rawranime)
- Highly customized VideoJS HTML5 Player, compiled with Google Closure compiler and modularized for specific functionality that Arkvid provided.
- MySQL data backend, setup and optimized to support hundreds of requests per second across multiple processes.
- Python was used with bash and C to create a centralized server console that would distribute commands, updates, and auto-deploy new servers with minimal effort. Heavy use of multithreading for server handling and SSH connectivity. Specific algorithm developed in C to handle the server stress and distribute load between the network of servers.
- Git was used to create quick and easy distributions of back end server code to new servers and updates, with bash configuration scripts.
- Use of FFMPEG to re-encode videos optimized for streaming with the file atom placed at the head. Also used to generate a 10x10 grid of thumbnails for each video.
- Extremely fine-tuned and optimized Nginx to service large amounts of MP4 H.264 video streaming, as well as static thumbnail strips.
- Specialized server backend incorporating a mix of servers ideally built to run specific tasks, such as storage, streaming, and archiving.
- Lead a team of 6+ people who would facilitate monitoring services and social aspects.
- Used Piwik analytics software to monitor site traffic.
rawranime.tv
Relation: Owner
Timeline: 2009 - October 2016
Status: Terminated
Created an Anime streaming website with ~1.5m unique visitors a month and ~50k pageviews a day. First solo project and longest lasting. Lead a team of 10+ individuals who maintained the active community and other aspects of the site. Sole developer; the site went through four major iterations, finally shutting down on version 4.x. Extensive uses of PHP, HTML5, JS, CSS, MySQL throughout the entire lifetime of the site.
- Use of PHP, MySQL, Python, JS, HTML5, CSS/SCSS
- Created a custom reusable PHP Framework with central registry, namespaces, class autoloading, and link handling, to name a few.
- Created a custom reusable JavaScript Framework with asynchronous page loading, modular design, and OOP page binding. Compiled with Google Closure compiler with advanced optimizations enabled. Allowed for the use of dynamically loaded pages to be bound by JavaScript.
- MySQL data backend with PHP class wrappers to keep data organized and efficient. Allowed for consistent database reading/writing and prevention of "dirty-data" (orphaned rows, etc).
- Python web socket server used to send live-push notifications to users, as an alternative to AJAX Long Polling.
- Responsive HTML5 design for every screen size, with modular components that would appear and disappear reactively according to device type.
- Use of CSS/SCSS to compile stylesheets together and use of other applications such as Autoprefixer to automate browser compatibility.
- Finely-tuned Nginx, PHP7, and MySQL used to serve pages. Nginx tuned for PHP7-fpm and for static content serve. PHP7-fpm configured to use extensive opcache and output buffering. MySQL configured to use proper indexing and UTF-8 data types.
- Lead a team of 10+ people who managed the community aspects of the site.
- Used Piwik analytics software to monitor site traffic.
L2J Server Project
Relation: Server Owner/Developer
Timeline: 2008 - 2009
Status: Terminated
Server Emulator written in Java for the Popular MMO, Lineage II. Ran a personal private server and aided in development of new features in the Open Source Project. Faced challenges as a new programmer implementing new game modes and dealing with OOP concepts, Java structures/classes, and network logic.
- Used heavy amounts of OOP to emulate the game server written in Java.
- Excessive quantities of Network Client handling and optimizations.
- Contributed in small amounts to the Open Source Project.
Education
University of California, San Diego
B.S. in Mathematics-Computer Science - 2018
B.S. in Mathematics-Computer Science - 2018