Career Profile
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.
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.
I'm immensely passionate about interesing and innovative ideas from both of my worlds, and 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.
Experiences
Casualino Jsc.
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.
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.
Blockchain Solutions
Learned to write data scrapers on python, communicating with several database solutions, using message queues and to properly dockerizing my projects and environments.
Handled encryption and obfuscation of data in communication between javascript games and the backend.
Bigmage Studio, Varna
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.
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.
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.
Most of these titles were designed technically and game-wise by our own team, with few pointers or requirements from clients.
Projects
Virtual Collectible Card Game
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.
Also in the form of a React application, I constructed a custom data editor to aid development as the project scales. 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.
Procedural Interactive Book
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.
8ball pool mobile app
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.
Jelly Brain
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.
Miscellaneous
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.
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.