Вдогонку предыдущему — про психопатов

В обсуждениях вчерашней истории про обиженного программиста и npm обнаружил забавное типовое поведение айтишнегов разных мастей. Мол, чувак ни в чем не виноват, был в своем праве (тут ссылаются на написанные в лицензии буковки «as is»), дальше оценки несколько разнятся — от «молодец, так и надо» до «ну сам бы я так не сделал, но все равно молодец».

Так вот, если айтишнег хоть на секундочку одобряет саботаж в исполнении обиженного психопата — приглядитесь к нему, с большой вероятностью он сам такой же. Если он хоть чуть-чуть, но примеряет на себя поступок этого чувака — сделайте все, чтобы он не мог одной-единственной командой git commit мелко поднасрать, тем самым «отомстив» или «проучив» кого-то. Считайте каждого программиста потенциальным саботажником и держите свой код в безопасности.

Ну и на закуску — изрядный портрет этого вашего «айти-специалиста» из одной хорошей книжки:

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

Про опенсорс и айтишников-обиженок

Весь день сегодня обсуждают выходку одного американского программиста, автора двух джаваскриптовых библиотек, который обиделся на весь мир, а особенно на компании из Fortune 500, использующие эти библиотеки — и подумать только, неспособные предложить непризнанному гению скромную six-fugure salary! Что же сделал непризнанный гений? Да просто испоганил эти библиотеки, «сломав» тысячи использующих их приложений (а в мире современной так называемой «разработки» принято подтягивать зависимости из этих ваших интернетов):

https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/

Обсуждать действия чувака неинтересно, ну разве что в порядке наброса сообщу, что он одним-единственным коммитом наработал на 273 статью УК РФ (да, я серьезно, его можно привлечь по российским законам вот прямо сейчас, внимательно читайте статью 12, пункт 3). Неинтересны и способы защиты от таких обиженок — каждому, у кого в голове что-то покрепче творожка, должно быть понятно, что тащить зависимости из интернет-помоек можно только в том случае, если финальный результат вас мало волнует.

Интереснее поговорить о том, что много где — да хоть в статье по ссылке! — сложилось совершенно неправильное представление об опенсорсе, как о чем-то разрабатываемом энтузиастами в свободное время — а если получившийся продукт достаточно хорош, то автора можно поддержать донатом! Вот примерно на этой почве у чувака кукуха и поехала. В других местах пытаются пристыдить тех, кто пользуется тем самым опенсорсом за «отсутствие вклада в community» — но что особенно забавно, особенно в этом преуспели веб-разработчики всех мастей.

В «большом» мире все как раз более-менее гладко и понятно — сложились какие-то адекватные модели поведения в диапазоне от «наши штатные сотрудники на зарплате с 9 до 18 работают над linux kernel» до «я ученый, я пишу статьи, а с кодом делайте что хотите», есть более-менее внятные модели заработка на опенсорсе — от платной поддержки до «коммерческого» форка. А вот в мире мелких npm-овских библиотек так и живет эта самая мифология об «энтузиастах». Впрочем, это не мешает «энтузиастам» и их единомышленникам всячески плакать в духе «если бизнес использует наш опенсорс, он должен нам донатить!» Во-первых, дика сама идея, что пользователи «должны» делать что-то, выходящее за рамки лицензии (никто же не стоял с пистолетом и не заставлял вас выкладывать ваш код под MIT Licence, придуманной совсем для другого?), во-вторых, единственно возможный «вклад бизнеса в опенсорс» состоит в следующем, записывайте:

— взять чувака на оклад;
— написать в его должностной инструкции «должен взаимодействовать с опенсорс-сообществом»;
— чувак после этого занимается с 9 до 18 поддержкой вашего собственного форка, пропихиванием изменений в апстрим и убеждением майнтейнеров, что эти изменения нужны и полезны;
периодически оплачивать чуваку командировки на Октоберфест.

Если вам удастся убедить «бизнес», что стоимость такой работы ниже, чем получаемые от нее материальные выгоды (например: «при выходе каждого нового релиза мы тратим N человекочасов на синхронизацию с ним, где N больше 1973«) — то вперед. Все остальные формы «поддержки» опенсорса представляются бессмысленной и ненужной ерундой, приводящей к ложным ожиданиям у всех сторон процесса.

Почитал тут на ночь фейсбук

Например, пишет один чувак про бессмысленность всяких там метаверсов и nft — и хорошо пишет, складно, подводя к мысли о том, что все это полная хуйня, и вовсе не «высокие технологии», а их заменитель, этакие блестящие бусы для туземцев в современном исполнении. Местами даже немного цинично — мол, на все это клюют лохи с совершенно определенным менталитетом, ищите способы на этих лохах зарабатывать!

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

Комплюктерное, всрато-айтишное

Поразбирался тут с тремя околокомплюктерными проблемами.

Первая: встраиваемая операционка не реагирует на ввод с UART на конкретном семействе микроконтроллеров. Решение: запустить GDB-сервер, потыкаться отладчиком вплоть до уровня HAL, посмотреть осциллографом на отсутствие обмена по UART, обновить прошивку отладочного адптера. Все более-менее документировано или понятно из «общего образования» (то бишь книжки Столярова, не устану рекомендовать, это лучший русскоязычный учебник для «программистов вообще»). Неприятно, но жить можно, примерно 3/10.

Вторая: после обновления Android Studio не компилируется старый проект. Решение: гуглить, смотреть Stack Overflow, применять безумные рецепты оттуда, три-четыре раза сменить версию gradle. Безумно, непонятно, какого хера IDE лезет в систему сборки?.. Не рекомендую, 6/10.

Третья: поставить Lineage OS на планшет Samsung Galaxy A Tab 10.1 2016 года. Решение: читать ебаные форумы, качать говно с файлопомоек, из блядских советов по «прошивке зверька» выбирать те, какие подойдут для твоего «андрюшки». Полный пиздец, повторять нельзя, 9/10.

И еще про Code of Conduct

Будет и у [info]eddy_em праздник — разработчики Rust посрались по поводу CoC и будет теперь у нас два раста — просто Rust и ПедеRust!

https://habr.com/ru/news/t/590869/

Еще несколько слов про отечественное айти-образование

Я все никак не соберусь и не напишу обещанные «многабукв» про околоайтишное образование — но вот еще маленький фактик в копилку. Как я уже писал, жизнь свела меня с первокурсниками магистратуры одного из считающихся неплохими московских вузов — и тем удивительнее обнаруживать у них катастрофические пробелы в знаниях! Например, на прошлой неделе выяснилось, что многим из них совершенно незнакомо слово «mutex» — хотя казалось бы, что курс под названием «Операционные системы» им читали в бакалавриате. Что должен подумать самоучка, читавший книжки Таненбаума? Неплохо, мы можем говорить на одном языке!

Но нет, «Современные операционные системы» Таненбаума включены в программу того курса лишь как необязательное дополнительное чтение, лектор рассказывает в основном об администрировании ALT Linux, а рекомендованный учебник пестрит определениями вроде «Менеджеры ресурсов: этот слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами вычислительной системы» (и как подсказывает коллега [info]matritcasiberia, это «определение» является общепринятым в российском образовании). Определение шикарно в своей бессмысленности — впрочем, подозреваю, что родилось оно из обвешивания прилагательными вполне невинной фразы «Этот слой состоит из модулей, управляющих ресурсами системы». Если «вычислительная система» еще как-то сюда вписывается, то пояснить, чем «мощные функциональные модули» отличаются от не мощных и тем более от немощных не смогут, наверное, даже авторы учебника (или многих учебников — фразочка растиражирована буквально в каждой «рекомендованной» минобразования книге!).

Естественно, «выхлоп» от подобного ПТУшного (и даже хуже) курса в вузе — примерно нулевой. Даже навыков администрирования ALT Linux не хватает, например, для понимания несложных инструкций по работе в консоли Ubuntu, а о вопросах, имеющих отношение к функционированию ядра ОС и даже простых многопоточных программ (что такое планировщик? зачем нужны примитивы синхронизации?) студенты не имеют вообще никакого представления.

Возникает вопрос — а зачем тратить четыре года жизни в бакалавриате, когда иной «колледж» (читай, ПТУ) за три года научит гораздо лучше?

Про QR-коды и тоталитаризм

Вот некоторые утверждают, что введение повсеместных QR-кодов — это ползучий тоталитаризм:

https://t.me/SkiperKakao/1003

Не буду спорить с общим посылом — но хочется добавить, что одно из самых зверски тоталитарных государств прекрасно проводило свои тоталитарные зверства без полной паспортизации населения (и это ставять ему в вину!). Что же касается пресловутых QR-кодов — то они ничем не хуже и не лучше других порождений государственного контрол-фричества (оно же wannabe-тоталитаризм) вроде регистраций по месту жительства, ИНН, СНИЛС, полиса ОМС и прочей бессмысленной ерунды типа предъявления паспорта при покупке билетов на междугородний автобус.

PS Вообще интересно, почему именно QR-коды, а не замечательный Datamatrix с акцизных марок?

Про коррупцию

Тут вот в фейсбуке доцент РАНХиГС жалуется, что совершенно невозможно потратить деньги с гранта:

https://www.facebook.com/alina.garbuznyak/posts/5284528958258528

А с другой стороны, какому «народному хозяйству» и «государственной службе» могут научить люди, неспособные самостоятельно реализовать простейшие коррупционные схемы?

PS А еще доцент топит за Навального, туда и дорога.

Про стартапы

Вот увидел в одном телеграм-канальчике новость:

https://www.wsj.com/articles/apple-wants-iphones-to-detect-car-crashes-auto-dial-911-11635768001

Сразу же началось обсуждение в духе «а мы такое предлагали в прошлом году», «а у нас такое мобильное приложение студенты два года назад на конкурсе инноваций показали» — но ни разу в этом обсуждении не прозвучали слова вроде «Эру-Глонасс с 2015 года ставят» или «Ителма такую херню для всего российского автопрома делает». Как бы показывает уровень всех этих конкурсов инноваций со студенческими стартапами вместе взятыми.

А ведь у Эппла есть неоспоримое преимущество — когда основные конкуренты (Эра-ГЛОНАСС и европейский eCall) звонят в 112, их система набирает номер 911 — что показано на этом весьма впечатляющем графике!

Это пиздец

Вот мне интересно, лет через этак 7-10, когда этот Ярослав сможет принять участие в Worldskills, к которым он так серьезно готовится — будет ли этот ворлдскиллз все еще котироваться?

«Подготовка к международным соревнованиям», пиздец просто.

ВШЭ переименуют в ДВФУ, а Владивосток — в Нью-Москву

Пишут, что вместо гадалки Ирмы вшэшкой будет рулить секта имени Щедровицкого:

https://novayagazeta.ru/articles/2021/10/29/valeriia-kasamara-pokinula-dolzhnost-prorektora-niu-vshe-news

Чудесный мир российского айтишного образования…

…в котором студент выпускного курса бакалавриата по специальности «Информационные системы и сети» ни разу не слышал про модель OSI, а для студента специальности «Информатика и вычислительная техника» слова «быстрая сортировка» означают, что надо вызвать метод sort().

А давайте результаты побыстрее!

Есть в «дорожном ралли» — особенно в его блудильно-квестовом подвиде — забавная составляющая, связанная с подсчетом результатов. В большом и серьезном автоспорте все просто и понятно — скажем, в кольцевых гонках процедура награждения должна состояться непременно через 15 минут после финиша и регламентирована вплоть до высоты ступенек подиума и размера груди у девушек, подносящих всякие там кубки и медали. Впрочем, победитель определяется просто и особых вопросов ни у кого обычно не возникает (нет, бывают иногда странные правила вроде Ле-Мановских, где результат определяется по пройденному за 24 часа расстоянию — но с ними тоже в целом все понятно). Легко определить результат и в ралли, и в дисциплинах вроде ралли-рейдов — хоть там и не всегда работает правило «кто самый быстрый — тот и папка».

А вот когда речь заходит об «автофизкультуре» — то подсчет результатов становится ну этак на порядок-другой сложнее, особенно, если соревнование имеет яркий «квестовый» оттенок, типа ретро-ралли. Вот казалось бы — чем может отличаться подсчет результатов соревнования, сделанного по простому определению — «проехать заданный маршрут, соблюдая определенный скоростной режим»? Беда в том, что так ездить умеют многие, и чтобы усложнить жизнь, авторы трасс придумывают разнообразные сложности, чтобы запутать участников.

Например — как вам идея, что ошибившись в прохождении маршрута, вы проходите те же судейские пункты, но в неправильном порядке? Или приезжаете на пункт внезапного контроля времени с лютым опережением? Да даже банальные соревнования на «регулярность движения», когда на километр дистанции приходится несколько точек смены заданной скорости, превращаются в сложную проверку внимательности экипажа.

Впрочем, проблема тут возникает и у самих же организаторов соревнования. Как подсчитать результаты, когда ни один из участников не проехал по маршруту правильно? Как «разгрести» протокол судейского пункта с множеством повторных прохождений? Тот же подсчет норматива «регулярности движения» запросто может оказаться неверным, о чем незамедлительно напомнят участники (был у меня случай, когда я зашел в секретариат «Ралли МАДИ» с множеством претензий по подсчетам нормативов, посидел часа полтора с судейской бригадой, пересчитывая нормативы, и вышел победителем соревнования — правда, все было вполне честно, с моими подсчетами согласны были и другие участники).

Естественно, все это обычно сильно усложняет подсчет результатов — и редко бывает, что результаты оказываются готовы в определенное регламентом соревнования время (на МАДИ порой сидят до раннего утра следующего дня). Но то МАДИ, а на каком-нибудь ретро судейская бригада находится в крайне сложном положении — кабак снят на определенное время, иногда заказаны артисты, и награждение просто нельзя особо сильно сдвигать. Недавно был свидетелем крайне курьезного подведения итогов — в одном из зачетов обнаружились сложности с подсчетом, и аж на голосование участников был вынесен вопрос — провести награждение сейчас, по не совсем корректным результатам, или дождаться подсчета и собраться той же компанией для торжественного награждения через пару дней?

Не помню, какое в итоге было принято решение, но сама постановка вопроса — выдать «абы какие» результаты прямо сейчас или дождаться точных, но потом — чем-то напомнила мне судьбу электронной голосовалки в Москве республике Анчурия.

А вот вам еще сказочка для самых маленьких программистов

Лежит файл, в том файле SQL-дамп, в SQL-дампе поле с JSON, в JSON-е NaCl-овский криптоконтейнер, в криптоконтейнере protobuf, а в protobuf’е смерть Кащеева.

И еще сказочка про выборы и ленивого программиста

Люблю я истории про O(N²), ничего не могу с собой поделать. Так как в этот раз все пока что держится на слухах — пусть это будет сказочка про республику Анчурия, где-то в Латинской Америке.

Анчурия — республика демократическая, в ней есть аж четыре партии — Пиратов, Жуликов, Воров и Коммунистов, и даже иногда проводятся выборы в парламент. Более того, Анчурия не чужда высоким технологиям и решила применить на очередных выборах модную новинку — электронную голосовалку на блокчейне, скачав ее прямо с гитхаба.

Одного не знали бедные любители высоких технологий из Анчурии — писал ту голосовалку не очень образованный программист Вася, и время подсчета результатов в той голосовалке зависело от количества избирателей квадаратично. Но Министерство Информационных Технологий Анчурии — люди прошаренные, и даже провели тестовое голосование — выбирали, что лучше, леденцы с ментолом или менты с леденцами. В голосовании приняли участие самые прошаренные граждане Анчурии, коих набралось аж 10 000, результаты подсчитались достаточно быстро — и систему решили внедрить на будущих парламентских выборах с десятью миллионами избирателей.

И вот поздно вечером в воскресенье закрылись электронные избирательные участки, и сам Министр Информационных Технологий нажал на самом мощном компьютере Анчурии кнопочку Enter, запустив процедуру подсчета. Долго ли ждать результатов? Ну полчаса-час, ответил министр — и все решили подождать. Сначала два часа ждали, потом четыре, восемь… — в общем, и к утру не дождались. Зато проснулись коммунисты и с криком «Дурят капиталисты нашего брата!» собрали митинг на Главной площади. К вечеру собрался уже не митинг, а целый майдан, кто-то обозвал цифрового министра пiдрахуем (не обошлось без украинского следа), пираты подрались с коммунистами, жулики с ворами — но все вместе пошли от Главной площади по Главной улице к Президентскому дворцу (география столицы Анчурии проста и понятна).

Ну дальше как всегда — Эль Президенте почуял, что пахнет жареным, и сбежал, в Анчурии случилась маленькая гражданская война, к власти пришла военная хунта и от греха подальше запретила все выборы, компьютеры и на всякий случай — украинский язык. Жуликов посадили, воров постреляли, пиратов развесили на реях, коммунистов отправили в тайные тюрьмы ЦРУ. Говорят, что где-то в начале гражданской войны бывший министр даже вылез из своего дата-центра в подземном бункере со словами «Мы все посчитали!» — но всем это было настолько безразлично, что никто про него и не вспомнил.

Так вот, господа программисты, вся беда случилась из-за того, что случайно найденная на гитхабе голосовалка имела сложность подсчета голосов O(N²) — то есть если для подсчета 10 000 бюллетеней требовалась всего 1 секунда — то подсчет 10 000 000 бюллетеней занял не 1 000 секунд, как надеялся цифровой министр, а гораздо больше — 1 000 000 секунд, или целых 11 дней — как раз хватит на то, чтобы не дождавшиеся итогов выборов анчурийцы начали гражданскую войну. O(N²) — очень «хорошая» оценка сложности, она, с одной стороны, достаточно мала, чтобы успешно проходить тесты на небольших наборах данных (это вам не перебор всех подмножеств, и даже не какие-нибудь числа Белла) — а с другой стороны, очень плохо ведет себя, когда данных становится много.

А чтобы не спровоцировать гражданскую войну в латиноамериканской стране — не делайте алгоритмы со сложностью O(N²), а читайте книжки Скиены, Седжвика, Дасгупты и Кормена, можно еще поставить на полочку многотомник Кнута.

Про бесплатные сервисы

На днях в твиторе срались, может ли программистская контора держать свой код на гитхабе, или это стыдно. А я вот подумал — есть ли что-то стыдное в том, что у той же конторы сайт будет на narod.ru и почта на mail.ru?

Про эти ваши выборы

Вот, кстати, прочитал тут очередную заплачку о том, что математик из МГУ Михаил Лобанов (КПРФ+УГ) проиграл выборы «административному кандидату» Попову. Валят все, как обычно, на электронное голосование — мол, «очно» Лобанов уверенно побеждал, а когда добавились результаты «дистанционки» — то единоросс резко скакнул вверх. Че хочу сказать? Ну во-первых, считать независимыми голосование очно/дистанционно и голосование за/против ЕР нельзя — тут играет куча факторов, начиная от КПРФовской агитации «против» электронного голосования и заканчивая «мобилизацией» бюджетников именно на дистанционное голосование (добавим еще сомнения в том, что голосование останется тайным и страшилки, что проголосовавших неправильно ждут мелкие репрессии — и получим изрядный перекос). Собственно, на аргументы вроде «очно побеждал А, а дистанционно у Б на 100500 голосов больше» можно отвечать этим соображением.

Удивляет, конечно, другое — а были ли квалифицированные наблюдатели или члены УИК ДЭГ от КПРФ вообще или Лобанова лично? Кажется, это несложно — отлови пару студентов мехмата или ВМК, выдай по ноутбуку и отправь в комиссию. Но судя по происходящему — никто особо не озаботился даже проверкой «почасовых» выгрузок из базы данных, не говоря уж о проверке результатов на какие-то аномалии. Это несложно — я в прошлом году на спор написал довольно элементарную проверялку результатов дистанционного голосования в его московском варианте за полчаса — но похоже, что ни одна из вопящих о невероятных нарушениях политических сил ничем подобным не озаботилась.

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

Про это ваше умное голосование

Иногда в ленту твитора заносит персонажей с интеллектом инфузории-туфельки, готовых ради победы демократии в России проголосовать хоть за тумбочку, если им так прикажет «Умное голосование».

Так вот, есть на свете много всяких интересных вещей, вроде фестиваля «Рок без наркотиков», но голосование за список мутных хуепутал, составленный еще более мутными хуеплетами, к демократии отношения не имеет вообще. Это даже не составленный из спортсменов и артистов партийный список — в конце концов, у любой партии есть какая-то программа, какое-то руководство, которое заставит спортсменов с артистами нажимать в Думе на нужную кнопочку — это именно список хуепутал, не отвечающих ни перед избирателем, ни перед кем-то другим вообще ни за что.