{"componentChunkName":"component---src-pages-index-js","path":"/","result":{"data":{"general":{"firstName":"Stefan","lastName":"Ginev","professionalTitle":"Software Developer","introduction":"<p>My programming career over the last 11 years has often had me switching between wildly different sets of techonologies battling a vast variety of tasks and projects. Combined with my split developer-personality, this has formed me into someone highly adaptable to new frameworks, tool-sets and languages, while delivering professional quality.&nbsp;</p><p>By day I am a full-stack developer, leaning mostly toward React, Node.js and MongoDB, with basic competence in DevOps and continuous delivery. By night I am a game developer, utilizing either Unity, or this same stack, combined with various WebGL libraries.</p><p>I'm immensely passionate about interesing and innovative ideas from both of my worlds, and <span style=\"background-color: transparent; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit; letter-spacing: 0px;\">I am always excited to learn something new. I'm particularly strict about good UX, so I take care to provide beauty and performance along with functionality in my work.</span></p>","projectsPrologue":"I have worked on a number of projects both at the office, and at home. These include games and apps, realized via different technologies for web, android and flash (when it was cool). I handle mostly front-end business and visual logic; my back-end work consists predominantly of multiplayer server logic, and simple rest api and websites.","miscellaneous":"<p>Whether as personal projects or to assist my workflow at the office, I've also familiarized myself with several online and self hosted cloud IDEs, such as Gitpod, CodeServer (vscode in the browser) and Cloud9.</p><p>Occassionally I work on some home-automation/IOT projects, utilizing a box of pies at home and the best and cheapest Aliexpress has to offer in terms of gadgets and switches.</p>","languages":"<p><a href=\"https://certs.duolingo.com/qbgyunmd\" target=\"_blank\" rel=\"noopener noreferrer\">English<span>&nbsp;</span><span class=\"lang-desc\">(Duolingo Cert)</span></a></p>","skillsList":"Unity3D\nNode.js / Express.js\nThree.js (3D engine)\nPhaser\nC# .NET\nPython\nTypescript\nReact, Angular, CSS3\nGoogle Firebase\nAdobe Photoshop\nDocker\nJava","education":"<h4 class=\"degree\">Computer Science</h4><h5 class=\"meta\">TU Varna</h5><div class=\"time\">2007 - 2011</div>"},"contactDetails":{"nodes":[{"id":"DatoCmsContactdetail-4861745-en","typelabel":"Email","label":"choephix@gmail.com","href":"mailto:choephix@gmail.com","faIcon":"fas fa-envelope","visible":true},{"id":"DatoCmsContactdetail-4861751-en","typelabel":"Phone","label":"+359 886 791-663","href":"tel:+359 886 791-663","faIcon":"fas fa-phone","visible":true},{"id":"DatoCmsContactdetail-4861758-en","typelabel":"Viber","label":"+359 886 791-663","href":"viber://chat/?number=+359 886 791-663","faIcon":"fab fa-viber","visible":true},{"id":"DatoCmsContactdetail-4861749-en","typelabel":"Skype","label":"choephix","href":"skype:skype","faIcon":"fab fa-skype","visible":false},{"id":"DatoCmsContactdetail-4862135-en","typelabel":"Portfolio Link","label":"sginev.github.io/portfolio","href":"sginev.github.io/portfolio","faIcon":"fas fa-globe","visible":true},{"id":"DatoCmsContactdetail-4861763-en","typelabel":"Demos","label":"project demos","href":"https://stefanginev.dev","faIcon":"fas fa-star","visible":false},{"id":"DatoCmsContactdetail-4871035-en","typelabel":"Github","label":"github.com/sginev","href":"https://github.com/sginev","faIcon":"fab fa-github","visible":true},{"id":"DatoCmsContactdetail-4871036-en","typelabel":"GIthub","label":"github.com/choephix","href":"https://github.com/choephix","faIcon":"fab fa-github","visible":false},{"id":"DatoCmsContactdetail-4862136-en","typelabel":"Linkedin","label":"linkedin.com/choephix","href":"https://linkedin.com/choephix","faIcon":"fab fa-linkedin","visible":true},{"id":"DatoCmsContactdetail-4862137-en","typelabel":"Twitter","label":"@choephix","href":"https://twitter.com/choephix","faIcon":"fab fa-twitter","visible":false},{"id":"DatoCmsContactdetail-4862138-en","typelabel":"Facebook","label":"facebook.com/choephix","href":"https://facebook.com/choephix","faIcon":"fab fa-facebook","visible":false}]},"skills":{"nodes":[{"id":"DatoCmsSkill-4871042-en","label":"Typescript / Javascript","faIcon":"fab fa-js","href":"https://www.typescriptlang.org/","note":"Microsoft's typed superset of Javascript","confidence":5,"priority":5,"categories":["web","game"]},{"id":"DatoCmsSkill-4871044-en","label":"HTML / CSS3","faIcon":"fab fa-html5","href":"https://html.spec.whatwg.org/","note":"+ Responsive design and CSS animations","confidence":3,"priority":4,"categories":["web","game"]},{"id":"DatoCmsSkill-4871048-en","label":"Node.js + Express.js","faIcon":"fab fa-node-js","href":"https://nodejs.org/","note":"Ryan Dahl's best mistake","confidence":4,"priority":5,"categories":["web"]},{"id":"DatoCmsSkill-4871073-en","label":"React","faIcon":"fab fa-react","href":"https://reactjs.org/","note":"Facebook's declarative Javascript library, killer of Angulars","confidence":4,"priority":5,"categories":["web"]},{"id":"DatoCmsSkill-4871060-en","label":"Docker","faIcon":"fab fa-docker","href":"https://www.docker.com","note":"OS-level virtualization. Like VMs, but useable","confidence":3,"priority":4,"categories":["devOps","web","game"]},{"id":"DatoCmsSkill-4871076-en","label":"MongoDB","faIcon":"fas fa-leaf","href":"https://www.mongodb.com","note":"Modern NoSQL databases","confidence":3,"priority":3,"categories":["web","game"]},{"id":"DatoCmsSkill-4871063-en","label":"Firebase","faIcon":"fab fa-google","href":"https://firebase.google.com","note":"Google owned mobile/web application platform","confidence":3,"priority":4,"categories":["web","game"]},{"id":"DatoCmsSkill-4871065-en","label":"Python","faIcon":"fab fa-python","href":"https://www.python.org","note":"A type of dangerous snake","confidence":3,"priority":4,"categories":["web","game"]},{"id":"DatoCmsSkill-4871062-en","label":"C# / .NET","faIcon":"fab fa-microsoft","href":"https://docs.microsoft.com/en-us/dotnet/csharp/","note":"General purpose typed programming language, developed by Microsoft","confidence":3,"priority":3,"categories":["game","web"]},{"id":"DatoCmsSkill-4871046-en","label":"Unity","faIcon":"fab fa-unity","href":"https://unity.com","note":"The game engine. Althought the phylosophical concept too, in a way","confidence":4,"priority":5,"categories":["game"]},{"id":"DatoCmsSkill-4871051-en","label":"Three.js","faIcon":"fas fa-dice-d6","href":"https://threejs.org","note":"A JavaScript 3D rendering library for your browser","confidence":3,"priority":3,"categories":["game","web"]},{"id":"DatoCmsSkill-4871057-en","label":"PIXI.js","faIcon":"fas fa-play-circle","href":"https://www.pixijs.com","note":"A beautiful website. And a 2D rendering library","confidence":4,"priority":4,"categories":["game","web"]},{"id":"DatoCmsSkill-4871058-en","label":"Adobe Photoshop","faIcon":"fab fa-adobe","href":"https://www.photoshop.com","note":"Not the mobile app","confidence":5,"priority":3,"categories":["design"]},{"id":"DatoCmsSkill-4871050-en","label":"Deno","faIcon":"fas fa-dragon","href":"https://deno.land","note":"Node II - Ryan's Revenge","confidence":5,"priority":3,"categories":["web"]},{"id":"DatoCmsSkill-4871072-en","label":"Angular","faIcon":"fab fa-angular","href":"https://angular.io","note":"Google's web application framework","confidence":2,"priority":3,"categories":["web"]},{"id":"DatoCmsSkill-4871078-en","label":"Java","faIcon":"fab fa-java","href":"https://www.java.com","note":"Maintained by an actual oracle. True story.","confidence":1,"priority":1,"categories":["game","web"]},{"id":"DatoCmsSkill-4871080-en","label":"Actionscript / Flash","faIcon":"fas fa-skull","href":"https://services.harman.com/partners/adobe","note":"R.I.P. beloved...","confidence":5,"priority":1,"categories":["game","web","design"]}]},"projects":{"nodes":[{"id":"DatoCmsProject-4820943-en","title":"Virtual Collectible Card Game","seoTitle":"virtual-collectible-card-game","summary":"<p>A multiplayer game, built as a single-page web app. This is an entirely personal project, written almost entirely in Typescript. Client-side it is rendered via React, with GSAP and regular CSS handling most of the animations. The server is a node.js app, utilizing the beautiful and open-source Colyseus framework for room management and communication protocols. Google's Firebase SDK is currently used for database and authentication. Most complex parts of this project are the business logic - special effects of played cards need to be able to both respond to a large number of possible situations, which is solved via an entirely custom event system.</p><p>Also in the form of a React application, I constructed a custom data editor to aid development as the project scales.<span style=\"background-color: transparent; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit; letter-spacing: 0px;\"> This uses simple forms, the ACE Editor plugin for scripting the effects directly, with syntax hight-lighting and custom autocomplete. Instead of a managed database, I opted to use the Github API for load-saving the data. Apart from providing a mkae-shift human-readable change history, this approach afforded me creative freedom, by using git branches to easily test and compare design directions.</span></p>","description":"<p>A multiplayer game, built as a single-page web app. This is an entirely personal project, written almost entirely in Typescript. Client-side it is rendered via React, with GSAP and regular CSS handling most of the animations. The server is a node.js app, utilizing the beautiful and open-source Colyseus framework for room management and communication protocols. Google's Firebase SDK is currently used for database and authentication. Most complex parts of this project are the business logic - special effects of played cards need to be able to both respond to a large number of possible situations, which is solved via an entirely custom event system.</p><p>Also in the form of a React application, I constructed a custom data editor to aid development as the project scales.<span style=\"background-color: transparent; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit; letter-spacing: 0px;\"> This uses simple forms, the ACE Editor plugin for scripting the effects directly, with syntax hight-lighting and custom autocomplete. Instead of a managed database, I opted to use the Github API for load-saving the data. Apart from providing a mkae-shift human-readable change history, this approach afforded me creative freedom, by using git branches to easily test and compare design directions.</span></p>","tags":["game"],"priority":5,"cover":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&fm=jpg","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAFAAmAwEiAAIRAQMRAf/EABoAAAEFAQAAAAAAAAAAAAAAAAUBAgMEBwb/2gAIAQEAAAAAywpYri3dFIPDo/Ss3g//xAAVAQEBAAAAAAAAAAAAAAAAAAACBf/aAAgBAhAAAACsUZtT/8QAFwEAAwEAAAAAAAAAAAAAAAAAAQIFBP/aAAgBAxAAAACawbfP/8QAJRAAAgICAQMDBQAAAAAAAAAAAQIDEQAEMQUSIRMiQTJhYnGh/9oACAEBAAE/AFGaejPszJFEtu5pRdcec3U2ou2KbtHtDACj44HGbWm8UcTlGCyLYJ+T819sPFYudGnij20aSJZFVWtWNA+Mk6iTp+g0JoOWBri8mdW1U+mw5H5VjYpxmIA/edX3pn0JkNUez+HGOMc//8QAIREAAQIEBwAAAAAAAAAAAAAAAQIRAAUQIRIiIzEycsH/2gAIAQIBAT8AL4S27WjOAm6Tcu1FcTEsGirv4Kf/xAAgEQACAAQHAAAAAAAAAAAAAAAAAQIREiEFEDIzQXKx/9oACAEDAQE/AOUKl1WaspTyg1oxHeh6r0R//9k=","aspectRatio":1.8586640851887706,"srcSet":"https://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&dpr=0.07&fm=jpg&w=3840 240w,\nhttps://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&dpr=0.13&fm=jpg&w=3840 480w,\nhttps://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&dpr=0.25&fm=jpg&w=3840 960w,\nhttps://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&dpr=0.38&fm=jpg&w=3840 1440w,\nhttps://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&dpr=0.5&fm=jpg&w=3840 1920w,\nhttps://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&dpr=0.75&fm=jpg&w=3840 2880w,\nhttps://www.datocms-assets.com/29155/1591142637-ccgw-1.jpg?auto=compress%2Cformat&dpr=1&fm=jpg&w=3840 3840w","sizes":"(max-width: 960px) 100vw, 960px"}},"links":[{"id":"DatoCmsLink-4878326-en","label":"Administration and content management tool","url":"https://ccgw-editor.stefanginev.dev/","linkType":"demo"}]},{"id":"DatoCmsProject-4820945-en","title":"Procedural Interactive Book","seoTitle":"procedural-interactive-book","summary":"<p><span>A PWA (progressive web application), and an ongoing personal passion project, which aims to present a novel experience, combining the visual minimalism of 'choose-your-own-adventure' books with the openness of traditional computer games. On the surface, the app is text animated with Three.js and jQuery animations, behind the scenes, it blends scripted events and dialogue with procedural sentence generation (think \"online chat-bots\") and an AI narrative director orchestrating a modular story at a reasonable pace. AngularJS was used to build both the game client and a custom tool for editing all characters, locations, special events, and dialog/narration snippets.&nbsp;</span></p>","description":"<p><span>A PWA (progressive web application), and an ongoing personal passion project, which aims to present a novel experience, combining the visual minimalism of 'choose-your-own-adventure' books with the openness of traditional computer games. On the surface, the app is text animated with Three.js and jQuery animations, behind the scenes, it blends scripted events and dialogue with procedural sentence generation (think \"online chat-bots\") and an AI narrative director orchestrating a modular story at a reasonable pace. AngularJS was used to build both the game client and a custom tool for editing all characters, locations, special events, and dialog/narration snippets.&nbsp;</span></p>","tags":["game","editor"],"priority":5,"cover":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591142703-txtrpg-1.jpg?auto=compress%2Cformat&fm=jpg","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAFQAmAwEiAAIRAQMRAf/EABkAAQADAQEAAAAAAAAAAAAAAAIAAQMEBv/aAAgBAQAAAADxsgCN2N+eaD//xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oACAECEAAAAAP/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oACAEDEAAAAAP/xAAgEAACAQQCAwEAAAAAAAAAAAAAAQIDERIxIVETQWFx/9oACAEBAAE/AFUhUvvgxh2YReiSsM8SpXtJu5m+zN9sekS0VXwZfDL4el+EtH//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AF//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AF//2Q==","aspectRatio":1.7777777777777777,"srcSet":"https://www.datocms-assets.com/29155/1591142703-txtrpg-1.jpg?auto=compress%2Cformat&dpr=0.13&fm=jpg&w=1920 240w,\nhttps://www.datocms-assets.com/29155/1591142703-txtrpg-1.jpg?auto=compress%2Cformat&dpr=0.25&fm=jpg&w=1920 480w,\nhttps://www.datocms-assets.com/29155/1591142703-txtrpg-1.jpg?auto=compress%2Cformat&dpr=0.5&fm=jpg&w=1920 960w,\nhttps://www.datocms-assets.com/29155/1591142703-txtrpg-1.jpg?auto=compress%2Cformat&dpr=0.75&fm=jpg&w=1920 1440w,\nhttps://www.datocms-assets.com/29155/1591142703-txtrpg-1.jpg?auto=compress%2Cformat&dpr=1&fm=jpg&w=1920 1920w","sizes":"(max-width: 960px) 100vw, 960px"}},"links":[]},{"id":"DatoCmsProject-4820944-en","title":"8ball pool mobile app","seoTitle":"mobile-8-ball-pool-game","summary":"<p>For this billiards game, I was responsible mainly for the game-rules module, implementing the Box2D physics SDK (with some custom modifications and prediction work), as well as the entirety of the central multiplayer server. For the last, we opted to use PlayerIO - an online multiplayer service, where we upload our room logic, written in C#. Other than that same server code and the synchronization troubles that comes with it, the most challenging aspects were optimizing the physics engine for mobile devices, as well as the very low-level custom shader I engineered to handle drawing convincing ball projections without having to use actual 3D geometry.</p>","description":"<p>For this billiards game, I was responsible mainly for the game-rules module, implementing the Box2D physics SDK (with some custom modifications and prediction work), as well as the entirety of the central multiplayer server. For the last, we opted to use PlayerIO - an online multiplayer service, where we upload our room logic, written in C#. Other than that same server code and the synchronization troubles that comes with it, the most challenging aspects were optimizing the physics engine for mobile devices, as well as the very low-level custom shader I engineered to handle drawing convincing ball projections without having to use actual 3D geometry.</p>","tags":["game"],"priority":5,"cover":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591142650-hasht-2.jpg?auto=compress%2Cformat&fm=jpg","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAFQAmAwEiAAIRAQMRAf/EABgAAAMBAQAAAAAAAAAAAAAAAAQFBgID/9oACAEBAAAAAJhvpcZKWSTiFVsRFQP/xAAYAQACAwAAAAAAAAAAAAAAAAAABAIDBf/aAAgBAhAAAAAdoW0o/wD/xAAYAQACAwAAAAAAAAAAAAAAAAACAwQFBv/aAAgBAxAAAAAq8dDEX//EACYQAAIBBAEDAwUAAAAAAAAAAAECAwAEESESBUFRMTLRE0JhcZH/2gAIAQEAAT8AgKIskv14jzQjjzBbDY0dVAlqrhkfKgbz5qWNHZWWE52SMDsaM0QyxUEY2PTQpOoCe2kJfGJUAHNV0FPYiksIzrh2Hc/NG16aIHWFZQ5Gm5tkEUttcFiGMoHnmfmjaQOpIBIDY95/m6nsLfjnhg57Emre7gVAGtkbA7nFdIijublwwIUKWwD+fTNXly6sY/tRiB5p5idHxU7+zA9Qc5/df//EACERAAIBAwMFAAAAAAAAAAAAAAECEQADMQQSIUFRcYGx/9oACAECAQE/ADeZFgISzMOdvHuKtPeVTvgxiM0upEQLTAdoitMoVrhBOOpJ+1aVVUACOaOT5Nf/xAAjEQEAAQIEBwEAAAAAAAAAAAABAgADESExYQQFEiNBccHR/9oACAEDAQE/ALvLllHuCA6S/aeEjMZRJR2l8psLmqu9XQjCOBhm1dk9Ln4qOh6K/9k=","aspectRatio":1.7777777777777777,"srcSet":"https://www.datocms-assets.com/29155/1591142650-hasht-2.jpg?auto=compress%2Cformat&dpr=0.13&fm=jpg&w=1920 240w,\nhttps://www.datocms-assets.com/29155/1591142650-hasht-2.jpg?auto=compress%2Cformat&dpr=0.25&fm=jpg&w=1920 480w,\nhttps://www.datocms-assets.com/29155/1591142650-hasht-2.jpg?auto=compress%2Cformat&dpr=0.5&fm=jpg&w=1920 960w,\nhttps://www.datocms-assets.com/29155/1591142650-hasht-2.jpg?auto=compress%2Cformat&dpr=0.75&fm=jpg&w=1920 1440w,\nhttps://www.datocms-assets.com/29155/1591142650-hasht-2.jpg?auto=compress%2Cformat&dpr=1&fm=jpg&w=1920 1920w","sizes":"(max-width: 960px) 100vw, 960px"}},"links":[{"id":"DatoCmsLink-4938068-en","label":"View on App Store","url":"https://apps.apple.com/us/app/hasht/id1314853116","linkType":"demo"},{"id":"DatoCmsLink-4938062-en","label":"View on Google Play Store","url":"https://play.google.com/store/apps/details?id=air.hasht.game","linkType":"landing"}]},{"id":"DatoCmsProject-4820946-en","title":"Jelly Brain","seoTitle":"jelly-brain","summary":"<p>Perhaps one of the least technically complex, but most creative and best looking projects I worked on at the office. Apart from some trigonometry and mock-physics, most of the code I wrote for this game relates to tweens and visual effects - glows, pops, simple particles, movement trails, etc.</p>","description":"<p>Perhaps one of the least technically complex, but most creative and best looking projects I worked on at the office. Apart from some trigonometry and mock-physics, most of the code I wrote for this game relates to tweens and visual effects - i.e. glows, pops, simple particles, movement trails.</p>","tags":["game","mobile"],"priority":5,"cover":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591142946-jb-0.jpg?auto=compress%2Cformat&fm=jpg","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAEAAaAwEiAAIRAQMRAf/EABoAAAEFAQAAAAAAAAAAAAAAAAUBAgMEBgf/2gAIAQEAAAAA2M9peQFnA//EABUBAQEAAAAAAAAAAAAAAAAAAAIE/9oACAECEAAAAJV//8QAFQEBAQAAAAAAAAAAAAAAAAAAAwT/2gAIAQMQAAAAKf8A/8QAKhAAAQMDAgENAAAAAAAAAAAAAQIDEQASIQQFBhMWIiMxQUJRYWKBkaH/2gAIAQEAAT8Aa3xxQCXDCSIuppWsgEFau4grxSdcYN6JUPIz+0NY/A6lP0a27izVsNKb5NIUfFaDj0mtr4kcaLoetIV2dI/ODSt+bShVyrrjMJMSYjNc6dUMBpWPdX//xAAcEQEAAQQDAAAAAAAAAAAAAAABAAIEESEDYYH/2gAIAQIBAT8A5boAcZ6JRfCaodeT/8QAHhEAAgEDBQAAAAAAAAAAAAAAAQIRAAMhBBMiQaH/2gAIAQMBAT8Aso9tDyVpjDSavaUbjFXBk9DHtf/Z","aspectRatio":1.6,"srcSet":"https://www.datocms-assets.com/29155/1591142946-jb-0.jpg?auto=compress%2Cformat&dpr=0.38&fm=jpg&w=640 240w,\nhttps://www.datocms-assets.com/29155/1591142946-jb-0.jpg?auto=compress%2Cformat&dpr=0.75&fm=jpg&w=640 480w,\nhttps://www.datocms-assets.com/29155/1591142946-jb-0.jpg?auto=compress%2Cformat&dpr=1&fm=jpg&w=640 640w","sizes":"(max-width: 960px) 100vw, 960px"}},"links":[{"id":"DatoCmsLink-4882700-en","label":"Gameplay video","url":"https://youtu.be/n_ddEyKtP3E","linkType":"demo"}]},{"id":"DatoCmsProject-4862095-en","title":"Jungle Treasures","seoTitle":"jungle-treasures","summary":"<p class=\"mb-5\">Physics based casual game, ala Angry Birds, additionally with a map editor and asynchronous multiplayer.</p><p class=\"mb-5\">Work included implementing a third-party physics engine, custom particle system, sprite-sheet animations, frame-by-frame serialization for sharing and replays, object pooling, the backend api protocol, and some of the ui.</p>","description":"<p class=\"mb-5\">Physics based casual game, ala Angry Birds, additionally with a map editor and asynchronous multiplayer.</p><p class=\"mb-5\">Work included implementing a third-party physics engine, custom particle system, sprite-sheet animations, frame-by-frame serialization for sharing and replays, object pooling, the backend api protocol, and some of the ui.</p>","tags":["game"],"priority":2,"cover":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591142951-jt-1.jpg?auto=compress%2Cformat&fm=jpg","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAEAAaAwEiAAIRAQMRAf/EABcAAQADAAAAAAAAAAAAAAAAAAYEBQf/2gAIAQEAAAAAVpjijFLeKg//xAAUAQEAAAAAAAAAAAAAAAAAAAAE/9oACAECEAAAABl//8QAFAEBAAAAAAAAAAAAAAAAAAAAA//aAAgBAxAAAAA0/8QAKBAAAQMDAwMDBQAAAAAAAAAAAQIDEQAEEgUhMRMiQVFhgRQzcZHR/9oACAEBAAE/ANJuG8QRBCQJgTz4mrt9LrKm0LxdUkEJG5P54ge9Oauq8Uy00B1hK8AojDHbuPofSk3aoGSRMbwfNaZd3TDWKlOBaE4wmIHtVvfLSlTn0/eOS4SufgQD81Z6jeW10+82Gj11yoRxHjbfahqF5H31/sfyv//EAB4RAQABAwUBAAAAAAAAAAAAAAERAAIDBBQhQVFh/9oACAECAQE/AHViXSnHc++FbrCE3ZGX5X//xAAdEQACAQQDAAAAAAAAAAAAAAABAgADERJRITFB/9oACAEDAQE/AFpoiKcubdAa2Y7BSBj4DP/Z","aspectRatio":1.6,"srcSet":"https://www.datocms-assets.com/29155/1591142951-jt-1.jpg?auto=compress%2Cformat&dpr=0.38&fm=jpg&w=640 240w,\nhttps://www.datocms-assets.com/29155/1591142951-jt-1.jpg?auto=compress%2Cformat&dpr=0.75&fm=jpg&w=640 480w,\nhttps://www.datocms-assets.com/29155/1591142951-jt-1.jpg?auto=compress%2Cformat&dpr=1&fm=jpg&w=640 640w","sizes":"(max-width: 960px) 100vw, 960px"}},"links":[]},{"id":"DatoCmsProject-4820947-en","title":"Sumo Battle","seoTitle":"sumo-battle","summary":"<p>Although I've gotten much more intimate with Unity on small projects and prototypes aftewards, this project was my introduction to that tool and subsequently C#/.NET. I learned here basic coding practices specific to games, asset-management, shader-work, etc.</p>","description":"<p>Although I've gotten much more intimate with Unity on small projects and prototypes aftewards, this project was my introduction to that tool and subsequently C#/.NET. I learned here basic coding practices specific to games, asset-management, shader-work, etc.</p>","tags":["game"],"priority":3,"cover":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591142695-sumo0.jpg?auto=compress%2Cformat&fm=jpg","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAFwAlAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAYFBwL/2gAIAQEAAAAAMN6xUjW0eoYz/lpaIn//xAAWAQEBAQAAAAAAAAAAAAAAAAAEBQP/2gAIAQIQAAAAyLcIat//xAAWAQEBAQAAAAAAAAAAAAAAAAAEBQP/2gAIAQMQAAAARtJYmR//xAAkEAABAwQBAwUAAAAAAAAAAAABAAIEAxESITEFQVETImFxgf/aAAgBAQABPwCPHOWjceFDgtc0F1hbudJ8OMdCowuI4yF1OiClfW1UvkdEqDnkLkKLTFSli6zh2HFrggkH6TaHp2xawBvtBI3j+Lq9Tudm2zblVq4y5VCQ7LWgoU51No8lVOpusB8KdMdlvhPxJuQCv//EABwRAAICAwEBAAAAAAAAAAAAAAECABEDBBIxcf/aAAgBAgEBPwDZZuqERsgcWpA+3FJoTYQGYkXqDyf/xAAbEQADAAIDAAAAAAAAAAAAAAAAAQIDEQQSMf/aAAgBAwEBPwDDqcexUqTKldmcanoyU1I/T//Z","aspectRatio":1.588031222896791,"srcSet":"https://www.datocms-assets.com/29155/1591142695-sumo0.jpg?auto=compress%2Cformat&dpr=0.14&fm=jpg&w=1831 240w,\nhttps://www.datocms-assets.com/29155/1591142695-sumo0.jpg?auto=compress%2Cformat&dpr=0.27&fm=jpg&w=1831 480w,\nhttps://www.datocms-assets.com/29155/1591142695-sumo0.jpg?auto=compress%2Cformat&dpr=0.53&fm=jpg&w=1831 960w,\nhttps://www.datocms-assets.com/29155/1591142695-sumo0.jpg?auto=compress%2Cformat&dpr=0.79&fm=jpg&w=1831 1440w,\nhttps://www.datocms-assets.com/29155/1591142695-sumo0.jpg?auto=compress%2Cformat&dpr=1&fm=jpg&w=1831 1831w","sizes":"(max-width: 960px) 100vw, 960px"}},"links":[]}]},"experiences":{"nodes":[{"id":"DatoCmsExperience-4862152-en","title":"Casualino Jsc.","jobTitle":"Software Developer","dates":"2020 - present","description":"<p>Joined team working on a multi-layered online gaming projects. The front-ends are developed in TypeScript with WebGL rendering engine. Back-end are mainly written in C#/.NET.</p><p>Assisted the team in updating the current development flow and iIntroduced new build procedures for existing web apps to optimize reduce the final size of scripts, images and sound assets, shortening end-users' load-time.</p>","logo":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591310518-casualino-outline.png?auto=compress%2Cformat&fm=jpg&h=80","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgABgAZAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAYH/9oACAEBAAAAAFAthTP/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oACAECEAAAAD//xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oACAEDEAAAAD//xAAkEAACAAYBAwUAAAAAAAAAAAABAgADBREhMRMEJGEyQWOBov/aAAgBAQABPwCbWKskxl5Zdwzj0gi638a1b7jrJ1YZp0tupYqWII5GI3kWtqFqdZSSp5pZGRlbn2Ayd3Jz4jv/AIf1H//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8AP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8AP//Z","aspectRatio":4.1125,"srcSet":"https://www.datocms-assets.com/29155/1591310518-casualino-outline.png?auto=compress%2Cformat&dpr=0.25&fm=jpg&h=80 82w,\nhttps://www.datocms-assets.com/29155/1591310518-casualino-outline.png?auto=compress%2Cformat&dpr=0.51&fm=jpg&h=80 165w,\nhttps://www.datocms-assets.com/29155/1591310518-casualino-outline.png?auto=compress%2Cformat&dpr=1&fm=jpg&h=80 329w","sizes":"(max-width: 329px) 100vw, 329px"}}},{"id":"DatoCmsExperience-4820955-en","title":"Blockchain Solutions","jobTitle":"Programmer","dates":"2018 - 2020","description":"<p>Learned to write data scrapers on python, communicating with several database solutions, using message queues and to properly dockerizing my projects and environments.</p><p>Handled encryption and obfuscation of data in communication between javascript games and the backend.</p>","logo":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591310486-b11c00036f7819a3864b6df1d08fbf601.png?auto=compress%2Cformat&fm=jpg&h=80","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAAwATAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAUH/9oACAEBAAAAAK4Y3//EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIQAAAAP//EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMQAAAAP//EACAQAAIBBAEFAAAAAAAAAAAAAAECAwAEESFBBRITInH/2gAIAQEAAT8AVFdwrDIkjPfnnjZ+VJaQ+ST1On1s8HFWvS7IwITCpJFf/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwA//9k=","aspectRatio":6.475,"srcSet":"https://www.datocms-assets.com/29155/1591310486-b11c00036f7819a3864b6df1d08fbf601.png?auto=compress%2Cformat&dpr=0.26&fm=jpg&h=80 130w,\nhttps://www.datocms-assets.com/29155/1591310486-b11c00036f7819a3864b6df1d08fbf601.png?auto=compress%2Cformat&dpr=0.5&fm=jpg&h=80 259w,\nhttps://www.datocms-assets.com/29155/1591310486-b11c00036f7819a3864b6df1d08fbf601.png?auto=compress%2Cformat&dpr=1&fm=jpg&h=80 518w","sizes":"(max-width: 518px) 100vw, 518px"}}},{"id":"DatoCmsExperience-4820956-en","title":"Bigmage Studio, Varna","jobTitle":"Programmer","dates":"2012 - 2018","description":"<p><span>Delivered several apps and games for browsers and mobile in collaboration with the team. Handled visuals, game play, and front-end-to-back-end communication protocols and strategies.</span></p><p><span>Devised the game play section of a casual Android/iOS game. Aside from trigonometry, mock-physics, and ads integration, specific work was aimed at adding polish and spectacle, to what resulted in one of the firm's most visually engaging projects.</span></p><p><span>Developed a complex mobile billiards app for a foreign market. The project involved real-time physics simulation, low-level shader programming, multiplayer logic in C#, in-app purchases, player progression, and live tournaments.</span></p><p><span> Most of these titles were designed technically and game-wise by our own team, with few pointers or requirements from clients.</span></p>","logo":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591310479-logo.png?auto=compress%2Cformat&fm=jpg&h=80","base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgABQAWAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAYC/9oACAEBAAAAAGqS/wD/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oACAECEAAAAD//xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oACAEDEAAAAD//xAAfEAEAAQQDAAMAAAAAAAAAAAABAgMEESEABRIiMbH/2gAIAQEAAT8A6CyGn2FRqS81rgSGXEcb054WkGIepaVPk8hbRiiSl9Jtz+8//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwA//9k=","aspectRatio":4.3375,"srcSet":"https://www.datocms-assets.com/29155/1591310479-logo.png?auto=compress%2Cformat&dpr=0.26&fm=jpg&h=80 87w,\nhttps://www.datocms-assets.com/29155/1591310479-logo.png?auto=compress%2Cformat&dpr=0.51&fm=jpg&h=80 174w,\nhttps://www.datocms-assets.com/29155/1591310479-logo.png?auto=compress%2Cformat&dpr=1&fm=jpg&h=80 347w","sizes":"(max-width: 347px) 100vw, 347px"}}}]},"theme":{"name":"pro-long","showEducation":false,"sections":["careerProfile","experiences","projects","miscellaneous"],"profilePicture":{"fluid":{"src":"https://www.datocms-assets.com/29155/1591230938-1591222991-profile-picture-professional-a-portrait-edited.png?auto=compress%2Cformat&fm=jpg&w=256","width":256,"height":445,"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wEEEAAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGKEQAJAAsACwANABEADQASABQAFAASABgAGgAYABoAGAAkACEAHgAeACEAJAA2ACcAKQAnACkAJwA2AFEAMwA7ADMAMwA7ADMAUQBHAFYARwBCAEcAVgBHAIAAZQBZAFkAZQCAAJQAfAB2AHwAlACzAKAAoACzAOEA1QDhASUBJQGK/8IAEQgAFwANAwEiAAIRAQMRAf/EABgAAAIDAAAAAAAAAAAAAAAAAAAHAgUG/9oACAEBAAAAAGbZ5ialP//EABUBAQEAAAAAAAAAAAAAAAAAAAIE/9oACAECEAAAADR//8QAFAEBAAAAAAAAAAAAAAAAAAAAA//aAAgBAxAAAABQ/8QAIxAAAgEDAwQDAAAAAAAAAAAAAQIDBAURABJRITFSgRNBcf/aAAgBAQABPwC+XKsheNKcQAlSxaXOMA4wAPvVouLVVBFK6bGO4MvcBlOD66dNXu5U0lVHBA6maPcW8VA5POrTfqBKb4pJAhjJAJBw48hjnUTCQFmGSWIJ/e+p6oRELtz7xr//xAAXEQADAQAAAAAAAAAAAAAAAAABEBJR/9oACAECAQE/ABVHF//EABkRAAIDAQAAAAAAAAAAAAAAAAECEBETQf/aAAgBAwEBPwAhc1Pbj//Z","aspectRatio":0.5752808988764045,"srcSet":"https://www.datocms-assets.com/29155/1591230938-1591222991-profile-picture-professional-a-portrait-edited.png?auto=compress%2Cformat&dpr=0.25&fm=jpg&w=256 64w,\nhttps://www.datocms-assets.com/29155/1591230938-1591222991-profile-picture-professional-a-portrait-edited.png?auto=compress%2Cformat&dpr=0.5&fm=jpg&w=256 128w,\nhttps://www.datocms-assets.com/29155/1591230938-1591222991-profile-picture-professional-a-portrait-edited.png?auto=compress%2Cformat&dpr=1&fm=jpg&w=256 256w","sizes":"(max-width: 256px) 100vw, 256px"}}},"core":{"seoMetaTags":{"tags":[{"tagName":"title","content":"Résumé — Stefan Ginev"},{"tagName":"meta","attributes":{"property":"og:title","content":"Résumé"}},{"tagName":"meta","attributes":{"name":"twitter:title","content":"Résumé"}},{"tagName":"meta","attributes":{"name":"description","content":"An accomplished developer, quick to adapt to new tools and languages while delivering professional quality. Current stack of choice: MERN"}},{"tagName":"meta","attributes":{"property":"og:description","content":"An accomplished developer, quick to adapt to new tools and languages while delivering professional quality. Current stack of choice: MERN"}},{"tagName":"meta","attributes":{"name":"twitter:description","content":"An accomplished developer, quick to adapt to new tools and languages while delivering professional quality. Current stack of choice: MERN"}},{"tagName":"meta","attributes":{"name":"twitter:card","content":"summary_large_image"}},{"tagName":"meta","attributes":{"property":"article:modified_time","content":"2020-06-07T15:45:31Z"}},{"tagName":"meta","attributes":{"property":"article:published_time","content":"2017-01-17T08:30:21Z"}},{"tagName":"meta","attributes":{"property":"og:locale","content":"en_EN"}},{"tagName":"meta","attributes":{"property":"og:type","content":"article"}},{"tagName":"meta","attributes":{"property":"og:site_name","content":"Stefan Ginev's résumé"}},{"tagName":"meta","attributes":{"property":"og:image","content":"https://www.datocms-assets.com/29155/1591223012-profile-picture-professional-o-square.jpg?w=1000&fit=max&fm=jpg"}},{"tagName":"meta","attributes":{"name":"twitter:image","content":"https://www.datocms-assets.com/29155/1591223012-profile-picture-professional-o-square.jpg?w=1000&fit=max&fm=jpg"}}]},"copyright":"powered by Gatsby Cloud and DatoCMS"}},"pageContext":{}}}