Обо мне

Если вам нужен программист под Linux с соответствующим энтузиазмом, связанным с данной операционной системой, возможно, я вам подхожу.

Имею коммерческий и некоммерческий опыт программирования на C/C++/D, хорошо знаю Bash и (в меньшей степени) программировал на Python. Также имею опыт тестирования ПО, работы с модулями ядра, использования протоколов I2C, SPI посредством GPIO ARM-микрокомпьютеров, создания и администрирования в СУБД MySQL (MariaDB), а также с SQLite и MongoDB.

Тяготею к системному программированию — использованию низкоуровневого API (SUS/POSIX), созданию модулей ядра, погружаюсь в машинно-ориентированное программирование. Это та область, в которой я себя ещё не развил, но стараюсь использовать своё свободное время именно для этой цели. Если будет интерес у работадателя, я с энтузиазмом займусь этим профессионально, что, безусловно, принесёт пользу всем.

При создании свободного ПО научился делать deb- и rpm-пакеты, оформлять man-страницы, изучил до некоторой степени LaTeX. В качестве системы сборки часто использую make + bash-скрипты. С CMake также работал.

Ниже описаны подробности о моей профессиональной деятельности.

Работа на предприятиях

Работа в в «Медикоме» принесла мне самый ценный программистский опыт. На данном предприятии я разработал программную часть системы контроля доступа на предприятии по RFID-пропускам, включая базы данных SQLite и MySQL. Данное ПО было написано на Си с использованием библиотек Glib и WiringPi. Многопоточность обеспечивал при помощи POSIX Threads, межпроцессное взаимодействие — при помощи именованных каналов. Также на этом предприятии для разных целей приходилось писать на C++, Bash, D, Python, JavaScript и Java.

Работа в «АвиаОКе» принесла мне понимание того, что надёжность программы — это важно. И хорошая документация — это важно. В дальнейшем, чем больше я разрабатывал ПО, тем сильнее это осознавал.

Работа в «ТекРаунде» принесла мне ценный опыт работы на C++ (и чуть-чуть с Objective-C) в условиях портирования игр на мобильные платформы. Но в игры я, увы, не играю давно, поэтому душа не легла в эту сферу.

Совсем недолго я стажировался в «Дунайсе», успел неплохо разобраться с HTML/CSS/JavaScript и понять, что ныне область Web'а переусложнена множеством фрейморков, дополнительных систем сборки и пакетных менеджеров. Когда я впоследствии для «Медикома» делал Web-систему для коллективного использования файлов на основе vitis (менеджера категорий для файлов, создающего имитацию семантической файловой системы), я предпочёл обойтись малым — веб-сервером на Vibe-D, Pug-подобным шаблонизатором Diet и JQuery.

Свободное программирование

Самой большым домашним проектом для меня оказался vitis — инструмент для работы с категориями файлов. В рамках этого проекта я изучил LaTeX для описания требований к ПО, создал собственную систему локализации, освоил bash-completion, занимался парсингом HTML с целью сохранения локальной однофайловой копии HTML-страницы со всеми ресурсами… Проект оказался сложным и, следственно, породил ряд других проектов. Например, библиотеку Amalthea, в которой я реализовал ряд полезных мне вещей: вычисление хэш-суммы файлов и сообщений по алгоритму ГОСТ Р 34.11-2012 («Стрибог») и реализовал ряд простейших алгоритмов шифрования, сделал субъективно неплохой модуль для работы с CSV, реализовал тип данных Decimal для работы с рациональными десятичными числами, реализовал несколько основных функций по работе с матрицами, сделал своё определение форматов файлов по сигнатурам и расширениям, опираясь на материалы из Интернета и собственные эксперименты, и множество других вещей, связанных с обработкой данных и работой с файлами (проще говоря, всё, чего мне не хватало в стандартной библиотеке D, я воплощал в «Амальтее»). Также, так как меня не устраивали стандартные открывальщики файлов программами по умолчанию, пришлось сделать свой — vts-fs-open. В связи с необходимостью массовой замены части путей символических ссылок, сделал редактор символических ссылок — link-editor (на Python'е и функционально идентичную версию на D).

В качестве тренировки сделал функциональный аналог "ls -l" на Си и на D.

Всё здесь: https://gitlab.com/tech.vindex

Про vitis я немного написал здесь: https://habr.com/ru/post/457328/

По технологиям

GNU/Linux

Любимая и единственная (на протяжении шести лет) используемая ОС, под неё я изучал системное программирование, прочитал две книги про Bash, научился делать DEB-пакеты и RPM-пакеты, влезал в область программирования модулей ядра, но к сожалению, не изучил ещё эту тему досконально. Системное программирование Linux — то, чем хотелось бы профессионально заниматься.

Python

Однажды изучил курс на Stepic.org, затем самостоятельно почитывал разные источники, сделал пару свободных программ (только одну выложил). Коммерчески также немного приходилось применять. Учитывая популярность и обилие всевозможных библиотек, он достоин внимания, но для меня в настоящеее время это не основной язык.

C/C++

Наибольший опыт работы с языком C дали мне работа верификатором в «АвиаОКе» и работа над системой контроля доступа и рядом других низкоуровневых проектов в «Медикоме».

На C++ программировал в «ТекРаунде» и «Медикоме», до этого программировал на C++ самостоятельно. Интересен Qt, опыта пока немного.

GPSS

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

D

На нём я сделал многое и многому научился. Я на нём разрабатывал и сложные многопоточные программы, и программы с межпроцессным взаимодействием, множество мелких ситуационных программ (где D неплохо заменяет скриптовые языки), ряд свободных проектов, которые выше уже описал. Я понимаю, что это «язык выходного дня» и коммерчески он не востребован (вероятно, по маркетинговым причинам), но если вы посчитаете мой опыт ценным, я всегда рад его использовать.

Разное

Мне интересны разные языки и технологии. Так, когда-то за три дня изучил Fortran, и пришёл к выводу, что на современном Fortran'е действительно удобно писать. Но, почему-то он много лет назад ушёл из тренда.

Несколько раз пытался глубоко изучить R, но отвлекали разные рабочие дела. Это сложный язык на фоне прочих скриптовых, но для целей математики и математической визуализации он интереснее питоновских библиотек. Это необычный (мышление приходиться сильно переделывать), но хороший, достойный внимания язык программирования.

Изучал фреймворк ROS (Robot Operating System), в реальной жизни не использовал.

В настоящее время из языков программирования для меня наибольший интерес представляют Rust и OCaml. Экзотические и замороченные языки, но, по-моему, на перспективу они того стоят.

Спасибо за внимание, надеюсь, мой опыт и интересы смогут пригодиться другим.

Участие в профессиональных сообществах
Опыт работы
Лаборатория компьютерного зрения
Middle C++ software developer
Август 2019 — По настоящее время (1 год и 1 месяц)
PythonGitgit-flowLinux
Медиком МТД
Таганрог
старший инженер
Апрель 2017 — Март 2019 (2 года)
CDBashLinux kernelMySQLSqliteJavaScriptJQuery
ООО "Тек Раунд"
Таганрог
помощник программиста
Март 2016 — Сентябрь 2016 (7 месяцев)

Портирование игр на для мобильных платформ

ООО "АВИАОК"
Таганрог
инженер-программист
Март 2015 — Декабрь 2015 (10 месяцев)
Высшее образование
Таганрогский технологический институт (Таганрогский филиал Южного федерального университета)
Таганрог
Факультет: Автоматики и вычислительной техники
Сентябрь 2009—Сентябрь 2017 (8 лет)

Специалитет: "Программное обеспечение вычислительной техники и автоматизированных систем"

Магистратура: "Прикладная информатика"