LINUX.ORG.RU

20 лет в Open Source. Личный опыт использования и участия. Стоит ли овчинка выделки?

 , личный опыт


1

3

Начало пути. Проект 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 – это всё юношеский максимализм и это всё закончится. Но годы идут, а оно не кончается. Проекты только появляются и не заканчиваются. Я служу «ведущим инженером программистом», являюсь лучшим разработчиком предприятия, но всё это какие-то неинтересные достижения, они получены подспудно, я даже к ним не стремился и вообще считаю, что моя должность звучит слишком пафосно.

Я по-прежнему считаю, что как хороший солдат, должен мечтать стать генералом, также хороший программист должен мечтать написать как минимум три вещи:

  1. Свой язык
  2. Свою операционную систему
  3. Алгоритмический искусственный интеллект

И вот у меня есть уже неплохая идея для собственного языка программирования. За развитием проекта можно следить в репозитории neparsy. Основная идея заключается в том, чтобы сделать так чтобы легко было реализовать такую штуку:

Есть у вас, например, графический редактор. А в нём кнопочка «добавить инструмент». Ты на неё нажимаешь, и автоматически вылезает уже прописанный код примера инструмента, ты его редактируешь и прямо в реальном времени можешь видеть как инструмент применяется. Вот по такой идее я скучаю, потому что в реальности цикл отладки жутко раздут и это не позволяет быстро отлаживать код.

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

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

★★★★★

Проверено: hobbit ()
Последнее исправление: unDEFER (всего исправлений: 9)

ребята из LUGR (Андрей Изранцев, Денис Бурлака помню вас, но связь потеряна)

Технически или идеологически?

Zhbert ★★★★★
()

большого плюшевого Tux’а. Этот пингвин до сих пор храниться у меня.

Ну и где фотка? :)

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

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

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

Прилепил. На фото два персонажа. Тот самый Тукс и ещё я на столько большой фанат Диззи, что заказал ещё и его игрушку сделать как-то :-)

Спасибо за ваш интерес!

unDEFER ★★★★★
() автор топика
Последнее исправление: unDEFER (всего исправлений: 1)
Ответ на: комментарий от hobbit

Я не виноват, это у uCoz’а какое-то дикое таргетирование. У меня нормально открывается. Ссылка валидная.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от unDEFER

Ага, со стационарного интернета открылось. Мобильный МТС не хотел.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Ссылка на cdpaint перебрасывает на сайт МТС.

Проверь подписки теперь на этом номере.

Dimez ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Спасибо, крутые видео!

Были бы ещё проекты завершёнными. А то по сути из завершённых кроме cdpaint и пары bash-скриптов ничего и нет. Но я как видите упрямый и не сдаюсь :-)

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от unDEFER

Но я как видите упрямый и не сдаюсь :-)

Так и надо

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от yars068

Да, сожалею. Постарел, пожелтел. Наверняка как-то можно выправить, не знаю как к сожалению.

Спасибо!

unDEFER ★★★★★
() автор топика

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

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

Enthusiast ★★★
()
Ответ на: комментарий от Enthusiast

Ты считаешь, что невозможно найти оплачиваемую деятельность по душе и придётся всю оставшуюся жизнь уныло ходить на работу за пропитание?

Возможно, но для этого это должен быть свой бизнес. С этим пока туговато, но попытки были, шишки набиты, опыт будет учтён, может ещё чего и получится в этом направлении.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от unDEFER

Наверняка как-то можно выправить, не знаю как к сожалению.

Найти наружный шов, через который его наполняли изначально и зашивали вручную. Скорее всего, 2-3 см по одному из соединений деталей в нижней части. Аккуратно распороть на пару см. наполнить ватой/иным доступным наполнителем, периодически «массируя» для заполнения «углов». Зашить.

Спасибо за рассказ. При таком подходе к задаче успехи будут обязательно.

Ecl
()
Ответ на: комментарий от unDEFER

Возможно, но для этого это должен быть свой бизнес.

Совершенно необязательно. Я сам работаю проектами: выбираю проект; трудоустраиваюсь; делаю пока не надоест; увольняюсь в никуда; ищу другой проект. Делать что-то помимо основной деятельности мне пока даже в голову не приходило. Зачем изнурять себя, если оплачиваемая деятельность нравится?

Enthusiast ★★★
()
Ответ на: комментарий от Ecl

Надо будет попробовать, спасибо за совет.

За рассказ, пожалуйста :-)

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от Jullyfish

Да, а что подробнее? Я бы просто всё на D сейчас переписал без всех этих libxfs и был бы инструмент который годами бы работал без изменений.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от Enthusiast

А кто сказал, что я себя изнуряю? Рабочие проекты мне тоже часто нравятся, но своего всё равно не хватает.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от unDEFER

Я бы просто всё на D сейчас переписал

Зачем, если есть раст

Ты же свой язык программирования хотел. Зачем тебе D ?

Saakx
()
Ответ на: комментарий от Saakx

Ну я же его ещё не написал свой. Как напишу, можно будет вести речь о том, чтобы на нём что-то разрабатывать, а пока рано.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от Leupold_cat

Программировать можно и для развлечения.

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

Enthusiast ★★★
()
Ответ на: комментарий от unDEFER

я же его ещё не написал свой.

Что же мешает? Не знаешь теорию типов? Теорию массивов? Проблемы с формированием русской терминологии? 20 лет не хухры-мухры.

Saakx
()

Есть у вас, например, графический редактор. А в нём кнопочка «добавить инструмент». Ты на неё нажимаешь, и автоматически вылезает уже прописанный код примера инструмента, ты его редактируешь и прямо в реальном времени можешь видеть как инструмент применяется. Вот по такой идее я скучаю, потому что в реальности цикл отладки жутко раздут и это не позволяет быстро отлаживать код.

Я, конечно, не программист, но не понял почему это невозможно сделать с существующими языками? Я прямо сейчас пишу «Верстак» для FreeCAD и делаю именно это на Питоне. Хотя нет, не совсем это. Я не могу просто отредактировать кнопочку нажав на неё. Идея классная, поддерживаю, но не вижу в этом причины написания языка. Хотелось бы более развёрнутого объяснения для глупеньких, как я.

PcheloBiaka
()
Ответ на: комментарий от Saakx

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

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от PcheloBiaka

Развёрнутое объяснение требует глубокого погружения в идеи абстрактного компилятора, но материал пока не готов.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от Saakx

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

Напишу когда-нибудь всё в подробностях, но не сейчас.

unDEFER ★★★★★
() автор топика

Жмыхнутый пингвин слева оч хорошо иллистрирует меня после 6-дневной рабочей недели 😊

frunobulax ★★★★
()
Ответ на: комментарий от unDEFER

Напишу когда-нибудь всё

Не надо. Лучше пиши по частям, это более реалистично

с целью изменения отлаживаемого кода прямо на лету

Микрософт Visual Studio вроде так делает уже лет тридцать. Как им это удаётся?

Saakx
()
Последнее исправление: Saakx (всего исправлений: 1)
Ответ на: комментарий от Enthusiast

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

neumond ★★
()
Ответ на: комментарий от unDEFER

Мне всегда хочется иметь собственный проект (даже не обязательно ПО), где ты сам себе хозяин, где тебе никто не диктует условия и требования. А на любой работе ты должен исполнять чужую прихоть, будь то начальство или пользователи.

urxvt ★★★★★
()
Ответ на: комментарий от Enthusiast

Если ты сравниваешь профессию таксиста и программиста то...

urxvt ★★★★★
()
Ответ на: комментарий от unDEFER

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

Крутая идея (не шучу!). Ещё можно сделать у кода такое же представление, как и у данных, с целью облегчения модификации кода на лету.

ugoday ★★★★★
()
Ответ на: комментарий от Saakx

Простая JIT-компиляция это о том на самом деле.

Всякие сервисы редактирования HTML/CSS/JavaScript с мгновенным просмотром результата - это всё про то.

Но мне хочется сделать глобальнее - небольшое АПИ дебаггера реализовал и у тебя уже имеется встроенные виджеты редактора кода с применением на лету в твоём приложении.

unDEFER ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.