Начало пути. Проект ImaTEd
Это был 2003-й год, когда я поступил в ВУЗ и как раз тем летом у меня оказались диски дистрибутива ASPLinux. Я начал погружаться сначала в культуру Open Source как пользователь, а затем и как разработчик.
Уже тогда я был заинтересован темой распознавания рукописного текста и пробовал свои идеи в проекте ImaTEd. Я завёл список рассылки на subscribe.ru под названием «Проекты Linux» и описывал свой опыт фактически моего первого серьёзного программирования.
Мало-помалу я получил отклики от сообщества. Опытные программисты мне объяснили и про системы сборки в Linux и про то что нельзя сравнивать вещественные числа оператором «==», рассказывали про системы профилирования и отладки. Всё это дало мне колоссальный опыт в первом же моём стартовом проекте.
Тогда можно сказать был расцвет локальных групп пользователей Линукс и я нашёл рязанскую группу LUGR. Мы вместе собирались, общались, кто-то пил пиво, я пил соки, но всё равно мы хорошо проводили время в этом общении и мне жаль что сейчас подобных групп уже нет. Тогда в 2005-м году ребята из LUGR (Андрей Изранцев, Денис Бурлака: помню вас, но связь потеряна) предложили мне съездить с ними на конференцию в Архызе, посвящённой свободному программному обеспечению, и выступить с докладом по моему проекту ImaTEd.
Я подготовил видео-презентацию и в результате мы увезли в Рязань главный приз конференции – большого плюшевого Tux’а. Этот пингвин до сих пор хранится у меня.
В результате я, конечно, не дорешал задачу оффлайн распознавания рукописного текста. А кто её решил?
Современные нейросети лишь показывают, что во-первых задача уже решаема на современном железе, а во-вторых убедительно показывает вообще возможность алгоритмического решения, но при этом остаются сильно неэффективными в плане необходимости заведения огромного объёма тренировочных данных.
Сейчас я всё ещё пробую себя в решении этой задачи на базе данных рукописных циферок MNIST и когда-нибудь поделюсь отдельным обзором на эту тему.
Первый известный проект имевший пользователей, anyfs-tools
В ВУЗе было довольно много времени и меня интересовала тема потери данных и конвертирования файловых систем.
Всё это я смог объединить в одном проекте anyfs-tools. Он работал, мог сконвертировать произвольную ФС, подддерживаемую Linux, в XFS или ext3fs, но сейчас не может быть скомпилирован ни в одном современном дистрибутиве.
Из этого я сделал вывод, что лучше не основывать долгосрочные проекты на инструментах, которые часто меняют API.
Если сейчас воскрешать этот проект, то он уже не будет использовать системные библиотеки.
Проект повлиявший на трудоустройство, cdpaint
Влюбившись в девушку, я хотел преподнести ей необычный подарок и из этого родился проект по выжиганию голограмм-изображений на рабочей поверхности компакт-диска. Так осуществилась моя одна странная мечта – написать программу, в которой будет массив непонятных циферок. Девушка, конечно, не инженер, не оценила моего подарка, но спустя 15 лет, мне начали писать на английском языке: «чувак, нет ли английской документации?». Я перевёл документацию при помощи DeepSeek, предоставил. Но вообще приятно спустя 15 лет узнать, что где-то есть схожий проект (cdimage), который даже использовал твои наработки.
Тем не менее при трудоустройстве именно этот проект показал, что я могу решать инженерные задачи, и я был с лёгкостью принят на первое же место работы, на которое пожелал устроиться. Это была небольшая телекоммуникационная компания нашего города. В ней я был на все руки мастер, сделал биллинговую систему, с учётом трафика, тарификацией звонков, выставлением счетов в 1С. Было интересно, я каждый день узнавал что-то новое. Уволился потому, что директор сдурил и начал задерживать зарплату. Как только поступила жалоба в трудовую инспекцию, деньги нашлись, но я к тому времени уже остался только на поддержке (раз в месяц помогал с биллингом за небольшую плату).
Проект с юности, который я так и не допилил, но и не бросил попытки, Dizzy Omega
В 9 классе летом с другом мы расписали сценарий и разрисовали мир игры продолжения Dizzy Y, в которой наш любимый компьютерный герой Dizzy, побывав в России, улетает покорять космос. Сколько попыток я уже предпринял по реализации этого проекта?
Долгое время я подбирал инструменты и однажды таки подобрал и дело пошло, но придуманный сценарий оказался настолько огромен, что я просто выдохся. В результате Диззи уже может победить главного злодея Закса, но всё ещё не может вернуться с Марса.
Blender снова поменял весь интерфейс и изучать инструмент заново мне снова не хочется.
В результате я снова ищу, вернее уже создаю новые инструменты, которые не подведут.
Гексагональный редактор, h6pedit
Ещё с проекта ImaTEd меня сильно заинтересовала тема расчёта разности цветов по ощущениям человеческого глаза. В проекте h6pedit у меня реализована самая клёвая модель цветов, которую я долго искал. Это ITP. Форма блоба всех цветов в этой системе выглядит весьма необычно, но зато именно в ней разность цвета вычисляется простым декартовым расстоянием.
Меня долго интересовало понять, какие же цвета не могут быть воспроизведены современными мониторами и я погрузился в эту тему и оказалось, что не отобразимы мониторами наиболее красивые с моей точки зрения цвета – это различные насыщенные оттенки цвета морской волны, бирюзовые цвета. Я даже разработал собственную модель цветов, в которой можно задать все цвета, которые могут быть восприняты глазом и одновременно нельзя задать несуществующих.
Я очень надеюсь, что когда-нибудь будут созданы светодиоды с переменной частотой излучения, что позволит качественно увеличить цветопередачу мониторов, а пока в моей игре про Диззи, есть «пещера сияющего дерева» и вроде бы природно сиять так как в игре никакое вещество не может, но я придумал, что я просто задам цвет этого дерева именно цветом, который не отобразим современными мониторами. А мерцания будет как раз показывать, то что цвета на мониторе такого нет.
Абстрактный компилятор Ника
Когда-то в моей рассылке «Проекты Linux» мне сказали, что мой проект ImaTEd – это всё юношеский максимализм и это всё закончится. Но годы идут, а оно не кончается. Проекты только появляются и не заканчиваются. Я служу «ведущим инженером программистом», являюсь лучшим разработчиком предприятия, но всё это какие-то неинтересные достижения, они получены подспудно, я даже к ним не стремился и вообще считаю, что моя должность звучит слишком пафосно.
Я по-прежнему считаю, что как хороший солдат, должен мечтать стать генералом, также хороший программист должен мечтать написать как минимум три вещи:
- Свой язык
- Свою операционную систему
- Алгоритмический искусственный интеллект
И вот у меня есть уже неплохая идея для собственного языка программирования. За развитием проекта можно следить в репозитории neparsy. Основная идея заключается в том, чтобы сделать так чтобы легко было реализовать такую штуку:
Есть у вас, например, графический редактор. А в нём кнопочка «добавить инструмент». Ты на неё нажимаешь, и автоматически вылезает уже прописанный код примера инструмента, ты его редактируешь и прямо в реальном времени можешь видеть как инструмент применяется. Вот по такой идее я скучаю, потому что в реальности цикл отладки жутко раздут и это не позволяет быстро отлаживать код.
А если будет такой инструмент, то его надо будет пускать в работу, искать на чём обкатывать, а значит нужны другие проекты. Так постепенно все мои проекты постепенно образуют единую линию, над которой хочется работать и трудиться одновременно.
Достижения последнего года, победа над ленью, занятия спортом, чёткие планы по возобновлению здоровья, дают мне надежды на будущее на то что все эти проекты будут реализованы.


