Ree Technology develops semi-autonomous vehicles, which can be controlled by a remote driver. I have architected and built the entire range of interfaces and tools for their driving platform. The emphasis was on high performance, low latency, and a stable 60 FPS frame rate. The other key requirements were future-proof architecture and extensibility. The tech stack based on HTML and Javascript on top of CEF was selected for the ease of prototyping and UI building as compared to other possible choices. The system consists primarily of:
To reuse the code between the applications, the project was organized as a monorepo on top of yarn workspaces with multiple individual packages. The language is Typescript; CEF applications use native web components with shadow DOM to render the UI since compatibility is not an issue. Regular web apps use React. Most of the applications use a mix of in-house and 3rd party APIs and receive real-time updates over WebSockets. Certain parts utilize WebGL: maps, vehicle trajectory overlay. The project also makes extensive use of the automatic code generation from OpenAPI/Swagger spec files due to the API complexity and the high number of endpoints.
I wrote a lot of documentation to allow the team to extend the system easily after my contract was over. I also helped the team members, most of whom had little experience with Javascript development, catch up to speed by supervising their work, and performing extensive code reviews.
Myinfomonitor provides solutions that help aggregate and visualize manufacturing and operational data in real-time to facilitate the transition to Industry 4.0. I have architected and developed the client-side part of the low-code/no-code platform that allows the users to construct informational dashboards and describe their behavior logic using a visual DSL. The main requirement was to give the users the freedom to go beyond a limited set of pre-defined widgets and to let them design and animate virtually anything. To allow that, I developed a full-featured graphical editor using the mxGraph library (draw.io's open-source engine) that allowed the users to draw and manipulate SVG shapes. The system has undo/redo and copy/paste functionality. The dashboard content can be imported from and exported into a file, along with the data subscription settings and the visualization logic. To let the users describe the visualization rules and apply them to the drawn shapes and text, I have developed a custom DSL based on Google Blockly. I have also added a set of pre-programmed widgets to account for the most common scenarios, like displaying an area map with the dynamic markers, drawing a chart with the live data, or adding a simple table with numbers. Javascript and HTML/CSS editors were integrated into the UI to allow describing the logic with plain Javascript (executed in a sandboxed environment of an iframe) to give the advanced and technical users more control over the system's behavior. The users could subscribe to multiple data sources and receive live updates over the Websockets. The system is live, and multiple production plants in Europe are using it.
Technology stack:
Upwork is the world's largest freelance marketplace and collaboration platform with a complex architecture where the front-end part consists of multiple single-page applications. The communication section is a large and essential part of the platform. At that time, the platform's codebase consisted mainly of the legacy code in Angular 1.x that needed refactoring to meet the new standards of performance. Vue.js was selected as the new tool, partly due to the syntax similarities. The microfrontends architecture was adopted, and both Angular 1.x and Vue.js coexisted in the UI, to allow the incremental refactoring and upgrades. My team and I have refactored the messaging section that uses Websockets to send and receive messages and have added the voice and video call functionality based on WebRTC API.
Technology stack:
Drooms offers its clients a digital version of what's known as a data room - a secure physical room where multiple stakeholders involved in the due diligence process collectively work on sensitive legal documents, generally during mergers and acquisitions or corporate restructurings. The system stores the files in the cloud, and the clients access them using a web-based Angular SPA or a native desktop client consisting of the same SPA running on top of CEF. Multiple users can collaborate on the documents in real-time, their client applications receiving updates over Websockets, and each change undergoes a multi-stage approval process defined in the workflow manager. The team has inherited a large amount of legacy code that had to be refactored by transitioning to Angular 2.x while moving forward by adding new functionality. The major features that my team and I have developed or refactored are:
Technology stack:
1997
Plekhanov Russian University of Economics
Master's degree, Economics
I have 15 years of a very diverse experience working in both engineering and management roles for major tech companies and startups, including my own, ranging from fintech to the automotive industry. As a freelance web engineer, I help businesses and technical teams build web applications with complex client-side logic. That includes but not limited to:
I am a firm believer in a pragmatic and value-oriented approach, which, combined with a T-shaped skill set, allows me to solve customers' problems most flexibly and cost-effectively.
I speak Javascript and Typescript, and I am comfortable with all major UI frameworks and local state management layers, as well as server-side and cross-platform Javascript. I build web applications in AWS, or GCP clouds and use modern automation tools for DevOps. I use React Native for mobile development. I advocate and establish agile practices, coach teams, and write technical documentation.
Ree Technology develops semi-autonomous vehicles, which can be controlled by a remote driver. I have architected and built the entire range of interfaces and tools for their driving platform. The emphasis was on high performance, low latency, and a stable 60 FPS frame rate. The other key requirements were future-proof architecture and extensibility. The tech stack based on HTML and Javascript on top of CEF was selected for the ease of prototyping and UI building as compared to other possible choices. The system consists primarily of:
To reuse the code between the applications, the project was organized as a monorepo on top of yarn workspaces with multiple individual packages. The language is Typescript; CEF applications use native web components with shadow DOM to render the UI since compatibility is not an issue. Regular web apps use React. Most of the applications use a mix of in-house and 3rd party APIs and receive real-time updates over WebSockets. Certain parts utilize WebGL: maps, vehicle trajectory overlay. The project also makes extensive use of the automatic code generation from OpenAPI/Swagger spec files due to the API complexity and the high number of endpoints.
I wrote a lot of documentation to allow the team to extend the system easily after my contract was over. I also helped the team members, most of whom had little experience with Javascript development, catch up to speed by supervising their work, and performing extensive code reviews.
Myinfomonitor provides solutions that help aggregate and visualize manufacturing and operational data in real-time to facilitate the transition to Industry 4.0. I have architected and developed the client-side part of the low-code/no-code platform that allows the users to construct informational dashboards and describe their behavior logic using a visual DSL. The main requirement was to give the users the freedom to go beyond a limited set of pre-defined widgets and to let them design and animate virtually anything. To allow that, I developed a full-featured graphical editor using the mxGraph library (draw.io's open-source engine) that allowed the users to draw and manipulate SVG shapes. The system has undo/redo and copy/paste functionality. The dashboard content can be imported from and exported into a file, along with the data subscription settings and the visualization logic. To let the users describe the visualization rules and apply them to the drawn shapes and text, I have developed a custom DSL based on Google Blockly. I have also added a set of pre-programmed widgets to account for the most common scenarios, like displaying an area map with the dynamic markers, drawing a chart with the live data, or adding a simple table with numbers. Javascript and HTML/CSS editors were integrated into the UI to allow describing the logic with plain Javascript (executed in a sandboxed environment of an iframe) to give the advanced and technical users more control over the system's behavior. The users could subscribe to multiple data sources and receive live updates over the Websockets. The system is live, and multiple production plants in Europe are using it.
Technology stack:
Upwork is the world's largest freelance marketplace and collaboration platform with a complex architecture where the front-end part consists of multiple single-page applications. The communication section is a large and essential part of the platform. At that time, the platform's codebase consisted mainly of the legacy code in Angular 1.x that needed refactoring to meet the new standards of performance. Vue.js was selected as the new tool, partly due to the syntax similarities. The microfrontends architecture was adopted, and both Angular 1.x and Vue.js coexisted in the UI, to allow the incremental refactoring and upgrades. My team and I have refactored the messaging section that uses Websockets to send and receive messages and have added the voice and video call functionality based on WebRTC API.
Technology stack:
Drooms offers its clients a digital version of what's known as a data room - a secure physical room where multiple stakeholders involved in the due diligence process collectively work on sensitive legal documents, generally during mergers and acquisitions or corporate restructurings. The system stores the files in the cloud, and the clients access them using a web-based Angular SPA or a native desktop client consisting of the same SPA running on top of CEF. Multiple users can collaborate on the documents in real-time, their client applications receiving updates over Websockets, and each change undergoes a multi-stage approval process defined in the workflow manager. The team has inherited a large amount of legacy code that had to be refactored by transitioning to Angular 2.x while moving forward by adding new functionality. The major features that my team and I have developed or refactored are:
Technology stack:
1997
Plekhanov Russian University of Economics
Master's degree, Economics
I have 15 years of a very diverse experience working in both engineering and management roles for major tech companies and startups, including my own, ranging from fintech to the automotive industry. As a freelance web engineer, I help businesses and technical teams build web applications with complex client-side logic. That includes but not limited to:
I am a firm believer in a pragmatic and value-oriented approach, which, combined with a T-shaped skill set, allows me to solve customers' problems most flexibly and cost-effectively.
I speak Javascript and Typescript, and I am comfortable with all major UI frameworks and local state management layers, as well as server-side and cross-platform Javascript. I build web applications in AWS, or GCP clouds and use modern automation tools for DevOps. I use React Native for mobile development. I advocate and establish agile practices, coach teams, and write technical documentation.