Skip to content
View geekbrother's full-sized avatar
πŸ‘‹
Creating the future
πŸ‘‹
Creating the future

Organizations

@geeksteam

Block or report geekbrother

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
geekbrother/README.md

Hi there πŸ‘‹ I'm Max

I'm an addicted software developer πŸ‘¨β€πŸ’» for 15 years, startups worker πŸ§™πŸ»β€β™‚οΈ and traveler πŸ„πŸ»β€β™‚οΈ

  • πŸ”­ I’m currently working on https://github.com/CommE2E/comm.
  • GitHub GitHub profile.
  • LinkedIn LinkedIn profile.
  • NPM πŸ— My packages at NPM.
  • PlatformIO πŸ— A few of my libraries at PlatformIO.
  • Medium πŸ‘¨β€πŸ’» 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.

🌱 I’m mostly and recently working with:

  • Rust 2.5 years:

    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.

  • Go 3 years:

    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.

  • C C++ ~7 years:

    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.

  • ReactNative NodeJS ~7 years:

    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.

  • JavaScript Flow TypeScript ~15 years:

    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.

  • MySQL MariaDB PostgreSQL SQLite **~ 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.

  • MongoDB Redis AWS DynamoDB InfluxDB ~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 ~7 years:

    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.

  • AWS Terraform Vercel CloudFalare ~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.

  • GraphQL gRPC protobuf REST websocket

    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.

  • GitHub Actions Jenkins ~10 years with CI, CD:

    Used Jenkins for years until GitHub Actions was released and switched to it then.

  • Jira Phabricator Graphite Aviator Git GitHub ~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.

  • Grafana Sentry LogRocket ~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.

  • Docker Nix ~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.

πŸ—Ώ Work principles and methods:

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.

πŸ’¬ I have other experience in / ask me about:

  • 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.

πŸ₯± I don't like:

  • 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.

πŸ§‘β€πŸŽ“ Educations:

  • NURE 2002 - 2007: Kharkiv National University of Radio Electronics (Ukraine, Kharkiv) - Computer Science - Master's Degree.
  • Yandex School of Data Analysis 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,

🌁 Work timeline:

  • 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.

πŸ›΅ πŸ§˜β€β™‚οΈ Hobby and personal life:

  • 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.

πŸ™‹πŸ»β€β™‚οΈ Maybe we met at meetups:

  • (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).

πŸ“« How to reach me:

Pinned Loading

  1. cxx-corrosion-cmake cxx-corrosion-cmake Public

    Rust CXX Corrosion and CMake integration with example

    CMake 25 3

  2. pod-patch pod-patch Public

    Patching the Cocoa Pod specfiles in ReactNative projects.

    Shell 5 2

  3. CommE2E/comm CommE2E/comm Public

    Comm is an E2E-encrypted, open source messaging app for communities.

    JavaScript 273 30

  4. SpringLoader SpringLoader Public

    Gradient spring animated loading activity indicator component for React Native in pure Reanimated and SVG

    TypeScript 3

  5. config2eeprom config2eeprom Public

    PlatformIO, Arduino library to simple storing configs or arrays to EEPROM

    C++ 3 1

  6. LedWinker LedWinker Public

    Blink LED, change LED state async (without delay) PlatformIO and Arduino library.

    C++ 1 1