Технику безопасности при работе на фрезерном станке знаю, как свои три пальца!

Вот, допустим, есть у меня китайская игрушечная ЧПУшка типа 3018 — примерно такая:

И, допустим, хочу я сделать на ней вот такую примерно детальку из фанеры:

Я, конечно, могу написать G-код и ручками, сложной геометрии там нет, но вообще хотелось бы запихнуть модель из CAD-а в специально обученную программку и получить требуемое. Вопрос: как такая специально обученная программка называется и чем в среде любителей китайского говна с ЧПУ положено пользоваться?

Как же я люблю алиэкспресс

Вот, например, продают там некий SMD-расстановщик — конструкция уровня «продвинутый любитель», но нечто подобное многим интересно:

https://aliexpress.ru/item/1005002328161355.html

И все было бы, может быть, неплохо, если бы не одно «но» — все картиночки в описании товара утащены с краудфандингового сайта, на котором уже несколько лет доверчивую публику кормят завтраками:

https://www.crowdsupply.com/citrus-cnc/simplepnp

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

Вот еще вопрос про этот ваш embedded

Есть у нас в России довольно немалое количество контор, занимающихся серьезным программированием для встраиваемых систем всех видов, цветов и размеров — от мелких смешных фирмочек в два с половиной человека до гигантов с сотнями программистов типа Инкотекса или Ителмы. Так вот, глянул я на современных студентов — и малость офигел. Как бы не секрет, что можно закончить считавшийся в прошлом приличным ВУЗ, будучи закоренелым ардуинщиком — слышал о таких прецедентах в Бауманке и в МИЭМе (этим даже делился).

В чем беда? «Ардуинщик» от нормального программиста встраиваемых систем отличается тем, что его основные приемы работы сформированы убогим детским конструктором, а многие «полезные приемы» из мира Arduino — это попытки криво и косо эти ограничения обойти. Нет в Arduino нормальных таймеров (нет, не рассказывайте тут про TimerOne — он только на AVR поддерживается)? Не беда! Запихнем программу в loop и будем проверять значение, которое возвращает функция millis(). Совершенно отсутствует у «ардуинщиков» понимание того, что в любой приличной встраиваемой системе рано или поздно прорастает полноценная многозадачность (да, некоторые очень продвинутые притаскивают на Arduino FreeRTOS — но это уже первый шаг к пониманию того, что ардуина не нужна), полностью нет «многопоточного» мышления (а оно нужно даже в том случае, если вы активно используете прерывания — даже без RTOSа). Сама по себе убогость Arduino провоцирует написание кода, местами идущего «поперек» принятых в нормальном программировании для микроконтроллеров вещей. «Сообщество Arduino», которое так любят фанаты «платформы», превращается в этом случае в настоящее «ведро с крабами» — новичку быстро объясняют, что нечего и пытаться вылезти за пределы «платформы», так и надо жить с убогой IDE, примитивным hardware abstraction layer и китайским наколеночным конструктором.

Вот так, например, в мире Arduino принято бороться с дребезгом кнопки (ну есть еще библиотека GyverButton, но это еще более страшно) и передавать значения из прерывания:


char outputState = 0;
char lastState = 0;

void loop()
{
/* Skipped some code */
  // Now we can publish stuff!
  if (outputState != lastState) {
    lastState = outputState;
    Serial.print(F("\nSending state val "));
    Serial.print(outputState, BIN);
    Serial.print("...");
    if (! onoffset.publish(outputState)) {
      Serial.println(F("Failed"));
    } else {
      Serial.println(F("OK!"));
    }
  }
}

void handleInterrupt() {    //works when button pressed
  static unsigned long last_interrupt_time = 0;
  unsigned long interrupt_time = millis();
  if (interrupt_time - last_interrupt_time > 200)
  {
    if (outputState == 0) {
      outputState = 1;
      digitalWrite(LED, LOW);
    }
    else {
      outputState = 0;
      digitalWrite(LED, HIGH);
    }
  }
  last_interrupt_time = interrupt_time;
  delay(100);
}

Покажите это знакомым программистам встраиваемых систем, пусть они ужаснутся.

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

Казнить нельзя помиловать

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

Где-то месяц назад wannabe-программисту встраиваемых систем была выдана не очень сложная задача — разобраться чуть-чуть с сетевым стеком 6LoWPAN over BLE в RIOT OS, немножко автоматизировать его работу и все такое прочее.

Три недели назад чуваку был задан вопрос: все ли просто, все ли понятно, нет каких-либо вопросов? Ответ — разумеется, все просто, все понятно, вот прямо сейчас все сделаю!

Еще неделю спустя задача не выполнена, зато чувак объявился с великолепной идеей — а давайте перейдем на mbed OS, уж там-то все точно просто и понятно, вот даже API References and Tutorials подробные есть (но работает это поверх «обычного» IEEE 802.15.4, а не моднейшего BLE)! Это уже не «звоночек», это гораздо хуже — но в общем сроки пока не горят, ничего ужасного не произойдет, если он недельку потыркается в mbed, нужного там не обнаружит и с позором вернется туда же, откуда начал.

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

В 0:22 в ночь перед небольшим «интеграционным тестированием» системы в чатик прилетает вопрос в духе «а как какать»? По-хорошему, такой вопрос должен был возникнуть еще четыре недели назад — но не будем о старых обидах. Тут, конечно, повезло, что я чатик еще читал — так что в 4:44 в гит-репозитории проекта появилось решение где-то половины той задачи, состоящее из какой-то адовой копипасты и собственного кривого кода arduino-style.

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

UPD После легкого попинывания (с предъявлением протокола совещания недельной давности) сегодня утром чел доделал к обеду оставшуюся часть задачи, итого наработав на 8 часов (ну а мне работать меньше, это хорошо). Другой вопрос, когда он вообще спит?

Дети, изучайте ардуину

С «умной теплицей» на ардуине вы можете сделать очень многое:

— получить дополнительные баллы к ЕГЭ и поступить в престижный ВУЗ на востребованную околоайтишную специальность;
— поучаствовать во всяких хакатонах и конкурсах для студентов;
— защитить в ВУЗе на отличную оценку «проект», курсовую и дипломную работы;
— и все это — с одной и той же поделкой из кружка «Юный ардуинщик!»

Ебаный блядский андроид

Изучаю тут реализацию 6LoWPAN over BLE для Android, выяснилось следующее:

— в 7 и 8 версиях есть недокументированный способ открыть сокет уровня L2CAP (через джавовскую рефлексию, описано в дипломной работе этого самого Wieland’а), в 9 версии рефлексия для некоторых «системных» классов запрещена (в том числе и для BluetoothDevice), в 10 версии это API сделано публичным;
— начиная с 6 версии Android не дает узнать MAC-адрес «своего» Bluetooth-адаптера, обходные пути нагугливаются на стековерфлоу, но постепенно закрывались гуглом, начиная с версии 8.1 закрыты все;
— MAC-адрес постоянно и непредсказуемо меняется ради «прайваси» пользователя;
— для того, чтобы начать сканирование BLE-устройств, надо включить «геолокацию», что неудобно для пользователя и в принципе выглядит подозрительно (тут у нас приложенька для фитнесс-браслета, нахуя ей геолокация?).

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

Разъясните мне про маркетинг

Я, конечно, многое могу понять — но разве менеджмент качества имеет какое-то отношение к «маркетинговой деятельности»?

https://www.hse.ru/ba/it/students/diplomas/468570339

Или это из разряда баек про «PCI DSS — это логотип, увеличивающий конверсию»?

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

В обсуждениях вчерашней истории про обиженного программиста и 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. Есть, конечно, маленький шанс, что это все не всерьез, а он сам — циничная сволочь, беспардонно наживающаяся на всем этом околоэкологическом хайпе — но совсем маленький, и как-то уже даже не хочется делиться тем первым текстом.

Долой скучные лекции!

Если начать лекцию со слов «Футбольный клуб Спартак только слабых привык побеждать» — то какую смИшную картинку лучше вставить в середине, чтобы удержать внимание аудитории? Эту:

Или эту?

Да, там посередке будет еще формула Шеннона, так что часть студентов непременно уснет.

Хроники чипагеддона

Читаю на днях фейсбучную ленту. Крупный производитель аэронавигационного оборудования развлекается тем, что меняет в своей продукции один китайский модуль с модемом LoRa на другой — потому что первый с Алиэкспресса пропал, а второй нашелся в каких-то московских магазинах «для ардуинщиков«. Изобразил фейспалм, посоветовал покупать не китайские поделия, а SX1276 в Компэле (они там есть во вполне товарных количествах), и пошел читать твиттер.

В твиттере наоборот — восхищаются развитием китайской электронной промышленности. Развитие выражено в том, что на алиэкспрессе можно купить мелкими партиями микроконтроллеры Holtek и Dialog, да еще и по совершенно бросовым ценам. О том, что продавцы с али продают обычно неликвиды с производства или даже буквально мусор с разобранных плат (а сами Holtek и Dialog с розницей вообще не связываются, нахер им это надо) — китаелюбивые твиттерские предпочитают не думать.

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

Зрада чи перемога?

Я тут летом писал о том, как нужна математика в телекоме и около него — а на днях прекрасное подтверждение увидел:

Среди ссылок на документы 3GPP — упоминание «теоремы о неподвижной точке». Разумеется, только особый эстет будет ссылаться на диссертацию Банаха, большинство удовлетворится ссылкой на учебник Колмогорова и Фомина — но я хочу задать другой вопрос. Когда пишут «Львов, бывшая Польша, ныне Украина» — это зрада чи перемога?

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

Ввязался в одну дискуссию в жанре «ну тупые студенты пошли, ну просто пиздец!». Собственно, сам придерживаюсь подобного мнения, но есть пара фактиков, которые игнорировать нельзя.

Если посмотреть на половозрастную пирамиду населения РФ (за прошлый год, правда, но не суть важно) — то мы увидим, что сейчас в ВУЗах учится самое малочисленное поколение рожденных в конце 90-х (очередное «эхо войны», плюс демографический кризис, плюс…). Вдобавок накладывается выросший (опять же смотрим на ту же картинку, на самое многочисленное поколение нынешних тридцитилетних) в 2000-е план приема — а от него в нашей системе образования растет все — и «нормативно-подушевое» финансирование, и количество ставок ППС.

Примем теперь «качество» выпускников за неизменное — то есть предположим, что доля «отличников» из года в год постоянна — и получим, что если количество студентов не сократить вдвое в сравнении с «хорошими» для ВУЗов 2000-ми — то непременно придется снижать планку для поступающих. Статистика примерно пятилетней давности показывает, что если план приема сократился — то незначительно:

https://genby.livejournal.com/625588.html

Если в застойно-советские времена, скажем, в 1975 году, на 2,5 миллиона выпускников школ приходилось чуть меньше 0,6 миллиона мест в ВУЗах, а в 2005 году на примерно те же 2,4 миллиона выпускников было 1,6 миллиона первокурсников (ну да, спрос родил предложение) — то в 2015 из 1,3 миллиона выпускников в ВУЗы поступило 1,2 миллиона. «Предложение» на рынке высшего образования очевидным образом сократилось слабо — и стоит заметить, что это коснулось всех.

Вот уже несколько лет организаторы ЕГЭ стыдливо пишут, что сдавшие экзамен по математике на 60 баллов фактически поступают в технические ВУЗы (хотя 60 баллов на ЕГЭ можно получить, вообще не приступая к части В, сложность которой соответствует «дореформенному» экзамену в технический ВУЗ средней руки) — а ВУЗы жалуются, что абитуриенты не осиливают программу — а ведь если подумать, то все дело в малочисленности нынешнего поколения абитуриентов.

Что характерно, половозрастная пирамида влияет на наше общество гораздо сильнее, «тупые студенты» — это лишь одно из проявлений этого влияния, и не могу сказать, что оно сулит нам что-то хорошее. Есть, правда, шансы на будущее частичное исправление ситуации — но рассуждая о «половозрастных пирамидах» и показывая на них апокалиптические картинки с третьим «эхом войны», я не могу удержаться от того, чтобы подсунуть аналогичные графики для Германии тридцатилетней давности (у них просматривается «эхо первой мировой войны», оно же «удачно» накладывается на вторую мировую, а на 80-90-е приходится «второй демографический переход». Не правда ли, диаграмма 1989 года очень похожа на нынешнюю российскую (а еще больше была бы похожа где-то 1995 года)?

Интересно, а че как было в Германии в начале 90-х? Были ли разговоры о том, что арийская раса вымирает?

Лицензия +NIGGER

Предлагают дописывать в популярные опенсорс-лицензии нехорошие слова:

https://plusnigger.autism.exposed/

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

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

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

Первая: встраиваемая операционка не реагирует на ввод с 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/

Очередной наброс

В 2021 году умеют работать в Unix-подобной командной строке не виндузятники (с ними все понятно), и не линуксоиды (это в массе своей позеры, воткнувшие на ноутбук убунту), а только лишь макоебы.

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

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

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

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

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