Драма в десяти коммитах

Кажется, сегодня был свидетелем драмы, выраженной в гитовских commit message.

В общем, сдавала мне студентка некое задание, этакий hello world для встраиваемых систем, только он у нее не запускается и не компилируется. Я помню, что вносил в основной репозиторий проекта, с которым они работают, некие правки, и без задней мысли решил посмотреть git log — не забыла ли девочка их подтащить?

В логе — прекрасная картина, последние пара коммитов девочкины, относительно свежие, дальше идут подписанные мужским именем и прямо видно, как у человека нарастала экспрессия — вплоть до «fucking shit fixed!!11». Поинтересовался, конечно, что это за чувак, выяснилось, что студенткин молодой человек. И в общем меня волнует одно — а почему он в марте что-то делал, а в апреле и мае девочка пользовалась Stackoverflow и ChatGPT? Неужели они расстались из-за ебучей Riot OS?

ChatGPT и программирование

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

#include <stdio.h>
#include "periph/i2c.h"
#include "periph/gpio.h"
#include "periph_conf.h"
#include "bme280.h"

int main(void)
{
    /* Инициализация датчика BME280 */
    bme280_t bme280_dev;
    int bme280_res = bme280_init(&bme280_dev, I2C_DEV(0), BME280_I2C_ADDRESS);
    if (bme280_res != 0) {
        printf("Ошибка инициализации BME280: %d\n", bme280_res);
        return 1;
    }

    /* Получение и вывод показаний датчиков */
    while (1) {
        /* Получение показаний BME280 */
        bme280_measure(&bme280_dev);
        float bme280_temperature = bme280_temp_comp_2(&bme280_dev, bme280_dev.temperature);
        float bme280_humidity = bme280_humid_comp(&bme280_dev, bme280_dev.humidity);
        float bme280_pressure = bme280_pres_comp(&bme280_dev, bme280_dev.pressure);

        printf("BME280: температура=%.1f°C, влажность=%.1f%%, давление=%.1f мбар\n",
            (double)bme280_temperature, (double)bme280_humidity, (double)bme280_pressure);
        }
        xtimer_sleep(5);
    }

    return 0;
}

Меня сразу смутил используемый для работы с датчиком (банальный BME280) API — он очень отдаленно напоминал реализованный в Riot OS, не говоря уж о библиотеке для Arduino или ARM mbed, или о «фирменном» бошевском драйвере. Но еще больше удивил соседний файл (с кодом, который якобы написан той же самой студенткой!), где работа с датчиком выглядела примерно так (опять же, в максимально сокращенном виде):

#include "xtimer.h"
#include "bme280.h"

#define BME280_DEV  I2C_DEV(0)

static bme280_t dev_bme280;

int main(void)
{
    int8_t res;
    res = bme280_init(&dev_bme280, BME280_DEV);
    if (res != BME280_OK) {
        puts("Could not initialize BME280 sensor");
        return 1;
    }

    while (1) {
        float temperature_bme280;
        bme280_read_temperature(&dev_bme280, &temperature_bme280);
        printf("BME280 temperature: %0.1f C\n", temperature_bme280);
        xtimer_sleep(5);
    }

    return 0;
}

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

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

Решил проверить догадку самостоятельно и задал ChatGPT вот такую задачу: Write a C language program for RIOT OS that uses a BME280 sensor connected by I2C bus, reads temperature, pressure and humidity values from the sensor and outputs them into UART each 10 seconds. Also, if the temperature is higher than 100 degrees Fahrenheit, a LED connected to one of GPIO pins must be switched on. When the temperature lowers, the LED is switched off.

Я думаю, вы уже догадались, что было ответом — правильно, третий вариант API! (но с градусами Фаренгейта я хорошую подставу придумал):

#include "bme280.h"
#include "periph/gpio.h"
#include "periph/i2c.h"
#include "periph/uart.h"
#include "xtimer.h"

#define I2C_DEV     (I2C_DEV(0))
#define BME280_ADDR (0x76)

#define LED_PIN     (GPIO_PIN(PORT_A, 5))
#define LED_ON      (0)
#define LED_OFF     (1)

static bme280_t dev;
static gpio_t led;

static void init(void)
{
    i2c_init(I2C_DEV);
    bme280_init(&dev, I2C_DEV, BME280_ADDR);
    uart_init(UART_DEV(0), 115200, UART_FLAG_NONE);
    gpio_init(LED_PIN, GPIO_OUT);
}

int main(void)
{
    init();

    while (1) {
        bme280_read_fixed(&dev);

        printf("Temperature: %ld.%02lu C\n", dev.temperature / 100, dev.temperature % 100);
        printf("Pressure: %lu.%02lu hPa\n", dev.pressure / 100, dev.pressure % 100);
        printf("Humidity: %lu.%02lu %%\n", dev.humidity / 1024, (dev.humidity * 100) / 1024 % 100);

        if (dev.temperature > 100 * 100) {
            gpio_write(led, LED_ON);
        } else {
            gpio_write(led, LED_OFF);
        }

        xtimer_sleep(10);
    }

    return 0;
}

Но вот что интересно — так это время, которое пройдет между написанием кода и обнаружением наебалова. Принято считать, что одна из сложностей в эмбеддеде всех мастей — это долгий цикл обратной связи между написанием кода и получением результата — работает/не работает/надо переделать. Так вот, для наебалова в таком вот духе он сокращается до одной команды в консоли — наберите make flash и тут же, не отходя от кассы, получите тугую струю ссанины в ебало в виде совершенно невнятных ошибок компилятора. А вот если у вас модный язык вроде Javascript или Python — то с вот таким синтаксически корректный бредом можно долго и плодотворно заниматься debugging into existence. Программист программировает, получька капает.

Будующее такое яркое.

Сертификация скрам-мастера, уровень бог

Придумалось тут несколько вопросов, кто ответит на все правильно — может считать себя гуру agile!

1. В ходе очередного сеанса груминга (взаимного почесывания, как принято у приматов) скрам-мастер обнаружил, что является impediment to a team’s progress. Должен ли он, как честный человек, застрелиться, или можно ограничиться заявлением об увольнении?

2. На корпоративе скрам-мастер трахнул тестировщицу, а та залетела и ушла в декрет. Очевидно, это тоже затрудняет прогресс команды! Должен ли скрам-мастер, как честный человек, застрелиться, жениться, или можно ограничиться заявлением об увольнении?

3. То же самое, но теперь от скрам-мастера беременны три тестировщицы. Надо ли жениться сразу на трех, как велит Аллах?

4. То же самое, но беременны тимлидесса, аналитесса и тестировщица. Скрам-мастер уже женат на четырех тестировщицах из заданий 2 и 3, брать больше четырех жен Аллах не велит.

5. За какое время Scrum Team из 9 женщин родит ребенка?

6. Скрам-мастер перетрахал всю команду. Может ли он после этого выполнять роль Product owner’а?

7. Почему на должность скрам-мастеров и коучей по agile охотнее берут женщин?

Про инфобез

Прочитал на хабре материал под заголовком «Про информационную безопасность в IoT»:

https://habr.com/ru/articles/700800/

Написано много, но как всегда — бессмысленно и к заголовку отношения не имеет. Прямо вот интересно — а что будет, если автор реферата не будет в 100500-й раз сравнивать CoAP с Zigbee, а, к примеру, откроет несколько RFC и IEEE 802.15.4 в любой из версий и тщательно законспектирует раздел Security каждого из этих документов. У него отвалится жопа?

Сеттинг для альт-хистори

Попробовал развить идею [info]langobard о победе Англии в Столетней войне, в принципе, может получиться занятно:

— Англия побеждает в Столетней войне, столицей объединенного государства через некоторое время становится Париж;
— на Британских островах независимыми остаются Шотландия, Ирландия и Уэльс;
— через некоторое время Англия объявляет о своей независимости от «франкоанглийской» короны, главой государства становится Лорд-протектор Парламента, итого на Британских островах образуется четыре независимых государства — королевства Шотландия, Ирландия и Уэльс и Английская Республика (историю власти Парламента отсчитывают аж с 1215 года);
— из-за непрекращающейся грызни всех со всеми на Британских островах Англия пропускает колонизацию Америки (за исключением нескольких эпизодов типа сектантов-переселенцев с Мэйфлауэра);
— драка за колонии в Америке происходит в основном между Испанией и Францией, англоязычное меньшинство в Америке компактно обитает во всяких жопах мира типа Кентукки;
— во Франции происходит Великая Французская Революция, короля Генриха XVI казнят (а чего бы королям Франции тут зваться не Людовиками или Луи, а Генрихами или Анри?);
— депутаты-монархисты Генеральных Штатов, бежавшие в заокеанские колонии, провозглашают Генеральные Штаты Америки и принимают конституцию, согласно которой главой государства является король Франции, но вся полнота власти принадлежит избираемому раз в 4 года президенту-регенту;
— после появления нескольких лже-Генрихов XVII (ну и «настоящего» Генриха XVIII, который в Etats Generaux d’Amerique особо не стремится) кандидатам в «короли Франции по мнению ГША» надо пройти одно из трех испытаний — либо поединок с действующим королем, либо войти в клетку с голодными львами, поскольку «никогда львы не набросятся на истинного короля», либо исцелить больного наложением рук, желающих попробовать за всю историю так и не нашлось;
— ну а почему мерзкий кукурузный самогон, который гонят англоязычные фермеры Кентукки, называется «бурбоном», объяснять уже не надо.

Как нам обустроить Россию

Среди дискуссий в одном околополитическом чатике увидел две интересные мысли:

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

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

Хроники деградации

Помнится, [info]sanches несколько лет назад призывал запретить Википедию за преступления против человечества на гносеологическом уровне. Разумеется, это слишком радикальная точка зрения — хотя бы в статусе развлекательного портала википедия имеет право на существование. Ответьте, например, как вы будете искать без википедии, в каком фильме показала сиськи изобретательница ППРЧ?

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

https://github.com/mdan2000/IOT_master/blob/master/m2m/m2m.pdf

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

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

В общем, как только увидите очередной рассказ о том, как ChatGPT изменит реальность — сразу же сомневайтесь в человеческой природе расказчика. Внешне он еще может быть похож на представителя Homo Sapiens — но с точки зрения философии его следует приравнять к инопланетным захватчикам.

Про трансфер технологий

А еще узнал сегодня, что такое «трансфер технологий». Помните, я жаловался на то, что полученный сотрудником ВУЗа «результат интеллектуальной деятельности», то бишь РИД, можно только похоронить в братской могиле таких же РИДов в обмен на 10 000 рублей? Так вот, у этого может быть еще и продолжение, схема надежная, как швейцарские часы. Оказывается, можно зарегистрировать стартап и заключить с ВУЗом лицензионный договор на использование собственного же РИДа!

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

Впрочем, остается один главный вопрос — а нахера это все, если без регистрации пресловутых РИДов можно заниматься тем же самым и ни с кем, собственно, не делиться?

PS Чтобы меня не обвиняли в том, что я предлагаю интеллектуальную собственность у ВУЗа утащить — предположим, что речь идет о чисто инициативной работе, и даже без какого-либо финансирования, а роль ВУЗа сводится буквально к предоставлению стен, столов и стульев.

Автомобильным инсайдом поделюсь

Одна сволочь в трамвае рассказала (с), почему ГАЗ охотится за активами бывшего Фольксвагена — адназначна будут что-то из фольцев выпускать под маркой «Волга»! Главная проблема — не определились еще, что. С одной стороны, у Skoda Rapid на крышке багажника прилеплены пять букв SKODA, можно заказать еще три буквы В, Л и Г и лепить их. С другой, можно распилить пополам шильдик с названием модели у VW Bora и вставить одну букву Л посередине, получится Boлra ничуть не хуже.

Ах да, говорят, что ключи и замки зажигания с надписью Audi там уже 20 лет на складе лежат!

Про «государственный гитхаб»

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

https://www.forbes.ru/tekhnologii/486349-zamglavy-mincifry-maksim-parsin-ne-hotim-izolacii-no-nam-nuzen-svoj-repozitorij

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

Вот у меня такой, скажем, примерчик есть (правда, мне все лень доделать до «отчуждаемого» состояния, то есть ридми с примерами использования написать) — сделал я со своей студенткой в прошлом году кусок сетевого стека 6LoWPAN over BLE на Андроид, в вузе (МИЭМ НИУ ВШЭ) начали капать на мозги по поводу того, что раз в результате дипломной работы создан РИД, результат интеллектуальной деятельности, надо бы его зарегистрировать. Что мне и всем остальным дает эта регистрация? Маленький FAQ написали вот тут:

https://wiki.miem.hse.ru/ru/Projects/rid

Это все означает, что за 10 000 рублей (ну такое, сходить авторским коллективом в ближайший к МИЭМу кабак «Строгинская гавань» и за вечер пропить) программу предлагается похоронить в вот этой братской могиле:

https://www.hse.ru/info/patent

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

Я вот даже согласен на то, что денег мне не заплатят, и даже на то, что на российском гитхабе оно будет под брендом того же МИЭМ лежать, лишь бы общедоступно (ну и лицензии типовые, вроде CeCILL французской). Во всяком случае, в опенсорсе перспектив у проекта будет больше, чем в списке результатов интеллектуальной деятельности на сайте ВШЭ.

UPD Прочитал тут постановление Правительства РФ № 1804 от 10.10.2022 и приложение к нему — «Открытую государственную лицензию» — на удивление приличная permissive licence, не особо хуже какой-нибудь MIT’овской.

Кстати, а давайте про хайтек

Вот представьте себе, что вы возглавили Минпромторг, ну или ладно, какой-то его департамент, нужно вам сделать что-то сложное, высокотехнологичное и даже не побоюсь этого слова, импортозаместительное. Ну не знаю, процессор «Казбек» разработать, отечественную «Виагру» или даже автомобиль «Запорожец» нового поколения. И для выполнения этой задачи проводится конкурс, участвуют в котором несколько контор, по порядку:

— известная, хорошо себя зарекомендовавшая «фирма», уже не раз делавшая подобное;
— вторая контора создана непосредственно «для конкурса» парой никому не известных чуваков, но заявляет, что с ОКРом справится, попутно размахивая пачкой мутных патентов, дипломов Международной Академии Информатизации и прочей подобной макулатурой;
— бенефициар третьей — сотрудник аппарата профильного министерства, который прямо может влиять на результаты рассмотрения заявок, в процессе менять критерии, по которым они оцениваются (причем на уровне, скажем, отраслевых стандартов, вчера у тебя действовал один, а завтра будет другой) и все такое;
— еще один сотрудник аппарата того же министерства, молодой, без такого влияния — но наглый, как обезьяна, и вороватый;
— мальчик-мажор, сын министра (совсем непрофильного, но со связями);
— пара стартаперов из Сколково;

Кто победит в технически-административной борьбе, на кого делаем ставки?

Шесть тыщ

Подумалось тут — «общеизвестно», что цифра 6 в аббревиатуре 6LoWPAN к IPv6 отношения не имеет, а на самом деле протащена туда чуваками из SICS, Swedish Institute of Computer Science. Интересно, а нет ли подобной шуточки в более продвинутом варианте этого протокола, 6TiSCH, что на самом деле он расшифровывается не «IPv6 over time-slotted channel hopping», а просто и понятно — «шесть тыщ»?

The Leprechauns of Software Engineering

Вообще, троллинг программистов — это легко и приятно. Вот вчерашний, например, был снова пойман на очередной глупости — сначала начал рассуждать, что goto пользоваться никак нельзя, а потом, после прямо заданного вопроса «а break, continue, try-catch ты используешь?» начал громко орать, что это совсем другое и никак нельзя эти конструкции сравнивать. Самое смешное — вроде бы в подтверждение своих слов он притащил известную статью Дейкстры, про «Go To Statement Considered Harmful«, и на этом стало понятно, что он ее не читал, от слова совсем.

Если совсем коротко ее пересказать — то дело в том, что процесс выполнения «структурной» программы (где используются только условные операторы и циклы) описывается крайне просто — фактически лишь номером строки исходного кода, инвариантами циклов и условиями выхода из тех же циклов. Это очень сильно упрощает формальные методы анализа, за которые топил Дейкстра, и которые при желании можно показать семиклассникам (собственно, «через Дейкстру» они в школьную программу и попали). Применение же goto делает такой простой анализ практически невозможным, описать состояние программы, написанной с использованием goto, получится лишь перебором всех возможных путей выполнения. Если подумать — то всевозможные break, continue, обработка исключений, наконец, точно так же усложняют рассуждения о выполнении программы. Попробуйте написать инвариант несложного цикла, в котором может быть выкинуто исключение! А если это исключение еще и обрабатывается «на уровень выше»?

Но люди думать не хотят, люди хотят пользоваться своими заблуждениями, при необходимости подкрепляя их ссылками на «научную» литературу, которой даже толком не читали. Примерно о том же — и книга Leprechauns of Software Engineering, посвященная разбору популярных — настолько популярных, что их массово тиражируют даже в учебных курсах — утверждений о процессе разработки ПО, которые по факту оказываются либо слабо обоснованными, либо вообще «о противоположном». Сколько раз вы слышали, скажем, о «методологии водопада»? А ведь это такое удобное чучелко для битья, когда рассказывают про всякий Agile! Но если полезть копаться в литературе — то окажется, что «водопад» — в том виде, в каком он был описан впервые, в статье 1970 года — это совсем не то, что вы себе представляете.

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

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

Унижаем программистов

Объяснял программисту в одном чатике разницу между тестированием и формальной верификацией кода, для пущего издевательства притащил книжку для семиклассников — «Программирование: вводный курс» за авторством Д. Школьника, Н. Авданина и А. Суханова, и более того — издевался, приводя в качестве примера третью (!) программу в этой книжке — 1.3 на вот этом развороте:

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

Знакомые всем лица!

Кажется, вопрос, что происходит с ОС Riot, можно считать решенным:

https://datatracker.ietf.org/doc/html/draft-ietf-core-dns-over-coap

Список авторов проекта RFC выглядит ужасно знакомым — с той лишь разницей, что товарищ Cenk Gündoğan ушел в Huawei.

Джефф Сазерленд. SCRUM. Революционный метод управления проектами

Решил тут прочитать книжку про Scrum — и в общем нисколько не разочарован! Автор, как и положено, рассказывает больше про себя, чем про управление проектами, а биография у него прямо интересная, тут тебе и Вест-Поинт, и разработка софта для ФБР, и сын-журналист на площади Тахрир во время «Арабской весны». Прямо бинго какое-то, внутренний конспиролог несказанно радуется.

PS Еще один штрих к портрету автора — манера приводить примеры из командных видов спорта (собственно, сам термин scrum взят из американского футбола), свойственная, по рассказам, американским преподавателям физкультуры.

Тегеран-2023

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

Да, стоило это неприлично дорого — но блин, как же сюжет напоминает всякие «шпионские страсти»! Интересно, снимут ли фильм «Тегеран-2023»?

Это другое (понимать надо)

24.02.2022 — чувак ставит на аватарку в фейсбуке жовто-блакитный флажок
28.02.2023 — «коллеги, был рад с вами работать, ухожу в Yadro, всем чмоки в этом чате»

Чухонский хуяпутало

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

https://forum.riot-os.org/t/documentation-how-to-ipv6-rpl-and-ble/3581

Честное слово, хуже таджика Хуяпуталы, у того хоть какие-то зачатки самоуважения есть и он попросил собеседника за языком следить.

А вот серьезный вопрос

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

Менеджеры ресурсов: этот слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами вычислительной системы

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