I'm an addicted software developer π¨βπ» for 15 years, startups worker π§π»ββοΈ and traveler ππ»ββοΈ
- π Iβm currently working on https://github.com/CommE2E/comm.
- GitHub profile.
- LinkedIn profile.
- π My packages at NPM.
- π A few of my libraries at PlatformIO.
- π¨βπ» Sometimes I'm writing for "Frontend Weekly" and "The Startup" at Medium.
- π«Ά Iβm looking to collaborate on cool projects about cloud computing, IoT, Web3, blockchain, distributed computing and storage, databases, or social impact spheres.
-
Made a fleet of backends in Rust and their integrations into NodeJS, ReactNative, and C++ for Comm.app (NY-based startup, web3 discord alternative with e2e). Heavily used Tokio.rs (Tonic, Axum, Tracing), napi-rs, cxx.rs.
Created a cxx-corrosion-cmake which is one of the examples in the cxx.rs official documentation.
-
Backend for ServerPanel.io (SF-based startup, Virtual Machines, and cloud automation), and Relly.me (IoT smart locks for homes, public parkings, and offices). Heavily used gorilla/mux especially for websockets and gorm.
-
Rewriting C++ backend services into Rust in Comm.app, firmware for MCUs (ESP, STM) in Relly.me, microservices in VDS64.com. Heavily used Folly from Facebook and Boost.
-
Integrating C++ and Rust libraries into NodeJS backend services in Comm.app. ReactNative Mobile apps for Relly.me, Slavena.pro. Backend services in VDS64.com and Relly.me. Used Redux and mobx-state-tree for state management in ReactNative applications.
-
I started with vanilla JS when I worked as a web developer at the start of my career. Then JQuery and goes on... I used Flow when working with the Comm.app codebase while integrating the Rust codebase into the ReactNative mobile app. TypeScript was partially used in ReactNative in Relly.me.
-
**~ 10 years with SQL databases:**
I worked with MySQL since my first project in my life, then switched to PostgreSQL. TimeScale was used for time series data in IoT projects and Cloud Automation for statistics. Encrypted SQLite as an embedded database was used in Comm.app. Also, I created and maintained SQLCipher amalgamation package for use in iOS builds.
-
~7 years with NoSQL databases:
DynamoDB was used in a Comm.app project as a messaging storage layer. Heavily used MongoDB in Relly.me project for storing user-defined data. Redis was used in Comm.app for caching and in VDS64.com as a caching layer and pub-sub. InfluxDB was used as a time series database for statistics in IoT and cloud automation in ServerPanel.io.
-
RabbitMQ is a main messages bus in Comm.app where I used it with NodeJS, C++, and Rust microservices. It's heavily used in VDS64.com facilities and as a primary communication layer for IoT devices in Relly.me.
-
~7 years with public cloud services:
Deploying to AWS (ECS, S3, DynamoDB) using the Terraform when working in Comm.app. Used Cloudflare Edge Functions and KV store in VDS64.com, Relly.me. Deployed to Vercel Slavena.pro.
-
I have been using REST since the first webdev project, also I have used websocket if we need a subscription. GraphQL was first used in the NashDom.app project for the backend and React Native mobile application communication including subscription. gRPC with protobuf is used in the Comm.app project where I used it for the microservices and backend -> React Native communication including bidirectional streams.
-
Used Jenkins for years until GitHub Actions was released and switched to it then.
-
~10 years with project management and code review tools:
Woking with the PRs (GitHub PR), stacked PRs (Aviator.co), and stacked Diffs (Phabricator, Facebook, and Google practice) approaches. Personally, I'm sure that stacked Diffs or stacked PRs following the KISS principle are the best approaches for code review. Jira or any other task-tracking software including Notion is totally on my list.
-
~7 years with monitoring and metrics:
Grafana was used for monitoring, logs aggregation (using Loki), and metrics for backend services in most of my projects. I used Sentry for the frontend and mobile apps but switched to use LogRocket instead for ReactNative.
-
~5 years with app containerizations:
I grew up in a hosting company and we heavily used our VMs and deployed the code using the repo sync and build tools such as PM2. But in recent years Docker has been heavily used everywhere, so I used it 100%. Also, I've used Nix in my recent work in Comm.app for reproducible builds and deployments.
I'm a big fan of the TDD, BDD everywhere it's possible. When I first attended a meetup at Twitter HQ, I really fell in love with the Pizza Margherita principle which is actually a KISS + YAGNI principles. Following SOLID and DRY is a must.
When speaking in team management I'm always following a responsibility segregation principle instead of task segregation among the team members.
- Product Architect and Design.
- Languages: Vanilla JavaScript, TypeScript, Flow, Python, C, C++/11/17/20, Rust, Ruby, Go, Dart, Perl, Bash Script, PHP (Worked a lot in the past but not using since 7.1 version).
- Frameworks:
- Web: JS: Angular (version 1 and stopped using, moved to React), React, Vue, GatsbyJS. Ruby: Ruby On Rails. Python: Django.
- Mobile: JS: ReactNative, Expo. Dart: Flutter (experimenting).
- Backend: JS: NodeJS, ExpressJS, MeteorJS, Realm.io (MongoDB Stitch). C/C++: Boost, Folly, Vcpkg, PlatformIO, Arduino.
- Embedded and IOT: PlatformIO (Check my libraries), Arduino, C++ Boost.
- UI/UX:
- Modeling: Figma, Sketch.
- UI Frameworks: Bootstrap, Material Design.
- UI Animation: JS: Reanimated2/3, Skia (experimenting).
- 2D/UI Animation: Simple Icons and UI animations using After Effects, Haiku Animator, Lottie.
- Testing and CI: Jenkins, Jest, Dredd (For API REST testing).
- Cloud: Cloudflare KV storage, Cloudflare Workers, Google cloud containers, AWS Lambda, AWS S3, AWS DynamoDB, AWS ECS, Supabase.
- APIs: REST, GraphQL (Apollo), Binary (bson, protobuff), gRPC.
- Databases and MQs: MySQL, PostgreSQL(inc. TimescaleDB), MongoDB, DynamoDB, InfluxDB, Casandra, RabbitMQ/Kafka, Redis.
- Linux Centos, Debian, Ubuntu, Nix: Bash, SSH, vim, httpd, nginx, iptables, Asterisk(VoIP) and etc. which I can't remember (I am working a bunch of years at hosting service π and its automation).
- 2D: Vector and bitmap using Adobe Illustrator, Affinity Designer, Gimp, Photoshop.
- 3D modeling: Product modeling using Blender and FreeCAD.
- Electric circuit and PCB: PCB modeling using EasyEDA.
- Svelte (terrible experience in production, read my experience),
- Java (I'm sure there are better options available),
- C# (mhe...),
- People who don't love what they do.
- 2002 - 2007: Kharkiv National University of Radio Electronics (Ukraine, Kharkiv) - Computer Science - Master's Degree.
- 2011 - 2011: Yandex School of Data Analysis (Russia, Moscow) - Big data storage and analysis course and workshops. Casandra, Hadoop, MapReduce, Apache Spark. Working with time series data using InfluxDB, and columnar databases.
- A lot of C++ books,
- More than 10+ years of self-education,
-
2002 - 2006: Kharkiv Information System, π Ukraine, Kharkiv / Hybrid Part-time (Web sites development).
Full-stack web developer. Made a big bunch of websites using PHP, MySQL, and JQuery as a full-stack developer. I made a small framework called ngMySQL at that time to bind Angular and MySQL for the admin web-ui.
-
2006 - 2009: Webspace.com.ua, π Ukraine, Kharkiv / Onsite (Shared hosting).
Full-stack web developer and Linux administrator (Part-time).
-
2010 - 2019: VDS64.com, π Ukraine, Kyiv / Onsite β‘οΈ Part-time remote (Virtual machines and bare-metal servers hosting).
I joined the company as a full-stack developer with PHP and MySQL and then grew to the system engineer and company CTO. R&D for the cloud control software and hardware integration. Own cloud expansion and distribution to three countries (Ukraine, Germany, Russia). Managed the engineering team (all remote): frontend developers, backend developers, server hardware engineers, and heavy-duty 24x7 support team. Learned and used in production software created in C++, NodeJS, and Golang. Engineered critical distributed systems like DNS service.
-
2015 - 2017: ServerPanel.io, π USA, Bay Area, San Francisco / Onsite (OpenVZ and proxmox cloud automation software).
Backend team lead. Acting as a full-stack developer as well. Team management: frontend (Angular then React), backend (mostly Golang with a minor in Python and DevOps). Not so much can be shared because of NDA. The company was acquired on the final stage of the development.
-
2017 - 2019: NashDom.app, π Ukraine, Kyiv / Hybrid (IoT automation for households and offices).
Team Lead, founding engineer. Frontend and Mobile Application was developed using React/React Native. Backend services consist of Golang and NodeJS distributed microservices. We used RabbitMQ as the main communication bus and PostgreSQL for the user data storage. InfluxDB was used for monitoring and analysis. We processed nearly 2-10 requests per second of the user's activity.
-
2020 - 2021: Relly.me, π Germany, Berlin / Remote, Hybrid (Successor of the NashDom.app with the own hardware and firmware).
Founding engineer. Additionally to the NashDom.app we started to R&D the hardware for home and office automation. R&D included PCB design, C++ MCU (ESP and STM) firmware, plastic cases design and manufacturing, hardware assembly and packaging, and distribution across existing customers. Revamping the customer's mobile app using the updated ReactNative and new UI design. Switching to MongoDB for user data along with PostgreSQL and TimeScale for time-series data. The backend was refactored in Golang and NodeJS to fix previous design flaws.
-
2021 - ...: Comm.app, π USA, New York / Remote, Hybrid (Web3 distributed Discord alternative with e2e).
Senior Software Engineer. Core team member full-stack generalist engineer with the shift to the backend. Rewriting legacy C++ and NodeJS microservices codebase into Rust. Creating unified Rust libraries and connecting them to React Native mobile application codebase and NodeJS microservices. Encrypted messaging storage using SQLite and AWS DynamoDB. New messages delivery architecture based on the message broker (RabbitMQ) and the new Rust microservices.
- While I'm not coding or assembling something I like π΄ββοΈ cycling, πββοΈ surfing (thanks to Bali), and π snowboarding (very rare, as I prefer the sun).
- I love traveling, this is my biggest investment for now. It's great to know the world from different angles to make something new for the people.
βοΈ My visited countries list: USA, UAE, Qatar, Korea, China, Egypt, Turkey, Greece, Cyprus, Italy, Portugal, France, Austria, Hungary, Poland, Spain, Netherlands, Germany, Russia, Thailand, Cambodia, Vietnam, Indonesia, India, Dominican Republic, Malaysia, Singapore, Sri Lanka.
- Sometimes in the past, I was dreaming of becoming a pilot and spent a lot of hours behind the B737 simulator π
- I have a poodle dog πΆ
- I had burned out π₯ in the past and that's why I started to read a lot about psychology and mental health, especially while working remotely. I helped myself in the past and try to help other people and colleagues with that.
- I speak πΊπΈ English (C1, lived in the US for more than a year), πΊπ¦ Ukrainian (native), π·πΊ Russian (native), π΅π± Polish (basic), ππΊ Hungarian (very basic), π¨π³ Chinese (learned for 6 months and dropped it).
- I'm based in Cyprus now π π¨πΎ but moving to Budapest, Vienna, or Asia for a winter.
- (USA) Github Universe (2015, 2016, 2018),
- (USA) Google I/O (2016),
- (USA) TechCrunch Disrupt (2016),
- (USA) Twitter HQ San Francisco Machine Learning meetups (2018),
- (USA) Uber HQ San Francisco Meetups (2016),
- (Ukraine) Ruby On Rails meetup at Fabrika.space (2019),
- (Ukraine) JS devils at Fabrika.space (2019).
- (Poland) App.js at Krakow (2022).