loading...
(requires js, es6, html5)

Siarhei Siniak Сергей Синяк

Программист software developer

python, c++,

pytorch, docker, git, vim, linux, bash, tensorflow, latex, nlp,

django, flask, fastapi, uvicorn, gunicorn, tornado, asyncio,

mongo, postgres, mariadb, elasticsearch, clickhouse

react, typescript, eslint, mypy, flake8, isort, autopep,

openwrt, sentry, kibana, observium, gitlab, docker-swarm, proxmox, zfs, nginx, certbot,

webasm, npm, webpack, vue, go, angular, react-native

# FAQ ЧаВо

  • Сколько лет занимаетесь программированием?
    с 11 лет - более 15 лет.
    How many years of experience in programming?
    Do it since 11 years old, more than 15 years.
  • Что помнишь из высшей математики университета?
    доволе много - часто пользуюсь теорией оптимизаций, дискретной математикой, алгеброй, математическим анализом, теорией вероятностей, теорией графов реже чем хотелось, геометрией, теорией сложностей.
    What bachelor degree knowledge you find useful?
    quite a lot - often use theory of optimizations, discrete mathematics, algebra, mathematical analysis, theory of probability, graph theory (although less frequent than wish to), geometry, theory of complexity.
  • У тебя есть хобби?
    Я люблю физические упражнения, последние пару лет это просто тренажерка.
    Ранее, 4 года изучал танцы, в основном west coast swing и contemporary (modern jazz).
    Мне нравится читать либо слушать книги, смотреть фильмы и сериалы, путешествовать, загорать на пляже.
    Do you have a hobby?
    I like doing excercises, last few years it's just a gym.
    Before spent about 4 years studying dancing, mostly west coast swing and contemporary dancing (modern jazz).
    I like reading or listening to books, watching movies, TV series, travelling, sun bathing.
  • Какие твои профессиональные интересы?
    С 2016 активно пытаюсь следить за machine (statistical) learning темой исследований и прикладных решений.
    С 2020 (более активно с 2022) разрабатываю web приложения на фреймворке Django. Это популярный компонент среди программистов и заказчиков, и есть большой спрос на системный подход при дизайне и разработке.
    С 2011 использую Linux ОС. В частности Archlinux с 2014. Есть опыт с OSX и Windows (WSL) тоже.
    С 2021 активно пытаюсь освоить навыки customers development и маркетинга. Они важны в современной экономике для эффектной коммуникации с пользователями продуктов.
    Я сфокусирован на разработке завершенных продуктов, и придерживаюсь взаимовыгодных отношений (win-win), когда инвестирую время как сотрудник компании.
    What are your professional interests?
    Since 2016 I'm trying to keep up with machine (statistical) learning area of research and applications.
    Since 2020 (more since 2022) develop web applications with Django framework. It's popular among developers and customers, and I can contribute well with a systematic design and development approach.
    Since 2011 use Linux distros. In particular Archlinux since 2014. Have experience with OSX and Windows (WSL) too.
    Since 2021 actively trying to master customers development and marketing skills. They are important in the modern economy to effectively reach target audience.
    I focus on product development, and win-win attitude when investing time as a part of company.

# Книги (goodreads, список) Books (goodreads, list)

1. The Lean Startup, Eric Ries
2. The Mom Test, Rob Fitzpatrick
3. The 7 Habits of Highly Effective People, Stephen R. Covey
4. Nonviolent Communication, Marshall B. Rosenberg
5. STATISTICAL LEARNING THEORY, Vladimir N. Vapnik

# Projects Проекты

# Overview Обзор

  • 2. Experience Опыт Коммерческой Разработки
    • 2.1. August 19 2024 - March 31 2025 (7 months) Авг 19 2024 - Мар 31 2025 (7 месяцев) X-Labs inc. bcsports.io ubo.group atomglobal.ae Eugene Chuhlancev, Konstantin Voronov
      2.1.1. discussions with colleagues
      2.1.1.1. django templates
      2.1.1.2. project structure for django, fastapi based service
      2.1.1.3. software packaging git-modules versus .whl
      2.1.1.4. gitlab CI/CD
      2.1.1.5. daphne versus gunicorn/unicorn
      2.1.1.6. vscode, pycharm dynamic debugging via tcp
      2.1.1.7. python code base linting with ruff, mypy, pyright
      2.1.1.8. multiple async transactions in django
      2.1.1.9. fixtures generation for fastapi, django unit tests
      2.1.1.10 packages management with poetry, uv, pip
      2.1.2. webrtc based video streaming
      2.1.2.1. research of available solutions
      2.1.2.2. implementing mjpeg prototype
      2.1.2.3. extending aiortc
      2.1.2.4. extending for multiprocessing version
      2.1.2.5. memory leaks removal, performance optimization
      2.1.2.6. integrating into next.js frontend, C++ effects framework, flutter APP
      2.1.2.7. extensions for metadata transfering case
      2.1.2.8. developing simple next.js app to demonstrate video and data transfering with per frame synchronization in real time
      2.1.3. worked on fullstack show cases
      2.1.3.1. packaging backend+frontend+ml with docker-compose, python launcher
      2.1.3.1.1. OSX
      2.1.3.1.2. Ubuntu+Nvidia GPU
      2.1.3.2. developing basic backend with django, sio, redis, postgres, mqtt
      2.1.3.3. integrating with next.js UI
      2.1.4. blackmagic based video ingestion
      2.1.4.1. extending C++ implementation with pybind API
      2.1.4.2. extending python wrapper for multiprocessing version
      2.1.4.3. debugging with ffmpeg, OBS Studio
      2.1.5. devops
      2.1.5.1. grafana deployment and administration
      2.1.5.1.1. installing prometheus node exporter on devices of interest
      2.1.5.2. docker registry configuration
      2.1.5.3. VPN configuration
      2.1.5.4. debugging CPU problems
      2.1.5.5. gitlab CI/CD configuration
      2.1.5.6. .whl based packaging for python
      2.1.5.7. repackaging aiortc, pyav, ffmpeg for CPU/GPU
      2.1.5.8. edge servers configuration for ML tasks, with proxmox/cockpit management UI, ZFS, lvm2; with CUDA support for docker;
      2.1.5.9. ufw firewall configuration
      2.1.5.10. strongswan VPN configuration at the client side
      2.1.6. planning
      2.1.6.1. RFC writing
      2.1.6.2. draw.io diagrams creation
      2.1.6.3. agile/scrum
      2.1.7. developed a fastapi microservice template alike django framework
      2.1.7.1. asyncapi extension for faststream
      2.1.7.2. wrapping typical commands like alembic, babel
      2.1.7.3. isolating common logic for Dependecy injection, Kafka processing, sio processing, JWT support into reusable modules;
      2.1.8. code review
      2.1.8.1. fastapi code base
      2.1.8.2. django code base
      2.1.8.3. mediamtx code base
      2.1.8.4. pydantic, pydantic-core code base
      2.1.8.5. torio code base
      2.1.8.6. sentry code base
      2.1.8.7. blackmagic SDK code base
      2.1.8.8. next.js code base
      2.1.8.9. mypy code base
      2.1.1. обсуждения с коллегами
      2.1.1.1. django templates
      2.1.1.2. структура проекта для django, fastapi сервиса
      2.1.1.3. пакетирования python ПО - git-modules или .whl
      2.1.1.4. gitlab CI/CD
      2.1.1.5. daphne или gunicorn/unicorn
      2.1.1.6. дебаг ПО в vscode, pycharm через tcp
      2.1.1.7. linting python кодовой базы с помощью ruff, mypy, pyright
      2.1.1.8. несколько async transactions в django
      2.1.1.9. генерация fixtures для fastapi, django unit tests
      2.1.1.10 packages management с помощью poetry, uv, pip
      2.1.2. video streaming с помощью webrtc
      2.1.2.1. исследование доступных решений
      2.1.2.2. реализация mjpeg прототипа
      2.1.2.3. расширение aiortc
      2.1.2.4. расширение для многопроцессорного случая
      2.1.2.5. устранение утечек памяти, оптимизация производительности
      2.1.2.6. интеграция в next.js frontend, C++ приложения с видео эффектами, flutter приложение
      2.1.2.7. расширения для случая передачи данных
      2.1.2.8. разработка тестовго стенда next.js для демонстрации и отладки одновременной передачи видео и данных с по кадровой привязкой в реальном времени
      2.1.3. разработка и упаковка демо стендов (fullstack)
      2.1.3.1. пакетирование backend+frontend+ml с помощью docker-compose, python launcher
      2.1.3.1.1. OSX
      2.1.3.1.2. Ubuntu+Nvidia GPU
      2.1.3.2. разработка минимального бекенда с помощью django, sio, redis, postgres, mqtt
      2.1.3.3. интеграция в next.js UI
      2.1.4. обработка видео потока с помощью карт захвата blackmagic
      2.1.4.1. расширение C++ библиотеки с pybind API
      2.1.4.2. расширение python обертки для многопроцессорного случая
      2.1.4.3. поиск и исправление ошибок с помощью ffmpeg, OBS Studio, opencv
      2.1.5. devops
      2.1.5.1. разворачивание и настройка grafana
      2.1.5.1.1. установка prometheus node exporter на интересуемые девайсы
      2.1.5.2. настройка docker registry
      2.1.5.3. настройка VPN (клиент, сервер)
      2.1.5.4. анализ проблем с оборудованием сервера, поиск проблемных ядер в Intel процессоре
      2.1.5.5. настройка gitlab CI/CD
      2.1.5.6. пакетирование python компонент в .whl
      2.1.5.7. пересборка aiortc, pyav, ffmpeg для нескольких базовых docker образов, для случаев CPU кодирования, и на базе CUDA (Nvidia GPU)
      2.1.5.8. настройка серверов для задач ML, разработки и тестированию целостного веб приложения, используя proxmox/cockit UI, ZFS, lvm2; настройка CUDA для docker;
      2.1.5.9. настройка ufw firewall
      2.1.5.10. настройка клиента для strongswan VPN
      2.1.6. планирование
      2.1.6.1. написание технических решений (RFC)
      2.1.6.2. создание диаграмм draw.io
      2.1.6.3. agile/scrum
      2.1.7. разработал модуль для fastapi микросервиса опираясь на архитектуру django framework
      2.1.7.1. расширение asyncapi для faststream
      2.1.7.2. оборачивания типичных комманд, например alembic, babel
      2.1.7.3. вынесение и доработка общей логики
      для Dependency Injection, работы с Kafka (faststream),
      обработка sio, поддержка JWT авторизации в
      переиспользуемые модули
      2.1.8. code review
      2.1.8.1. кодовая база fastapi
      2.1.8.2. кодовая база django
      2.1.8.3. кодовая база mediamtx
      2.1.8.4. кодовая база pydantic, pydantic-core
      2.1.8.5. кодовая база torio
      2.1.8.6. кодовая база sentry
      2.1.8.7. кодовая база blackmagic SDK
      2.1.8.8. кодовая база next.js
      2.1.8.9. кодовая база mypy
    • 2.2. August 15 2023 - August 14 2024 (1 year) Авг 15 2023 - Авг 14 2024 (1 год) Traidecsbel b2bit.by it-d.by Yulia Masharo , Yury Cybulskiy
      2.2.1. выполнение обязанностей devops с использованием технологий -
      docker swarm,
      proxmox, tmux, ssh, docker-compose, openwrt,
      observium, sentry, elasticsearch, sentry, ubuntu WSL, nginx,
      fluentd, systemd-journald, gitlab, openvpn
      2.2.2. разработка frontend с использованием React, redux, typescript, npm, eslint
      2.2.2.1 доработка проекта kibana для потребностей devops, анализа данных
      2.2.3. написание тестов для backend используя unittest, unittest.mock, django.test
      для frontend - selenium, jest
      2.2.4. доработка сущестующих продуктов
      2.2.4.1. начал доработку kibana UI для добавления функций недостающих посравнению с sentry, tmux, journald, bash scripting
      2.2.4.2. частично разобрался с хранением данных в sentry (clickhouse)
      2.2.4.3. частично изучал структуру логов в observium, gitlab
      2.2.4.4. частично перевел логирование в веб-приложении на стек elasticsearch, kibana
      2.2.5. сложные задачи
      2.2.5.1. микросервис для быстрого обновление некоторых данных в redis cache на основе медленного стороннего REST API и текущего набора активных пользователей приложения
      2.2.5.2. написание корректной логики обновления объектов в БД на основе поступающих данных от стороннего API с нарушением принципов REST, CRUD (сравнение атрибутов, определение объектов с измененным содержимым, вторичная обработка для найденных изменений, только в этом случае установка нового значения для поля времени последнего обновления)
      2.2.5.3. Оптимизация запросов ORM c ошибкой N+1, в целом оптимизации запросов на основе профайлинга по времени, дебага выполняемых запросов в django ORM
      2.2.5.4. рефакторинг размазанной бизнес логики в функциональные блоки
      2.2.5.5. код ревью реализации функционала менее опытными разработчиками в рамках стека django, python, react
      2.2.5.6. миграция бизнес логики на эффектный ORM, взамен неуклюжего кеширования в redis, где это возможно
      2.2.5.7. работы по безопасности инфаструктуры в связи с грубой ошибкой аутентификации разработчиками gitlab (microsoft???)
      (openvpn, captcha, 2FA; анализ логов в nginx, kibana, gitlab)
      2.2.5.8. рефакторинг js, jsx на ts, tsx в кодовой базе frontend
      2.2.5.9. написение сложного конечного автомата для UI React компоненты, чтобы минизировать REST API запросы, и ускорить взаимодействие пользователей с данными на стороне конечного устройства;
      2.2.5.10. анализ проблем пользователей на основе логов backend, kibana, отчетов об ошибках в sentry
      2.2.5.11. настройка sentry в качестве инструмента для KPI/BI
      2.2.5.12. Найстрока mysql, mariadb для оптимизации доступа к медленному SSD диску
      2.2.5.13. частичная миграция backend с mysql, mariadb на postgres
      2.2.5.14. миграция elasticsearch на аутентификацию с разделением ролей
      2.2.5.15 замер скорости работы диска на сервере, анализ пропускной способности с использованием fio, iotop, prometheus, разворачивания дампа mariadb как эталонной задачи нагружающей диск
      2.2.5.16 парное программирование с другими разработчиками в рамках изучения технологий, обсуждения сложного функционала
      2.2.5.16.1. совместное тестирование продукта с QA в рамках обсуждения приоритетных сценариев для регрессионного тестирования
      2.2.5.16.2. обсуждения временного бюджета при выполнении задач с менеджером
      2.2.5.16.3. написание RFC (технических решений) c другими разработчиками, менеджером касательно нового функционала, или сложных изменений
      2.2.5.17 код ревью, тестирование, улучшение миграций БД
      2.2.1. been doing devops part with docker swarm, proxmox, tmux, ssh, docker-compose, openwrt, observium, sentry, elasticsearch, ubuntu WSL, nginx, fluentd, systemd-journald, gitlab, openvpn
      2.2.2. been doing frontend with React, redux, typescript, npm, eslint, node, kibana
      2.2.3. been writing tests for backend with unittest, unittest.mock, django.test; for frontend with selenium, jest
      2.2.4. customization
      2.2.4.1. started patching kibana UI to add functions missing comparing to sentry, tmux, bash scripting
      2.2.4.2. partially studied schema of sentry
      2.2.4.3. partially read logs of observium, gitlab
      2.2.4.4. partially made logs aggregation in elasticsearch, kibana
      2.2.5. complex
      2.2.5.1. script for fast update of some data in redis cache based on slow third party rest api and active users
      2.2.5.2. proper update of in-database entities when fetching data from ill-written third party API (comparing changed attributes, trigger change events, only then setting updated timestamp)
      2.2.5.3. N+1 optimizations, in general ORM optimization based on time profiling, debugging django orm requests
      2.2.5.4. refactoring spreaded logic into functional blocks
      2.2.5.5. code review from juniour developers in django, python, react stack
      2.2.5.6. migration to proper ORM, instead of clumsy redis cache whenever possible
      2.2.5.7. security fixes due to f*** up and hack of gitlab authentication (openvpn, captcha, 2FA, analysis of logs from nginx, kibana, gitlab)
      2.2.5.8. migrating js, jsx to ts, tsx on frontend
      2.2.5.9. writing complex UI state machine for a component, so that API requests are minimized, and user gets ability to manipulate data on client-side as fast as possible.
      2.2.5.10. analysis of issues from customers based on backend, kibana logs, sentry error reporting
      2.2.5.11 KPI/BI with sentry as analysis tool
      2.2.5.12 mariadb, mysql configuring to optimize for malfunctioning disk
      2.2.5.13 partially migrated to postgres
      2.2.5.14 migrating elasticsearch to authenticated mode
      2.2.5.15 disk speed benchmarking with fio, iotop, prometheus, mariadb dump restoration
      2.2.5.16 pair coding with other developers;
      2.2.5.16.1. pair testing with QA;
      2.2.5.16.2. time budget negotiation with manager;
      2.2.5.16.3. RFC writing with other developers, manager regarding new functionaity, or complex changes;
      2.2.5.17 db migrations inspection, testing, improving
    • 2.3. July 18 2022 - July 17 2023 (1 year) Insterra LLC podpis.by Ivan Levchanka , Yury Zelenskiy
      - улучшил качество продукта покрыв большинство функционала юнит тестами
      - улучшил Rest API продукта в соотвествии с предоставленной спецификацией
      - улучшил автоматическую рассылку писем
      - улучшил механизм генерации печатных представлений
      - постоянное ревью кода коллег и рекоммендации по улучшению
      - добавил автоматический контроль качества кода с помощью linter
      - написание технических решений для реализации дополнительного функционала
      - улучшил асинхронный код приложения для работы с websocket, asyncio, сторонним Windows приложением
      - улучшил работу с postgres путем оптимизации n+1 проблемы django ORM, добавление необходимых индексов postgres
      - регулярное общение с коллегами по методологии рефлексии - для понимания позитивных, негативных событий за рабочую неделю, обсуждение способов улучшения взаимодействия
      - улучшил работу QA путем стандартизации предоставляемых отчетов регрессии функционала приложения перед релизом
      - работа с клиентами при расследовании ошибок доставленного релиза, анализ логов в kibana для определения максимально быстрого способа решения проблемы, с учетом требований бизнес логики
      - улучшил безопасность приложения, путем исправления ошибок аутентификации Rest API
      - оптимизировал тестирование UI путем использования готового docker образа для selenium, чтобы снизить нагрузку на devops
      - общение с CEO, CTO в случае критических, стрессовых ситуаций на проекте. Интерпретация поверхностных требований в конкретные действия, которые можно делегировать коллегам.
      - added lots of unit tests
      - implemented a novel Rest API according to the provided specification
      - improved emails dispatcher
      - improved print preview generation
      - a continous code review and recommendations to team mates on best practices
      - added automatic code scanning with a linter
      - planning, designing technical solutions
      - improved asynchronous part of the application, related to asyncio, websocket, a side app on Windows
      - improved postgres queries with eliminating n+1 django orm problem, as well as adding missing indexes
      - regular communication with team mates, according to reflexion methodology, talking about positive and negative events during the week, discussion of improvements
      - improved QA operation with providing a standard template for the discovered issues, bugs after a manual regression
      - communication with customers, users to understand troubles, studying kibana logs, providing the best solution considering business logic requirements, in timely manner
      - security audit of API authentication, fixing data leaks
      - improved UI tests with automated selenium tests, added a standard selenium docker image, to reduce work load on DevOps
      - communication with CEO, CTO in critical, stressful times, interpretation of provided vague requirements into a clear plan with steps, to be shared across the team
    • 2.4. March 2020 - June 2022 (2.5 years) CyberMe Studio cyberme.studio Joe McRay
      - github repositories code review
      - bootstraping a prototype from third party projects
      - emphasis on security
      - python, docker, django
      - разработка технических решений для продуктов в сфере безопасности
      - контейнеризация приложений с помощью docker, docker-compose
      - разработал код криптобменника (react native, js, django, postgres)
      - разработал компонент для автоматического анализа прошивки
      встроенных устройств (qemu, django, rest api, docker)
      - разработал оффлайн компонент для эмуляции android приложений (rest api, qemu, linux, android emulator, docker, Xvfb)
      - разработал компонент для анализа кода приложений (static code analysis, python, docker, SVM, django, github actions)
    • 2.5.1. September 2018 - March 2020 (Freelance) The Marketing Interchange Kenneth Yap
      Ken needed software to deduplicate scrapped inventory lists

      - developed web app prototype with a custom algorithm
      - django, c++, python
      Кен заказал приложение для поиска дубликатов в списках инвенторизации нескольких ритейл магазинов

      - разработал веб приложение (django, js)
      - добавил оригинальный алгоритм поиска дубликатов (python, c++)
      - использовал maris-trie для оптимизации поиска текстовой информации (c++)
      - разработал инструмент для разметки датасета для дальнейшего улучшения продукта
      Дополнительный проект по визуализации данных из социальных сетей

      - реализовал веб приложение на основе предоставленных дизайнов (PowerBI, bokeh, django)
      - реализовал ускоренный рендеринг данных из датасета, что напорядок быстрее PowerBI
      - недельные созвоны с заказчиком по zoom, обсуждение проделанной работы, приоритезации функционала на следующую неделю
    • 2.5.2. September 2018 - March 2020 (Freelance) LIT labs color.io Manuel Hüttel
      Manuel needed to automate cross platform openfx plugin build

      - delivered a tailor made wrapper around cmake, tested on Ubuntu, OSX, Windows
      - python, c++, openfx, boost, msvc, vcpkg
      Manuel заказал систему сборки плагинов openfx для продукта обработки видео.

      - разработал скрипты сборки для предоставленного плагина (openfx, boost, msvc, vcpkg, python, c++)
      - оттестировал корректную сборку и работу под windows, osx (Intel), linux
      - через год добавил поддержку для OSX (M1, ARM)
    • 2.5.3. September 2018 - March 2020 (Freelance) PixelPlex pixelplex.io Alex Dulub
      Alexei needed a help with 2 machine learning projects.

      - optimized environment for reinforcement learning based on Alpha Go (python, c++, tensorflow, docker)
      - optimized computer vision neural network for medical application (YOLO, python, keras, regression, classification)
      - delivered a tailor made tool for annotation by medical stuff (python, tornado, js, html)
      - advised on dataset annotation to increase product quality
      Алексей заказал доработку 2-ух проектов с использованием машинного обучения.

      - оптимизировал окружение для Reinforcement Learning на основе Alpha Go (python, c++, tensorflow 2.0, docker, monte carlo tree sampling)
      - увеличил точность распознования нейронной сети для медицинских изображений (YOLO, python, keras, classification)
      - разработал веб приложение для доразметки датасета классификации (python, tornado, numpy, js, html, sqlite)
      - предоставал план разметки датасета, и в последующем переобучил модель для классификации, точности достигла 80-95%
    • 2.6. April 12, 2017 - September 12, 2018 (1.5 years) SK hynix memory solutions Eastern Europe skhms.by Sergey Glebov
      - real-time data compression
      - SSD wearing emulation, and intermediate state generation from scratch
      - mobile flash testing on a remote exynoss board
      - bugfix, support of C test framework for mobile flash firmware
      - python, c++, boost, msvc, vcpkg
      - разработал компонент для генерации состояния SSD диска после продолжительной работы (сокращает время регрессионных тестов) (python, numpy, ctypes, cffi, msvc, multiprocessing)
      - разработал компонент для динамического сжатия данных эмулятора SSD диска (оптимизирует издержки на NFS, экономит дисковое пространство при запуске регрессионных тестов) (python, lz4, lzma, c++, boost, cmake, vcpkg, data structures)
      - разработал компонент для тестирования флеш памяти мобильных устройств в реальных условиях (exynos, archlinux, boost, asio, tcp/ip, python, UFS, C)
      - поддержка кроccплатформенной среды для тестирования прошивки SSD дисков

  • 1. Исходный Код / Открытые проекты Source Code / Public Projects
    • It's a project on gitea (self-hosted gitlab alternative) that I can share.
      Mostly some scripts for hosting a web application, various dotfiles,
      and some command utility I use on sway+archlinux+macbook setup.
      Also some random writings, like custom ebook tts, as well as custom bindings for a gamepad to use with bullet.js based games.
      Also some random jupyter notebooks to do pose recognition for cricket/baseball games.
      Примеры исходного кода в свободное от работы время.
      - различные скрипты для хостинга приложений
      - некоторые утилиты коммандной строки (использую на конфигурации sway+archlinux+macbook air)
      - эксперимент с одностраничным приложением, для чтение книг вслух
      - эксперимент с поддержкой джойстика для игр на движке bullet.js
      - эксперимент с разметкой видео бейсболла, крикета через нейронную сеть, для поиска интересных моментов