Position: WebGL (Three.js) developer
Category: JavaScript
English level: intermediate
Years of experience: 3

• JS
• WebGL
• Node.js
• TypeScript
• GLSL
• React / Classes / Hooks / Other Libraries
• HTML5 / Canvas 2D / Web Audio Api
• CSS3 / Preprocessors
• Express.js
• PostgreSQL / MongoDB
• Sequelize
• Collectors
• Material-UI
• Python (scripting in Blender)
• CAD systems

Key words:
Algorithms and Data Structures, Programming Paradigms, Design Patterns, SOLID, Collectors, Protocols, file system, Buffers, Introspection & reflection, scaling, project structure, serialization, session context, filesystem watching, event emitter, refactoring, optimization, AJAX, websockets, race condition, principles asynchronous and parallel programming, threads, stream, sockets, proxy...

Bezier curves, low poly, object hierarchy, glsl shaders, lighting, shading effects, optimization, textures, image processing, screen space techniques, geometry, tessellation shaders, shadows, noise in shaders, animation, particle system...
Matterport 3D Application target of which is manipulating in the space of the room. Client development was by ReactJS + Matterport, server side by Express.js + Sequelize + PostgreSQL, application architecture, interactive models development and manipulation with them, project scaling and refactoring (decomposition and optimization).

  Engine development by JS + WebGL. Native JS with WebGL without any dependencies like frameworks and libraries. The target is building an architecture without dictating patterns, using programming paradigms like: immutable functional style + declarative style, OOP + GoF, a little prototype style and metaprogramming. Developed сustom engine for rendering scenes in line styles, custom GLSL shaders (fluid simulation, geometry manipulation, lightning effect...). Created 3D models in Blender + algorithm minification by Node.js and parser for client side, wrote music for more realistic effects in scenes (background, click, transitions...).

   Three.js Web Application target of which is manipulating model parts in 3D scene. Developed UX/UI design, desktop + mobile (landscape - portrait), project architecture, global state, custom materials (matte, gloss, polished, car paint with noise addivities, HDRs effects). I used native JS + Three.js library with programming paradigms (OOP, Declarative, Immutable Functional Style). Also made optimizations as model reuse,
geometry overlap, data pre-generation of the model structure,
pre-calculation of the model position, async model loading.