Build somethingbeautiful

ForFunLabs Inc.

At ForFunLabs, on the ElevenVR team, I developed sports league web software for international VR Table Tennis. Working alongside the VP of Product and the Design Lead, we defined backend and UX requirements to ensure the final product met user needs.

A notable accomplishment was the creation of a dynamic player dashboard, granting users access to their statistics, match history, and upcoming matchups. To seamlessly integrate various data sources, we utilized public and private APIs, while leveraging technology like Web Sockets to provide real-time updates like friend requests and game invites.


During its day, Grooveshark was one of the main ways to stream music online. As part of the frontend team, I had the opportunity to work on various projects that contributed to different aspects of the business.

As a large frontend team, we managed a single page app using Git and MVC frameworks like Backbone.js.

Parallax Canvas

Director, Collab

I had the exciting opportunity to collaborate with the talented artist Maruša Gorjup, on a unique art piece using parallax animation.

To bring our vision to life, I commissioned Maruša to create a layered digital painting as the foundation.

Using Javascript and HTML Canvas, I animated the layers to create a dynamic effect that follows the cursor's movement. The result is a visually engaging experience that adds a sense of interactivity and depth to the original image.

LIV is an all-in-one solution for streaming VR. It allows VR streamers to sync their green screen, manage stream chat, and even move virtual cameras in 3D space.

My role was to develop web projects that connected VR streamers with their audiences, fostering engagement and enhancing the streaming experience. This included working across teams to help with UX iteration, prototyping with Three.js, and condensing our complex feature set into something that was consumable to new users.

Three.js Terrain

As an experiment, I've explored various aspects of terrain generation. I connected Perlin Noise to a 3D grid, creating a dynamic water + land terrain system. The original concept behind the project was to use the terrain system in a strategy game.

To develop this scene, I utilized Three.js and react-three-fiber, leveraging their capabilities to dynamically generate the scene based on user input. I implemented dynamic sea levels, allowing to user to affect the entire terain. And to further enhance things, I incorporated a day and night cycle with realistic lighting effects.

Overwatch UI Study


As part of a development study, I created UI components inspired by the interface of Overwatch 1, a widely popular first-person shooter game. My goal was to develop a series of reusable components that could be seamlessly integrated into any React project.

I utilized Material UI and styled-components to create the distinctive styling and animations found in the Overwatch interface, replicating the visual aesthetics of the game.

CSS Visualizers


This is a set of visualizers that leveraged the power of the Web Audio API and CSS to bring music to life. My objective was showcase how performant CSS can be. To provide a diverse range of visual experiences, I created a variety of visualizers, each employing different visual effects.

For an optimal performance and to maintain a smooth frame rate of 60 fps, optimization was needed. This involved stripping down and refactoring the codebase to eliminate any unnecessary overhead.



I leveraged the capabilities of the HTML5 Gamepad API to create an onscreen keyboard that was gamepad-friendly for open-source consumption. My goal was to support all modern console controllers, including PS5, Xbox, and Gamecube.

To enhance accessibility and user interaction, the interface is specifically designed for use with a gamepad. Taking inspiration from the keyboard in Steam's Big Picture mode, the interface streamlines input.

3D Sketches

In my spare time I’ve worked on a variety of experiements and prototypes. I’ve utilized 2D and 3D visual effect techniques, and paired them with the complexity of web interaction.

It can be quite a challenge to create the desired effect, but these experiments go on to techniques I use in production sites.

I have been privileged to guide and support individuals on their journey learning web development. Through platforms like Codementor, I have made myself available to those who are facing challenges in their coding endeavors.

My mentorship experiences have brought me in contact with developers from diverse backgrounds and companies. By understanding their unique struggles and obstacles along their learning paths, I have been able to provide tailored guidance and assistance.