[О блоге] [наверх] [пред] [2020-05-07 20:53:06+03:00] [cabab74bdde2cab78031aacb827f4e4c131907f0]
Темы: [memories]

Моя жизнь в институте и движение свободного ПО

Разбираясь в документах, увидел фотографию со Столлманом
(сфотографировал в 33195d60e850934e49f0d4514a08df544ce40257).
Вспомню свою историю учёбы в институте как борца за свободное ПО.

К продвижению СПО это не относится, но свою первую курсовую (не уверен
была ли это курсовая, так как первый семестр) делал в Groff (GNU troff),
используя и eqn, и tbl (до сих пор отличнейшая штука:
f445f28611aafab4883fd15795498f45bf5ca239) и pic. В итоге запомнилось что
я не смог подключить/сделать не моноширинный шрифт кириллический в нём и
сдавал моноширинным, что выглядело уж очень old-school, но я не специально.

Следующая курсовая уже содержала кучу формул (теормех). Я взялся её
делать в OpenOffice, но довольно быстро рехнулся от набора математики в
нём. Тогда я слышал про TeX/LaTeX, но, как и полагается классическому
студенту раздолбаю, начинал делать я её запоздало и времени на изучение
новой системы у меня не было. Поэтому я в TeX набирал только формулы,
рендерил это, делал screenshot страницы с кучей формул и в виде картинок
вставлял в OpenOffice документ. Ад, но это реально было быстрее чем
набирать по "родному" в OpenOffice. Благо, так я обосрался только один
раз. До конца института дальше я делал всё только в LaTeX полностью.
Диплом мой состоял из кучи Makefile-ов, каких-то скриптов и вовсю
используемого LaTeX со всякими BibTex и прочим. За всю свою жизнь я не
сделал ни одной презентации не в Beamer, не считая плагинов для Vim-а
где я сделал несколько работ:
https://git.stargrave.org/cgit.cgi/vimslides.git/tree/README.slides

Само собой, я не сдал ни один Word или Excel документ. PDF-ки и исходный
текст который я показывал особо любопытствующим преподавателям, поясняя
что если им надо что-то отредактировать и поправить -- пожалуйста. Кроме
того, в МАИ есть своё издательство, в котором официальным форматом в
котором принимаются книги для печати был (La?)TeX. К сожалению, в 2000-х
начали принимать и в Word формате.

Так как я инженер-технолог, частично и конструктор, то у нас была тьма
чертежей (и два года инженерной графики!). На инженерной графике нужно
было делать всё от руки. Но вне неё, безусловно, любой человек будет
делать на компьютере. Абсолютно все чертежи делал в QCad. Открывать DWG
файлы, штатно производимые AutoCAD-ом он не мог, но поддерживал DXF, в
который AutoCAD мог экспортировать. В итоге особо проблем с обменом
чертежей не было.

Программирование было только на первом курсе (вроде) и это был Fortran.
Вообще язык для своей задачи неплохой: инженер, не особо смыслящий в
ЭВМ, должен мочь с его помощью сказать какие расчёты (численные методы
например) он хочет произвести, чисто инженерные числодробления. И
Fortran реально очень здорово подходит для этой задачи. C не вариант --
слишком низкоуровевый. Если кто-то считает что так можно и про Python
было бы сказать что он хорошо подходит инженеру, но его не выберут
потому что он в тысячи раз медленнее C, то к Fortran-у этот аргумент не
относится: тупейший простейший код перемножения матриц (несколько
циклов, простая арифметика) GNU Fortran-ом компилируется в программу
которую я не смог обогнать написав её на чистом C. Безусловно мои
познания и сейчас в C не очень велики, но как бы я не пытался что-то
сделать, но gfortran всё равно уделывал по скорости gcc программу.
Причём нам конечно же рассказали про F77, где фиксированные отступы и
заточенность под перфокарты, но в основном потом писали на куда более
человеческо удобоваримом F90. Серьёзно, если бы сейчас мне нужно было бы
сделать быструю (и это главное) числодробилку, то я бы снова взял в руки
Fortran, хотя с первого курса и не брав его в руки, но меня это не
пугает ибо он простой.

Дальше нас учили и показывали Mathcad, Maple, Matlab, Simula (если
правильно помню название). Mathcad с самого начала не понравился. Maple
с самого начала понравился, ибо нормальный ввод хотя бы, а не вовсю
визуальный как в Mathcad. Насколько помню, Maple штатно вообще в
программу не входил и это личное желание расширить кругозор студентов
преподавателя Алябьева было. Имени не помню (я вообще на имена плох),
все его по фамилии называли между собой. Безгранично уважал этого
человека, поклон ему! Maple умел символьно решать интегралы и нам,
студентам, это было очень кстати.

Но тогда я уже заразился движением СПО! Использовать всё вышеназванное
не мог по двум причинам: у меня не было Windows, оно всё не свободное.
Как и AutoCAD аналогично и всё остальное. В итоге для Maple была
отличная СПО замена в виде Maxima. Полноценной замены на тот момент
современному Matlab не было, но GNU Octave даже обратно совместим с его
более старыми версиями. Вся работа по Mathcad проходила в классе и дома
ничего по нему выполнять не надо было -- поэтому у меня проблем с его
сдачей не было. Maple вообще чисто факультативный и тоже вроде только в
классе достаточно его было использовать. А вот по Matlab были задания.
Делал я всё в GNU Octave и какого-то функционала там не хватало и
приходилось самостоятельно писать из её компонентов (на самой Octave)
недостающие части. Выполнение работы занимало гораздо больше времени чем
у одногруппников, но я принципиально, используя только СПО, делал нужные
работы (в принципе, являющиеся Matlab-compatible).

Был курс по какой-то экономике и там были задачи оптимизации. Нам
выдавали на дом их решать с помощью Excel-а, в котором какой-то
функционал для этих задач имелся. В OpenOffice я уже не помню, но вроде
функционала не было такого. Но мне же надо выполнить задание? В Excel
оно выполняется быстро: нужно просто грамотно составить таблицу исходных
данных, запустить оптимизацию, дальше правильно интерпретировать
результат -- за полчаса вроде всё спокойно делалось. Я же писал
программу на Python (одна из первых на этом языке) со всякими numpy
(scipy?). Заняло это не один день в итоге, но задачу выполнил. А кроме
этого, ещё написал на несколько страниц документ о том, почему
заставлять (хотя он и не заставлял, просто предлагал, но у меня и не
было наезда как такового) использовать проприетарное ПО в учебных
заведениях не есть хорошо. Думал что будет срачь с преподавателем
немолодым (выскочек то они особо не любят), но... он с интересом
прочитал его, уважил мою мнение и в целом согласился, не знал про всю
эту тему свободного ПО.

Причём, для этой задачи оптимизации надо было визуально построить...
даже не знаю как это называется, но какие-то схемы с кучей
кружочков/квадратиков с заполненными рассчитанными значениями. Что тоже
требовало время. Я этой программой генерировал исходник для GraphViz-а
который это отлично рисовал. На вход программа принимала CSV. В итоге в
него достаточно было внести значения любого человека, через секунды
получить картинку на экране которую перерисовать и сдавать работу.
Одногруппникам и делал их задачи ею.

Был у нас курс по аэрогазодинамике. Интереснейший предмет! В конце надо
было сделать курсовую с расчётом какого-то момента для спускаемого
аппарата: вроде бы понять под каким углом он должен заходить в атмосферу
чтобы всё было тип-топ. Уж тупо не помню под каким софтом преподаватель
это предлагал нам сделать, но вроде бы Ansys Fluent. Задача в следующем:
нужно сделать модель аппарата, дальше итеративно рассчитывать для неё
какие-то параметры (ух, совсем не помню какие) в зависимости от того,
под каким углом он как бы войдёт в атмосферу. Ну и проанализировать
результаты и сделать вывод как его надо вводить в атмосферу. Цифровую
модель аппарата нам дали. В общем делать расчёты красивые как вот на
этих картинках в статье: https://en.wikipedia.org/wiki/Computational_fluid_dynamics

Ну не буду же я это делать в богомерзком несвободном ПО? Хотя задача уже
совсем узкоспециализированная -- это не замена какого-нибудь там Matlab
или Word. Но нашёл я OpenFOAM, ParaView. 3D модель аппарата в каком-то
проприетарном формате, поэтому мне пришлось ещё и как-то её "рисовать",
да ещё чтобы это можно было в этот OpenFOAM засунуть для расчётов. А ещё
у меня не было всех этих параметров атмосферы, которую преподаватель в
виде некоего preset-а (насколько помню) выдал. Это тоже пришлось с нуля
в ручную моделировать. Это не очень правильно, но вообще сдать курсовую
было легко, просто введя данные в некую выданную blackbox-программу и по
результатам построить графики в Excel. Мне же пришлось реально понимать
и вдаваться в подробности работы всего этого, ведь OpenFOAM это очень
такая низкоуровневая штука которая не является софтом для расчёта
спускаемых аппаратов, а софтом для расчёта аэро и гидродинамики в целом.
Это была САМАЯ адовая с точки зрения потраченного времени а нагрузки
работа! Мне приходилось писать тысячи строк на Perl, сколько-то на C++,
чтобы выразить в этом OpenFOAM что я от него хочу, чтобы смоделировать
вход СА в атмосферу, указать как его разбить на сетку, как производить
вычисления, что из себя представляет газ и как он воздействует на
аппарат. Дикое количество расчётов я делал на Perl, конвертирования
данных, преобразования и прочее. Штатно вообще многое можно и нужно было
делать на C++, но для меня это чересчур было большим порогом вхождения и
если я мог хоть какие-то тучи чисел получить для каждой "клеточки" сетки
аппарата, то я делал кучу postprocessing-а уже на Perl-е. И ещё мне
запомнилось что сам по себе OpenFOAM штука ресурсоёмкая и у меня
некоторые операции занимали по паре суток расчётов.

Как уже сказал, это была самая адовая работа, которой мне кажется я
занимался весь семестр, где я не раз до 4-5 утра не ложился спать, но в
итоге работу выполнил. Хотя это была и не та самая модель атмосферы, и
спускаемый аппарат не совсем такой формы (она у него вообще не очень
тривиальная, но у меня уже не было времени на создание её точной 3D
модели -- было нечто очень приближённое и похожее), но препода этот
весь труд впечатлил и он много расспрашивал про OpenFOAM и его
устройство и прочее, хотя я на многое не мог ответить, ибо сам ни черта
не понимал (всё же это профессиональный инструмент для профессионалов в
области аэрогазогидродинамики, а я всего-то один или два семестр учился
этому поверхностно (ибо для нас это только поверхностная тема)). Но
единственный получил пятёрку за эту курсовую. Было адски сложно, ночи
бессонные, но мне понравилось, реально очень понравилось. Хотя наверное
мог бы и за час все вычисления в проприетарном выданном ПО выполнить, а
дальше за денёк оформить результаты, но нет! проприетарное ПО
принципиально не вариант!

Это всё было до четвёртого курса включительно. Дальше аэрогазодинамики
или подобного не было, ибо всё больше уже по специальности технолога.
Тогда я открыл такой замечательный софт как SAGE (он тогда относительно
недавно только и появился). Это такой комбайн из десятка самого разного
софта математического и связанного между собой Python-ом. Я могу на
Python этому SAGE задать какие-нибудь вычисления для проделки в Octave,
её результаты засунуть в Maxima (а на самом деле я могу и не знать что
именно там внутри будет запущено), потом как-то визуализировать и ещё
постобработать где-нибудь, а между всем этим и на самом Python с данными
что-нибудь поделать. Кроме этого, SAGE умел интегрироваться с LaTeX. В
итоге, штатно многие курсовые (например по строймеху, сопромату) это
было очень очень много вычислений, формул, уравнений, интегрирования и
прочего. С SAGE-ем я мог абсолютно всё всё всё проделывать прямо внутри
LaTeX документа. То есть я прям буквально в LaTeX ввожу какие-то
формулы, данные, а когда напишу "в результате получаем", то SAGE сразу
же мог подставить результаты в это место. Причём можно было выводить и
промежуточные результаты. И речь не просто про числа, а про
промежуточные результаты решения уравнений или символьного
интегрирования -- и все эти интегралы и диффуры выводились в LaTeX
формате, красиво, символьно. Это было потрясающе круто и удобно.

Помню что было и много чертежей или эпюр для сопромата на которых всякие
эти результаты надо предоставить. По сути они очень похожи и однотипны.
Я делал SVG внутри которого прям буквально менял геометрию на основе
результатов вычислений SAGE-а. Помню что строймех в итоге моя программа
делала для многих одногруппников: достаточно было внести какие-то
начальные данные (числа), ФИО студента, а дальше через минуту на выходе
получить PDF-ку со ВСЕМИ расчётами, даже символьными, графиками,
картинками (и все они для каждой своей задачи правильно отрисованы) и
прочим. Преподаватель удивлялся чего это куча работ выглядит прям
слишком уж одинаково (именно выглядит -- расчёты то везде совершенно
разные).

Ноутбук очень помогал со всем этим делом! Всегда и везде будут придирки
к работам, и их прямо на месте или в библиотеке можно всегда было
поправить. Когда я учился, то у нас были люди которые в Word только
текст вводили, а дальше оставляли много пустого пространства для того
чтобы от руки там математику написать. Многие работы вообще от руки
делались полностью. Я уже тогда ненавидел что-либо делать от руки и
только всё в цифре. Сколько я чертил Thinkpad R60e, eeePC, и Lemote
Yeeloong ноутбуках! Последней штукой я особо гордился: ноутбук с
полностью свободным ПО, MIPS64 процессором -- SAGE, LaTeX, QCad всё на
нём отлично работало! Но для черчения мышку с собой главное было не
забыть. Но я после первого курса, с лета, уже полноценно работал и мог
себе позволить покупать эти дорогостоящие штуки, тогда как ноутбуки у
немногих были.

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

Один семестр у нас был AutoCAD где-то на начальных курсах. И в конце
нужно было именно в AutoCAD сдать какую-то работу. Преподавали нам его в
учебных компьютерных классах конечно же. Но работу для сдачи делать
предполагалось делать дома. У меня тогда что-то типа конфликта возникло
(что у меня нету AutoCAD дома и точка), но мне выделили один раз время
после занятий в учебном классе, чтобы я там на их компьютерах выполнил
задание. Ведь, в общем случае, я и компьютер не обязан иметь дома. Тем
более i386 архитектуры. Тем более с Microsoft Windows. Тем более с
Microsoft Office, AutoCAD и прочим. Для студентов у Microsoft были вроде
программы по бесплатному получению их софта для образовательной цели. Но
компьютер же мне бесплатно никто не выдаст. Да и AutoCAD у меня сомнения
что можно было бы получить бесплатно студенту. То бишь, я же не
отказывался выполнять задания в проприетарных программах, раз этого
хотят -- просто у меня нет этих небесплатных (и вообще очень недешёвых)
проприетарных программ. Но требование показать умение работы именно в
конкретной программе было лишь один раз с этим AutoCAD-ом.

Один знакомый вкинул как-то конкурс на создание виртуального музея...
чего-то там, уже не помню чего. Мне не понравилось что этот конкурс
требовал приёма документов в виде (вроде бы) Photoshop файлов. Я им
письмо что это типа неправильно требовать для такого дела использования
несвободного ПО. Мне ответ. От меня ещё письмо. В общем, дошло до того,
что я со своим другом (а он любит и шарит в дизайне и всём таком)
приняли участие в конкурсе, сделали что-то на Plone CMS и получили призы
за "лучшее решение по наполнению сайта", за техническую реализацию (или
что-то типа того). В качестве приза я получил ноутбук нехилый, который
продал (у меня был свой ThinkPad получше) другу: в прошлом году он
сообщал, что ноутбук до сих пор используется и жив.

Одна знакомая предложила подработку по написанию каких-то сайтов. Ну а
для начала надо было написать CMS под ним. Тогда я трогал PHP и...
говорил что за AJAX технологией будущее и сайт активно использовал этот
AJAX, а также какой-то XML движок/парсер броузера. Я этот движок даже
выкладывал на SourceForge и у меня возник конфликт потому что заказчик
не думал что это будет свободным ПО. Короче два часа (насколько помню) у
нас были переговоры где он упрашивал меня не делать его свободным. Ибо
вообще-то ему нужны готовые сайты, а как уж они там будут созданы,
используя уже имеющиеся CMS, свою наработку или ещё какие инструменты,
его не должно было волновать. В итоге работа продолжилась, но оказалось
что нас в любом случае хотели с другом кинуть (не заплатить за работу),
так что тот человек остался ни с чем, а мир получил крайне быстрый и
эффективный по трафику движок CMS, а я с другом много опыта. Даже не
помню использовал ли его кто, кроме меня, но сейчас движок я конечно уже
удалил за неактуальностью.

На работу меня заставили пойти из-за того, что на первом же курсе сдал
матан на два. Предполагалось что я поработаю только лето. Когда
устраивался, то договорился о зарплате в $300. В итоге я за месяц
написал (m0n0wall проект был в основе web-интерфейса) прошивку для
криптомаршрутизатора, который в итоге активно продавался и был
сертифицирован (ФСБ/ФСТЭК/whatever для криптографии). Но свои $300 я не
получил -- видя как идёт у меня работа, мне сразу же стали платить $700.
Само собой, на работе я остался и проработал и после окончания
института, став под конец начальником отдела RnD. При этом, гендиректор
очень уважал open-source и хотел вносить вклад в него: почти всё что
было разработано в компании становилось свободным ПО, что мне тоже
крайне радовало что я вносил в СПО вклад.

Вообще время в институте -- лучшая часть моей жизни! И успешная работа
программистом, и любимая девушка (с начала второго курса и до получения
диплома я с ней был) и десятками посещение грайндкорных концертов, и
попытка поступления на службу в ФСБ (а это уйму времени!), борьба за
использование свободного ПО, куча времени проведённого с друзьями
одногруппниками (куда с ними только не ходил и не проводил досуг
(нередко и прогуливая работу)!). Мне кажется я был на порядки добрее,
веселее и интереснее как человек. Хотя... написав всё это, может я и
прежде был всё таки, в первую очередь, дичайшим занудой и упёртым
беспринципным бараном :-)? А да и ладно -- я себе тогда нравился!

    [оставить комментарий]
    комментарий 0:
    From: David Rabkin
    Date: 2020-05-08 18:26:28Z
    
    Привет,
    
    Относительно недавно начал тебя читать. И, как говорится, интересы совпали на
    сто процентов. А тут еще МАИ. Я закончил третий факультет в 1999-ом году.
    Конечно, ни о каком Латексе речь тогда у меня не шла, делал все в Ворде.
    Вспоминаю с восторгом ПиДиПи-11 или какой-то советский его аналог. Тогда я не
    понимал, что прикасаюсь к великой истории. Фортран изучали чуть ли не Ваксах,
    принтинг результатов запуска получали в отдельной комнате. Красота. К
    сожалению, тогда меня больше интересовали водка, женщины и Квейк Два. Я жил в
    «Икаре»: https://rdavid.livejournal.com/86291.html.
    
    Я в 2002-ом году писал вариант вейвлет преобразования для визуализации
    громадных геофизических карт в «Paradigm Geophysical». И да, для всех матричных
    преобразований использовали Фортран, хотя весь проект был на плюсах. У Фортрана
    обращение к памяти как-то оптимизировано для матриц, у Си же бесконечные сдвиги.
    
    И грайндкор я люблю. Хотя больше пост-панк и дет.
    
    В общем, пиши чаще, твой фан,
    David Rabkin