Орфографический вопрос

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

Никогда не хотели угробить пару стартапов?

Есть прекрасная вакансия:

https://www.facebook.com/ekaterina.mitskevich/posts/10164168331335265

Про то, что ищут джуна — не читайте. Главная мякотка в комментах:

В целом, это предприниматель по технологическому продукту внутри банка — должен научиться сам делать многое.

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

Р — релевантность

Яндекс снова показывает чудеса:

yandex-dzyuba

Кто найдет по ссылке что-то про летчиков и эндокринологов — получит… большой респект, во!

Про сети и симуляторы

Интересует меня, кстати, один вопрос — довольно узкоспециальный, но надо записать, чтобы не забыть. Вот есть такой довольно популярный среди исследователей сетевой симулятор NS-3 — в котором есть реализации TCP/IP стека, MAC и PHY уровня Ethernet, WiFi и вообще черта лысого. Есть, опять же, ставшее в последнее время популярным направление исследований — сети на основе LoRaWAN. Исследования там самые разные — от прикидок уровня «карандашом на бумажке» до изучения работы сети с использованием симуляционной модели — в том самом NS-3:

https://github.com/signetlabdei/lorawan

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

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

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

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://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

И еще про 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.

Про время

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

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

Нам не всем пиздец

Вот [info]mbr посмотрел ролик про то, как нейросетка пишет код на питоне лучше выпускника трехмесячных экспресс-курсов, и предрекает всем программистам погибель и замену нейросеточками.

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

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

А вообще — все это немного напоминает переход к CAD-ам в проектировании микросхем. Вплоть до начала-середины 80-х это был процесс с массой ручной работы, топология рисовалась практически вручную, вручную же и проверялась — вот в этом видео Боб Супник, занимавшийся проектированием микропроцессоров в DEC, вспоминает о том, как это было организовано (на 1:28:16):

So in, sort of, the last summer that I was there, we had an army of summer students and volunteers crawl over our paper schematics, and we hand transcribed them into a netlist. And then, we used the netlist for layout verification, and it worked. It worked. Because in comparison, T11 had done its layout verification the old fashioned way, which is to print out these monster plots. And then, we all crawled all over it with colored pencils and rulers, measuring things and seeing that they went from point «A» to point «B» correctly. It took us 3 months with 12 people to verify 12,000 transistors.

https://www.computerhistory.org/collections/catalog/102738263

Примерно о том же пишет Юрий Отрохов (один из разработчиков микропроцессорного комплекта 1801/1806/1836 серии, советского одночипового PDP-11) в теме о советских микропроцессорах на ixbt-шном форуме:

Да, как помнится, была такая система с названием Кулон в которой девочки-топологини на компьютерах послойно рисовали топологию на основе заданной электрической схемы прошедшей моделирование в АСКТ. По программе ПАСС моделировали только критические по быстродействию узлы схемы даже с учётом получающихся при рисовании параметров топологии. Потом эта топология, совмещённая по слоям, разными цветами прорисовыалась на листах майларовой плёнки, которые склеивались для проверки глазками соответствия топологии электрической схеме. Т.е. ни какого автоматизированного синтеза топологии по схеме, ни автоматизированной верификации топологии на соответствие схеме тогда ещё не было.

https://forum.ixbt.com/topic.cgi?id=64:3394:1596#1596

Что же случилось ближе к началу 90-х? Мощность компьютеров позволила делать и автоматический синтез топологии, и проверку ее на соответствие схеме. По воспоминаниям Отрохова из той же темы на форуме, в начале 2000-х из попытки перевести 1806 на более современный техпроцесс, «родилась» 1836 серия — уже полностью автоматически синтезированная по схемам от 1806, безо всякого ручного труда и рисования топологии на полу.

Вопрос: что же случилось с профессией тополога? Она умерла, замененная всякими CAD-ами (хотя до сих пор умные люди оптимизируют, скажем, алгоритмы раскладки элементов в ПЛИС, пытаясь добиться еще лучшего результата — только работают они в конторах, которые делают эти самые CAD-ы). А разработка микросхем в целом? Вовсе нет, сейчас она стала проще в разы и доступна, скажем, студентам профильных ВУЗов (через программы вроде Europractice) или совсем небольшим fabless-компаниям.

А если вы боитесь, что вас заменят CAD-ом — у меня для вас, действительно, плохие новости!

Г — глобализация

Купил в немецком магазине док-станцию для китайского ноутбука Lenovo американской марки Thinkpad. На ярлычке, приклеенном на коробку, написано Europe/Korea (видимо, отличается комплектация в плане блоков питания), в приклеенном на коробку рядышком кармашке лежит гарантийный талон с надписями исключительно хангылем, а на этикетке написан еще и адрес дилера в/на Украине (что-то вроде Одесса, Малая Арнаутская, 14/88).

Ну а про EMS и Почту России я в другой раз напишу.

Про «профессиональные сообщества» в рунете

Вот почитываю я иногда, скажем, хабр, или форумы по электронике, или что-то в таком духе — и обратил внимание на такую вот вещь — профессиональный уровень участников вот таких «тематических» сообществ никогда не растет. Возьмем, например, любой форум ардуинщиков — и что десять, что пять лет назад, что сейчас увидим в списке обсуждаемых одни и те же темы (как подключить светодиод, например). Возьмем тусовку посерьезнее, плотно сидевшую на AVR десять лет назад — и увидим все те же AVR и иногда робкие попытки «освоить» что-то типа STM32 (на уровне «возьми CubeMX и потыкай мышкой»). Интересно, а чем это объясняется?