Overview
I'm a software engineer with experience in working with iOS, Computer Graphics and Machine Learning Integration and a passion for creating impactful applications for users. I'm obsessed with solving challenging and interesting problems.
Skills
- iOS, Swift, Metal, Metal Performance Shaders, Accelerate, CoreML, Rust, WGPU
- Teamwork, communication, collaboration, project ownership, responsibility
- Attention to detail, analytical thinking, problem-solving, passion for quality, adaptability
Professional Status
Holder of a UK Global Talent Visa, authorizing work in the United Kingdom.
Education
Belarusian National Technical University
Bachelor's degree, Relay Protection and Automation of Electrical Power Systems, 2012 - 2017
Academy of Postgraduate Education
Bachelor's degree, Professional Communication (English), 2015 - 2017
Experience
Principal Software Engineer, ZERO10
August 2021 to present
At ZER010, I used my experience in Swift and Metal programming to work on the core of the real-time digital try-on technology of the ZERO10 app.
Rendering Engine Development: led development of the Metal rendering engine with the following features: PBR, MSAA, OIT, SSAO, Tessellation, Inpainting, Video Textures, SceneKit-like shader modifiers.
Cloth Physics Engine Development: played a crucial role in developing Metal cloth physics simulation that runs on the iPhone's real-time.
Core App Performance Optimization: utilized IOSurfaces, page-aligned shared memory, Metal Argument Buffers, Tile Memory, Matrix Decomposition and other instruments to significantly increase the try-on pipeline performance and solve the overheating problem.
Machine Learning Integration: worked in a tight collaboration with RnD team and led the body tracking and segmentation models integration: converted Pytorch models to CoreML, profiled the models performance, suggested replacing certain layers to be more Neural Engine friendly, suggested switching to MLMultiArray input / output to reduce memory traffic.
Tooling: developed and maintained a set of internal tools for the ML team, 3D designers as well as marketing team, which led to an increase in the speed of delivering new garments, app improvements, and testing: Internal Garments Design Tool, Photo Try-On & Video Try-On Tools, CLI Tools.
Software Engineer, Prisma AI
May 2018 – Sep 2021
At Prisma, my role was to make a synergistic collaboration with both UI and RnD teams to solve lots of image processing-related tasks while working on Lensa and Prisma apps.
Image Processing Pipeline Development: led the development of the Metal image processing and rendering engine, which included Face Retouching, Inpainting, Face-Aware Morphing, DOF Effects, Background Replacement, LUTs, Node-Based Filters and Effects, etc.
Core App Performance Optimization: utilized Metal, ARM NEON, Accelerate, Cache-Friendly Memory Layout, etc., to significantly enhance the efficiency and performance of the core app functionalities. Implemented the real-time Frequency Separation Retouch that worked on the phone w/o overheating.
Machine Learning Integration: developed and maintained Smelter - ONNX inference engine backed by Metal Performance Shaders that allowed to avoid redundant CPU - GPU syncs. Worked in collaboration with the RnD team to achieve smooth ML integration and suggested switching to YUV color space to improve the performance.
Tooling: developed and maintained internal tools for the ML and designers teams, which increased the speed of delivering new image effects: Node Graph Visual Editing Tool, CLI Tools.
Software Engineer, Taqtile
Feb 2017 – May 2018
At Taqtile, I was responsible for the design and implementation of the iOS version of the company's main product, Manifest.
AR Experience Development: led the development of the AR experience using ARKit, SceneKit, and Metal
Tooling and Prototyping: led the research and development in the field of AR and 3D (3D Model Optimisation, ARKit + Geolocation, Pointcloud Mesh Reconstruction).
Open Source Projects
https://github.com/eugenebokhan
Metal Tools
MetalTools provides a convenient, Swifty way of working with Metal. This library contains a lot of read-to-use compute kernels and is heavily used in computer vision startups like Prisma and ZERO10.
Shared Graphics Tools
A set of tools and extensions that allow sharing page-aligned memory allocation between different graphics APIs and provide view interop for them.
CoreVideoTools
CoreVideoTools offers a more idiomatic Swift interface to CoreVideo functionality, making it easier and safer to work with CVPixelBuffers, IOSurfaces, and related CoreVideo concepts in Swift code.
Smelter
Overhead-free ONNX graph inference engine with Metal Performance Shaders under the hood.
WGPUTools
A Rust library providing utility functions and abstractions for working with WGPU.