Обо мне

Меня зовут Мехди Тайлеб. Я являюсь разработчиком-фрилансером и в настоящее время живу в Алжире.

Данная страница посвящена моей карьере, моим профессиональным знаниям и навыкам и организована в хронологическом порядке.

Я родился в городе Алжир (столица Алжира) и в 2003 году окончил Ecole Nationale Polytechnique по специальности “инженер по электронике”. Темой моей дипломной работы была реализация подавителя акустического эхо с помощью ПЛИС. Затем в течение года я работал преподавателем по администрированию серверов с ОС Linux и инженером техподдержки.

В 2004 году я переехал в Россию и поступил в аспирантуру Московского энергетического института.

Инженерная карьера

ЗАО Технор

В 2006 году я был принят на работу в качестве ведущего инженера-разработчика ПЛИС в компанию “Технор”, которая предоставляет услуги по исполнению НИОКР по разработке комплексных аппаратно-программных решений в различных областях, таких как телекоммуникационные системы и специализированные системы повышения квалификации. Работал над несколькими проектами с применением ПЛИС, а также с поддержкой ИТ-инфраструктуры компании.

Высокоскоростные сети (G.709) с применением ПЛИС

Моя первая задача в компании “Технор” была связана с проектом устройства фильтрации и анализа трафика G.709 в варианте 10 Гб/с. Я отвечал за реализацию высокоскоростных интерфейсов обмена данными с внешней микросхемой serdes (производства Vitesse), обработку фреймов G.709, реализацию кодека рида-соломона, реализацию буфера DDR2-SDRAM, схему управления и мониторинга, а также интерфейс обмена с внешним устройством (на базе ARM9) управления. В данном проекте применялись старшие ПЛИС семейства Virtex-4.

В рамках данной задачи я приобрел следующие навыки:

  • Работа с САПР Xilinx ISE и Modeltech Modelsim
  • Реализация кодека Рида-Соломона для помехоустойчивой связи
  • Реализация высокоскоростных синхронных интерфейсов
  • Использование и доработка контроллеров памяти Xilinx MIG
  • Оптимизация по скорости и площади проектов ПЛИС
  • Clock domain crossing
  • Отладка с помощью логических анализаторов (Xilinx Chipscope и Agilent)

Имитация отраженного сигнала радара - реализация подсистемы ПЛИС

В данном проекте я отвечал за реализацию на ПЛИС Xilinx Spartan-3 некоторых частей тракта генерации сигналов, имитирующих отраженный сигнал радаров. В частности, я реализовал квадратурный модулятор, генератор аддитивного белого гауссовского шума, прямой цифровой синтезатор с коррекцией ошибок и фильтр CIC.

Поскольку в данном проекте применялась FPGA, которая не была оптимальной ни с точки зрения быстродействия, ни с точки зрения архитектуры и размера, то приходилось разрабатывать собственные IP-блоки вместо того, чтобы использовать готовые решения Xilinx. Например, пришлось применять fine-grain pipelining и осуществлять ручное размещение разрабатываемых IP-блоков.

В ходе исполнения данной работы я освоил много интересных аспектов разработки и проверки проектов, связанных с реализацией алгоритмов цифровой обработки сигналов на ПЛИС:

  • Применение Mаtlab (FDAtool, GUIDE, Fixed point toolbox) для проверки алгоритмов, в том числе проверка влияния ошибок округления при применении чисел с фиксированной запятой. Также Matlab применялся для генерации эталонных данных для проверки RTL-моделей Verilog при RTL-моделировании и для анализа результатов RTL-моделирования.
  • САПРы Xilinx ISE, PlanAhead и Modelsim
  • Оптимизация RTL-моделей
  • Оптимизация на уровне алгоритмов ЦОС для достижения оптимального результата по занимаемой площади ПЛИС и быстродействию
  • Настройка маршрутов проектирования и моделирования для реализации алгоритмов ЦОС на ПЛИС
  • Ручное размещение элементов на ПЛИС
  • Обратный инжиниринг IP-блоков

Обновление ИТ инфраструктуры

Появилась возможность применения своих навыков в области настройки серверов на базе ОС Linux и обновить ИТ инфраструктуру компании. В рамках выполнения данной задачи я обновил как железо, так и программное обеспечение. Также была произведена миграция серверного ПО, а также большей части рабочих мест с ОС Windows на ОС Linux.

Мною были настроены все базовые инфраструктурные сервисы, как DNS, DHCP и bootp и маршрутизация, а также маршрутизация, сервер электронной почты (SMTP/IMAP и веб-интерфейс), резервное копирование, контроллер домена Samba.

В рамках обновления я также перевел часть инженеров на ОС Linux и обеспечил им техническую поддержку и провел переподготовку.

Ди Эс Технолоджи

В 2008 году я перешел в компанию “Ди Эс Технолоджи”, которая была аффилирована с АО НПП “Цифровые Решения”, где я работал над созданием IP-блока криптографического преобразования по стандарту ГОСТ-28147-89, НИР связанной с применением самосинхронной схемотехникой в ПЛИС, а также над реализацией IP-блока форвардера трафика интерфейса USB 2.0.

Основные навыки, которые я освоил, включают в себя:

  • Разработка самосинхронных схем на ПЛИС. Для этого я пользовалься средой разработки Balsa, которая переводит описание аппаратуры с одноименного языка в RTL-описание на Verilog.
  • Verilog PLI
  • Стандарт USB 2.0
  • ГОСТ-28147-89

ООО “НТЦ “Симплематика”

В 2011 году совместно с коллегами я основал компанию “Симплематика”, в которой я работал генеральным директором.

Компания предоставляла услуги по разработке электронной техники и ПО на заказ.

Помимо стандартных обязанностей генерального директора, я принимал активное участие в качестве инженера и ИТ-специалиста в выполнении следующих задач:

  • Разработка макета системы мониторинга сердечного пульса с применением фотоплетизмографии. Макет состоял из отладочного набора TI CC2430ZDK ZigBee Development Kit, ушных плетизмографических датчиков, разработанных в компании. Алгоритмы анализа данных и графический интерфейс были реализованы в среде Matlab.
  • Создание ИТ-инфраструктуры:
    • Основные сетевые сервисы
    • Системы управления проектами (в сфере ИТ) Trac и Redmine. В связке с Trac и Redmine применялись системы управления версиями Mercurial и subversion
    • Автоматизация документооборота и автоматическая генерация документов
  • Участвовал в составлении технических заданий
  • Разработал (перевод с английского языка) три стандарта ГОСТ:
    • ГОСТ Р ИСО/МЭК 24730-21-2014 Информационные технологии. Системы позиционирования в реальном времени (RTLS). Часть 21. Протокол радиоинтерфейса для связи на частоте 2,4 ГГц c использованием расширения спектра методом прямой последовательности (DSSS): Передатчики системы RTLS, работающие с одним расширяющим кодом и использующие кодирование данных DBPSK и схему расширения BPSK
    • ГОСТ Р ИСО/МЭК 24730-2-2016 Информационные технологии. Системы позиционирования в реальном времени (RTLS). Часть 2. Протокол радиоинтерфейса для связи на частоте 2,4 ГГц с использованием расширения спектра методом прямой последовательности (DSSS)
    • ГОСТ Р ИСО/МЭК 24730-5-2014 Информационные технологии. Системы позиционирования в реальном времени (RTLS). Часть 5. Радиоинтерфейс расширения спектра методом линейной частотной модуляции (CSS) для связи на частоте 2,4 ГГц
  • FPGA программируемую систему управления затворами (для лазерной лабораторной установки)
  • Специализированный преобразователь интерфейсов UART с применением FPGA.

Фриланс

В 2016 году я начал работать в режиме фриланса, так как я искал баланс между выполнением рабочих задач и повышением своей квалификации. Потребность в повышении квалификации появилась по причине того, что, работая в качестве генерального директора я отдалился от выполнения крупных инженерных проектов. Кроме того, мое знание российского рынка труда подсказывало, что большинство работодателей не будет готово предоставить мне возможность повышения квалификации.

Работа фрилансером дала мне возможность приобрести новые знания и навыки в области создания и администрирования Linux-серверов для выполнения задач типичных для предприятий малого и среднего размера.

Также я освоил новые компетенции в области разработки веб-микросервисов для автоматизации бизнес-процессов, помогая таким образом владельцам компаний малого бизнеса осуществить цифровую трансформацию.

IT - создание и администрирование серверных инфраструктур Linux

Я применяю такие системы, как:

  • NAS: FreeNAS
  • LDAP: FreeIPA
  • Инфраструктурные сервисы pfSense
  • Автоматизация с помощью Ansible
  • Мониторинг с помощью Zabbix
  • Базы данных MongoDB, Postgresql and mariaDB
  • Samba - Контроллер домена для клентов Windows 10
  • oVirt - для создания серверов виртуальных машин
  • Резервное копирование с помощью Relax-and-Recover и BorgBackup
  • NGINX веб-сервер
  • я также применял дополнительное ПО для некоторых узко направленных задач: TiddlyWiki, Passbolt, Gogs, Calibre, FireflyIII и многое другое.

Разработка веб-приложений

Несколько лет назад я решил применять разработку веб-приложений, поскольку такой подход позволяет упростить дальнейшую поддержку и обновление разрабатываемого ПО.

Даже в тех случаях, когда несколько лет назад я разрабатывал бы обычные десктопные приложения, я стал предлагать своим клиентам такой подход.

Что касается бакенда, я освоил стандартные методы разработки бакендов. Для этого я применяо Python и ряд библиотек и инструментов.

Мои приложения построены в основном на базе следующих фреймворков:

  • Flask framework
  • Dash: A platform library to create simple dashboards
  • Anvil to create simple web apps featuring a drag-and-drop app builder
  • MongoEngine and sqlalchemy to use databases (it’s worth mentioning that these are not frameworks)
  • Jupyter to create interactive and flexible scientific and lab apps

Среди разработанных веб-приложений:

  • Автоматический импорт (REST API) банковской выписки для дальнейшего анализа и отображения необходимых заказчику отчётов
  • Специализированное средство резервного копирования и восстановления данных для 1С
  • Средство для управления лабораторным оборудованием для проведения измерений ВЧ оборудования. Для этого был применен Jupyter, а связь с оборудованием была реализована посредством SCPI (VISA) и удаленного доступа к серийным интерфейсам (RFC 2711). Также было реализовано несколько микросервисов (Flask) и применялась mongoDB.
  • Автоматизация бизнес-процессов для предприятий МСБ с помощью телеграм-ботов, микросервисов, CRM и собственных веб-интерфейсов.

Ниже приведены навыки, которые я приобрел в данной области:

  • Разработка бакендов для веб-приложений
  • Разработка REST-API
  • Разработка моделей данных
  • Автоматизация бизнес-процессов.
Некоторые библиотеки (Python), которые я применяю (Click to expand):
  • click: a Python package for creating beautiful command line interfaces
  • mongoengine: a python object data mapper for mongodb
  • jinja2: a full-featured template engine for Python
  • numpy: a library for the Python programming language, adding support for large, multi-dimensional arrays and matrices, along with a large collection of high-level mathematical functions to operate on these arrays
  • pandas: Python Data Analysis Library
  • plotly: Plotly Python Open Source Graphing Library
  • prompt-toolkit: A library for building powerful interactive command line applications in Python
  • PyCRC:
  • pyserial: A Python Serial Port Extension for Win32, OSX, Linux, BSD, Jython, IronPython
  • pyvisa: A Python package with bindings to the “Virtual Instrument Software Architecture” VISA library, in order to control measurement devices and test equipment via GPIB, RS232, or USB.
  • transitions: A lightweight, object-oriented finite state machine implementation in Python with many extensions
  • tqdm: A Fast, Extensible Progress Bar for Python and CLI
  • dash: a productive Python framework for building web analytic applications
  • Anvil: Full stack web apps with nothing but Python
  • Flask: a lightweight WSGI web application framework
  • FastAPI: a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
  • telethon: Pure Python 3 MTProto API Telegram client library, for bots too!
  • rq: RQ (Redis Queue) is a simple Python library for queueing jobs and processing them in the background with workers. It is backed by Redis and it is designed to have a low barrier to entry.
  • rq_scheduler: A lightweight library that adds job scheduling capabilities to RQ (Redis Queue)
  • asyncio: asyncio is a library to write concurrent code using the async/await syntax
  • pydantic: Data parsing and validation using Python type hints

Средства разработки и IT

При разработке веб-приложений я применяю Anaconda для управления пакетами и средой.

При разработке на языке Python я применяю PyCharm Pro и Miscrosoft Visual Studio Code.

Для экспериментов с собственными или сторонними REST-API я применяю Postman и Insomnia.

Я также создал собственную ИТ-инфраструктуру для выполнения разработок и взаимодействия с клиентами:

  • Taiga Agile-подобное управление проектами
  • Zulip - аналог Slack
  • Репозитарии Git либо с помощью локального Gogs, gitea, либо на Github
  • Самодельное решение (веб-приложение) для биллинга

Текущие цели - 2021 and up

С февраля 2021 года я решил искать интересные долгосрочные проекты с применением FPGA и/или веб-приложений (да - можно вместе). Я также открыт любым дискуссиям о новых интересных проектах. Основной критерий для меня - чтобы проект был интересным для меня в плане приобретения нового опыта и получения новых знаний.

Одна из основных трудностей, с которыми я встречаюсь работая фрилансером в режиме “соло разработчика”, - это отсутствие объективного фидбэка, поэтому в приоритете я рассматриваю варианты работы над новыми проектами в команде, а не индивидуально.

Проекты FPGA

Что касается проектов с применением FPGA, то я предпочитаю проекты, связанные с HPC или edge AI.

на первом этапе я бы хотел значительно повысить свой уровень в области работы с современными высокоскоростными стандартными интерфейсами типа SATA, PCIe, интерфейсами памяти и/или специализированными, как интерфейсы с АЦП/ЦАП, высокоскоростные сетевые интерфейсы и т.д.

Далее я бы сосредоточил свои усилия над освоением и применением высокоуровневых мат.инструментов. На данный момент меня интересует AI, но я готов обсудить варианты.

В качестве примера потенциально интересных проектов я могу привести систему машинного зрения с высоким разрешением на базе FPGA (например Xilinx UltraScale+ MPSoC) для личного или индустриального применения. В таком проекте я бы работал несколько месяцев над аппаратной платформой, осваивая новые для себя интерфейсы (сенсоры, интерфейсы памяти, сетевые интерфейсы и т.д.) и создавая всю FPGA-инфраструктуру. Затем к разработанной платформе я бы добавил аппаратные ускорители для реализации алгоритмов на основе AI для обработки данных и решения конкретной задачи.

Также будет очень интересно, если будет возможность участвовать в разработке IP-блоков с открытыми исходниками или если в рамках проектов будут активно применяться решения на основе open source.

Разработка ПО

В плане разработки ПО я бы хотел получить новый опыт с применением большего количества различных инструментов, библиотек и парадигм, например применять инструменты непрерывной интеграции и развертывания, более продвинутые технологии и методы. На данный момент я отдаю приоритет проектам, которые носят более “научный” характер.

В то же время для меня важно приносить пользу клиентам и помогать им достигать своих бизнес-целей, даже если речь идёт о булочной или о стартапе, который занимается “уберизацией” работы сантехников!

В этом отношении автоматизация бизнес-процессов всегда представляла особый интерес для меня, так как я на практике убеждаюсь, как составление моделей, их симуляция, обсуждение, автоматизация и интеграция реально помогают клиентам.