Но вообще сегодня же Хеллоуин

Так что надо бы переписать предыдущую запись в немного более страшных тонах.

halloween-keyboard

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

Приятных вам сновидений — в которых мечта о собственном IoT-стартапе превращается в ужасный кошмар.

Делайте ставки, господа

Продолжаю тут развлекаться с LoRaWAN, и нашел просто невъебеннейшую ошибку в RIOT — точнее, в промежуточном слое между операционкой и «эталонной» LoRaMAC-Node. Ошибка там пряталась довольно давно, но то ли никто не обращал внимания, то ли списывали на «редкие разовые глюки» — в конце концов, возникала она только при довольно активном обмене в сети (хотя в принципе возможна и «на столе»).

Дело в том, что в одной из функций этого промежуточного слоя никто не обратил внимания на то, что драйвер трансивера SX1276/77/78 иногда может вернуть при вызове recv() отрицательное значение, сигнализирующее об ошибке — и радостно записывали то, что он возвращает, в переменную типа size_t — а дальше при попытке прочитать почти 4 гигабайта все радостно валилось с затиранием немалой части памяти и невнятным сообщением об ошибке.

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

https://github.com/RIOT-OS/RIOT/issues/14962

Я, в отличие от них, был прямо заинтересован в исправлении ошибки — и сделал это, поправив буквально пару строк кода:

https://github.com/RIOT-OS/RIOT/pull/15355

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

С другой стороны, зная отношение авторов RIOT к присылаемым им багфиксам — вангую те же два месяца жевания соплей до каких-то осмысленных телодвижений в отношении моего pull-request. Впрочем, я со своей стороны все необходимое сделал, и даже поправил строчечку, чтобы не ругалась их система Continuous Integration. Буду дальше следить за происходящим.

А вы как думаете — примут или замнут? И не стоит ли закинуть в окрестностях FU Berlin и HAW Hamburg пару девайсиков, срущих в эфир пакетами с битой CRC?

Кризис к нам приходит

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

https://habr.com/ru/company/avito/blog/525384/

А тем временем рыночек порешал и первыми на мороз пойдут… кто бы вы думали?

https://www.kommersant.ru/doc/4539560

Дальше будет еще хуже.

Мир опенсорса интересен и разнообразен

Можете себе представить, что проверка криптографической контрольной суммы в серьезном проекте написана буквально «на коленке» непонятно кем, неизвестно как работает и снабжена комментариями на странном языке (испанский?):

https://github.com/Lora-net/LoRaMac-node/blob/v4.4.1/src/system/crypto/cmac.c

Теперь можете.

xkcd-dependency

В этой картинке с xkcd все как всегда серьезно.

Кстати, а любите ли вы Лема?

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

holy-auto

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

PS Да, я знаю, что это всего лишь смешная опечатка.

Обожаю, блядь, фронтендеров

Если вы думаете, что в мире опенсорсных платформ для IoT все хорошо, и всякие решения от непонятных людей за многоденег не нужны — вы глубоко ошибаетесь. Только что наблюдал, как вкладка в MS Edge с какой-то из страничек веб-интерфейса ChirpStack отъедала ресурсов больше, чем показывающий красивые картинки SDR Sharp.

А еще выяснилось, что установка InfluxDB на GatewayOS — образ флешки для Raspberry Pi с установленным и настроенным ChirpStack — занятие для сильных духом; есть мнение, что поставить ChirpStack отдельно на голую Raspbian будет едва ли не проще.

Хоть садись и сам все пиши.

И еще немного обосру Rightech

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

Для начала — а что же нам предлагает эта компания? Очередную «облачную платформу для Интернета Вещей» — а если посмотреть повнимательнее, то получается что-то вроде недо-SCADA, программируемой не на принятых у нормальных людей языках из IEC 61131-3, а на знакомом каждому фронтендеру джаваскрипте. Что же, как говорил Мао, «пусть расцветают сто цветов» — нравится вам джаваскрипт — пользуйтесь! Но давайте поползаем по сайту и связанным с компанией телеграм-канальчикам и попробуем составить портрет потенциального контрагента :)

Театр начинается с вешалки, а какие-то серьезные дела с компанией — с ее ЕГРЮЛ, ИНН и прочих таких буковок. Что мы видим в разделе «О компании«? Никаких реквизитов и строчку «фактический адрес»? Напоминает долбоебов из Супры, зарегистрировавших для работы с автопромом отдельное юрлицо на бомжа. Забавно, что и в качестве способа оплаты в разделе «платежная информация» упоминается только эквайринг с карточек — будто бы сервис предназначен в первую очередь для физлиц.

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

Мы не останавливаемся на достигнутом и продолжаем развиваться, стараясь с каждым днем улучшить работу нашей платформы.
Мы добавляем новые мощности и переезжаем на новые серверы, поэтому 14.10.20 начиная с 14:00 (UTC+3, по мск) возможны некоторые проблемы с доступностью платформы на время, пока будут обновляться DNS. Это плановое развитие, ведь мы стараемся улучшить стабильность и качество работы RIC.
Просим вас не вносить никаких изменений с 14:00 по 14:15. Внесенные изменения могут не сохраниться.

https://t.me/rightechportal/99

Особенно радует публикация сообщения 13 октября в 18:09. Видимо, про такую скучную штуку, как SLA, ребята тоже не слышали. Я уж не говорю о том, что плановое отключение сервиса в середине рабочего дня — это хуже даже, чем «пили пиво, меняли пароли» в пятницу вечером.

После этого не удивляет, например, вот такой детский сад на ардуине:

https://rightech.io/online-webinar-iotas/

Ну и наконец — а что это за зверь такой, «платформа для Интернета Вещей»? Я вот в пятницу вечером под пивко на банальном Raspberry Pi поднял lorawan-server, кидающий данные с датчиков в InfluxDB (а потом их в виде красивых графиков показывает Grafana) — это уже «платформа» или еще нет? И честное слово, я готов отстаивать точку зрения, что поднятое in-house вот такое поделие будет ничем не хуже творчества ебучих хипстеров из Rightech — во всяком случае, тут хотя бы есть понимание, как защититься от «некоторых проблем с доступностью» в середине дня в среду.

PS Ну и не могу не поблагодарить @i_am_romochka, нашедшего смешную орфографическую ошибку:

rightech-orpho

Все-таки тестировщик военных коммутаторов — это особый склад ума.

Курс по интернету свищей

Читаю тут твитор — и натыкаюсь на очередной фейспалм @meowthsli:

«Эволюция промышленного интернета вещей: катализатор новых открытий в текущих реалиях…»

— Круто! Сколько открытий сделано?
— Пока нисколько

https://twitter.com/meowthsli/status/1320389183794532353

Загуглил, нашел на хабре состоящую на 90% из воды статью:

https://habr.com/ru/company/otus/blog/524966/

Впрочем, это даже не главное ее содержание — весь этот поток сознания был написан ради ссылки на курс «IoT-разработчик» на платформе Otus:

https://otus.ru/lessons/iot-dev/

Уже где-то на этапе чтения «программы курса» я почувствовал, что пытаются впарить говно — точнее, «облачную платформу Rightech». Ну в самом деле — о каком IoT можно говорить, когда «по окончании курса вы будете уметь», например, «строить системы датчиков/исполнительных элементов, используя микроконтроллер Arduino и эмуляторы, в том числе самописные», или «создавать программы на Python, обеспечивающие функциональность IoT для одноплатного компьютера Raspberry Pi»? Я не поленился и даже попробовал пройти вступительный тест — скажу сразу, ржал аки конь. Чего стоит, например, такой вопрос:

Какая технология не обеспечивает возможность подключения беспроводных устройств к другим устройствам на расстоянии более 1500 м?

— и варианты ответа:

  • Bluetooth
  • Wi-Fi
  • Туманные вычисления
  • Сотовая связь

Уровень понимания авторами технологий непосредственно «Интернета вещей» демонстрирует вот такой вопрос:

Имеется датчик, поддерживающий LoRaWAN, передающий на шлюз (gateway) данные о температуре (в диапазоне от -100 до 100 C с точностью до градуса) со скоростью 1 байт/с. Затем данные передаются на роутер со скоростью 100 байт/с, после чего направляются на сервер, для хранения и последующего анализа, со скоростью 10 байт/с. Вычислите время, с точностью до сотых долей секунды, необходимое для пересылки одного измерения температуры, если показания температуры кодируются одинаковым, минимально возможным количеством бит.

Ребята где-то слышали, что LoRa по современным понятиям чудовищно, невообразимо медленная — но именно слышали, без особого понимания. Об 1 байте в секунду речь там все-таки не идет (особенно в LoRaWAN, где особо медленные виды модуляции все же стараются не использовать).

Особенно шедеврально выглядит вопрос про блок-схему:

idiot-block

Готовы ответить, не подбрасывая монетку? Точнее, угадать, что думал автор?

Какое отношение к IoT имели вопросы про Javascript — точнее, про «JavaScript на уровне понимания стрелочных функций, функций map, filter, reduce» — я вообще сказать затрудняюсь. Точнее, догадываюсь — курс будет посвящен в основном работе с «облачной платформой Rightech» (и немного про Arduino и Raspberry на уровне «купите датчики на алиэкспресс»).

И вишенка на торте — прослушать курс, составленный корифеями IoT из Rightech вы можете за скромную сумму — всего 52500 рублей:

idiot-price

ООП нужно запретить

Нет, я не про Организацию Освобождения Палестины, я про объектно-ориентированное программирование, которое наносит смертельный ущерб неокрепшим мозгам:

Ну как-то, прочитав книгу Гради Буча, в которой он описывает ООП на аналогии с объектами реального мира, я теперь наоборот, рассматриваю реальный мир по аналогии с ООП.

https://habr.com/ru/post/524718/#comment_22221036

А Гради Буча и его книги следует предать аутодафе по всем правилам испанской инквизиции. Но разумеется, не просто так, а после положенного богословского диспута о Святой Троице, с рисованием UML-диаграмм.

И еще про The Things Network

А вы знаете, что если вы будете пользоваться этой фигней, то придет [Роскомнадзор] и сделает вам [Роскомнадзор] в извращенной форме? Чуваки заявляют о поддержке российского частотного плана для LoRaWAN — ну или во всяком случае есть такая опция в настройках сети — но на самом деле все гораздо хуже. Достаточно посмотреть лишь на две записи в логе, возникающие при попытке join-а устройства в сети:

ttn-frequency

Строчка внизу — передача Join Request от устройства, выполняется на одном из двух обязательных российских каналов (у нас это 868,9 и 869,1 МГц), тут все правильно — а вот через 5 секунд ему отвечают в RX Window 2 на совершенно нерусской частоте! Частота 869,525 МГц фигурирует в европейском частотном плане, но не в российском, у нас частоты «для неспециализированных устройств малого радиуса действия» — от 868,7 до 869,2 МГц. Соответственно, для RX2 в российском частотном плане прописана частота 869,1 МГц (совпадающая с одной из частот для Join, это немного неудобно, но не смертельно). Почему TTN решил забить на это все — непонятно.

А классную штуку Миландр сделал

Загибаем пальцы:

— Процессорное ядро RISC-V, 60 МГц, 3,0 Coremark/МГц;
— 256 Кб Flash;
— 112 Кб ОЗУ;
— 5*UART, 3*SPI, I2C, 4 блока таймеров, куча АЦП;
— аппаратные криптоблоки (не только AES, но и ГОСТовские «Кузнечик» и «Магма»).

https://habr.com/ru/post/518138/

Интересно, конечно, что там в итоге получится с ценой и доступностью — но вообще неплохой повод обратить внимание на RISC-V.

Про эти ваши облака

Вот тут твиттерские деды-программисты кряхтят, что современная молодежь совсем обленилась и не может сделать, скажем, элементарный софт для хранения заметок — и даже приводят примерное время, когда все пошло не так — 2012 год. Так вот, дело не в том, что кто-то обленился — дело в том, что для современных моделей монетизации софта его качество вовсе не имеет значения, а важны две совершенно других вещи:

— можно ли продать пользователям рекламу;
— можно ли продать кому-то данные пользователей.

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

https://habr.com/ru/company/globalsign/blog/523974/

Даже не стесняются писать такое, например:

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

И если рассматривать любой интернет-проект с такой точки зрения — можно ли продать кому-то пользовательские данные — то взгляд на мир становится совершенно другим.

Я бы, наверное, так не возмущался бы, если бы не потратил выходные на поиск простого способа подключить несколько датчиков с использованием LoRaWAN. Вроде бы «открытый протокол», все красиво — но как только ищещь работающие примеры, то вместо простых локальных и недорогих решений — уровня «возьми Raspberry Pi и поставь ChirpStack» вылезает модный облачный The Things Network.

Загадка для математиков и причастных

quotes

Я угадал Кеннеди («Ask not what your country can do for you — ask what you can do for your country»), Никсона («I am not a crook!»), Мартина Лютера Кинга («I have a dream»). Остальных — ХЗ, особенно Вейдера.

Хроники карантина

IMG_20201016_231856_663

Скажите, а что это за му…жик в самом уязвимом для ковида возрасте (62 года, говорят) демонстративно и цинично пренебрегает требованиями перчаточно-масочного режима?

Про время

В январе 2038 года «закончится» 32-битный Unix time, а в ноябре того же года нас ожидает очередной GPS week rollover. Какое событие окажется более, так сказать, разрушительным?

Ну и да, job security нынешнему поколению айтишников обеспечена. Программисты-эмбеддеры вообще должны скинуться и поставить памятник разработчикам GPS, заложившим в систему счетчик, переполняющийся раз в 1024 недели.

Про штрафы

Тут мэрия Москвы отчиталась, что собрала «ковидных» штрафов за несоблюдение «масочного режима» в общественном транспорте на 480 миллионов рублей. Размер штрафа составляет 5000 рублей, соответственно, оштрафовано было 96 тысяч человек. Много это или мало? Предположим, что активно кампания по штрафам шла где-то 30 дней, двумя волнами по две недели — значит, ловили где-то по 3 тысячи человек в день. Ежедневно московское метро перевозит несколько миллионов пассажиров — даже не поленился, полез в статистику и нашел — 6,67 миллионов в 2018 году. Прямо сейчас вокруг меня из 12 пассажиров на лавочках в том же «отсеке» 6 — без масок (и еще двое — с неправильно надетой маской, но нарушителями они не считаются), так что будем считать, что нарушителей — половина, то есть 3 миллиона ежедневно.

И теперь — барабанная дробь — вероятность словить в Москве штраф за отсутствие маски — 1/1000, на два порядка меньшая, чем заболеть ковидом (всего сегодня 339 тысяч заболевших на 12,6 миллионов официального населения, это 1/37).

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