Про блокировки и фрагментацию интернета

Не так страшен Роскомнадзор, как всякие CDN’ы, играющие в географическую сегрегацию пользователей.

{ "errors" : [{ "title" : "Restricted Country or Region" , "detail" : "We're sorry. Access to the Fastly app and API is not available in your location" }] }

Ну и да, какой-нибудь analog.com, во исполнение американских санкций полностью блокирующий доступ из России — это куда хуже, чем заблокированный «из России» инстахлам с пейсбуком.

Люблю поп-психологию

Вот, например, некий «мотивирующий» текстик:

Про страх.
Он есть только в начале и при первых шагах.
Нужно просто начать делать и через несколько недель не вспомнишь чего ж ты так боялся..

И будешь задавать вопрос, а почему я не сделал этого раньше.
Страх приводит к бездействию… Поддерживающий вопрос: а что самое страшное может произойти, если я это сделаю?

Предлагаю простой ответ на этот «поддерживающий вопрос»: «Можно умереть или покалечиться». Что дальше? Кажется, такого продолжения любители мотивирующих цитат не предполагают.

А в этот раз — не про студентов

Скажу только, что такой говнокод пишет не Хундай, там ISO 26262 пока еще чтут :)

uint32_t cur_timestamp, last_timestamp;

cur_timestamp = GET_SECONDS() & UINT16_MASK;
last_timestamp = storage->timestamp;

if (last_timestamp + TIME_DELTA > cur_timestamp) {
    return;
} else {
    // do something
    storage->timestamp = (uint16_t) cur_timestamp;
}

Студентов я за такое бил по рукам спрашивал — а что будет с вашей программой через 71 минуту (когда так мучили 32-битный микросекундный таймер) или через 49 дней (таймер миллисекундный на этот раз, но те же 32 бита)? 16-битный счетчик секунд, кажется, это кококомбо, тут все встанет раком через 18 часов, это уже достаточно много, чтобы не заметить проблему при тестировании, но при этом достаточно мало, чтобы она ебала мозг в эксплуатации.

Извините, но я все про студентов

Студентам магистратуры дали задание, формулировавшееся примерно так: «Представьте себе, что вы технический директор небольшой фирмы, проектирующей электронику (тут пропускаю ненужные подробности); предложите решение поставленной задачи, расчитайте некоторые параметры, укажите плюсы, минусы, подводные камни». Одно из предложенных решений не содержало ни единого расчета, ни единой оценки интересующих клиента параметров, зато сводилось к «давайте купим Cisco/Huawei/Tuya и переклеим этикетки» (ну и пересказу рекламных буклетов этих производителей).

Собственно, вопрос к публике — а куда стоило бы послать такого технического директора?

Про экономическую эффективность

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

Но вот увидел я эту картинку — точнее, скриншот с рейтингом зарплат выпускников айтишных специальностей по разным вузам — и немного охуел. Московский Институт Элегантных Мужчин в рейтинге находится на 4 месте, напротив циферками обозначено 220 000 рублей.

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

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

Разумеется, сразу был предусмотрен жуткий хайлоад — ведь 3000 центров формирования заказов, в каждом из которых стоит метеостанция, раз в секунду отправляющая данные о погоде, это не ишак чихнул, тут все эти названия и аббревиатуры однозначно нужны! Кстати, если чуть-чуть подумать мозгом — то этот «раз в секунду» совершенно не нужен, достаточно, к примеру, раз в 10 минут — и тогда весь ваш хайлоад усыхает до 5 RPS. Это, кстати, было первое предложение от комиссии :)

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

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

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. Программист программировает, получька капает.

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

Про инфобез

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И в третий раз

Не думал, что буду еще раз писать про ChatGPT в контексте написания дипломов — но дело-то вовсе не в том, что чувак воспользовался новым инструментом! Почему-то все комментаторы упускают вот эти два твита:

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

PS Ну и да, автоматический «антиплагиат» против этого бессилен — хотя для того, чтобы его обойти, никакие нейросети и не нужны, «рерайт» стоит относительно недорого (но это для совсем тупых и ленивых дипломников).

Блядей корежит

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

Вот, к примеру, целый учОный, и даже первый заместитель председателя комитета Госдумы по науке и высшему образованию Александр Мажуга яростно защищает хитрожопого студента:

https://www.gazeta.ru/social/news/2023/02/01/19633675.shtml

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

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

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

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

Непопулярное мнение

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

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

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

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

PS/2 Ссылка на текст работы, если кому интересно почитать: https://docs.google.com/document/d/1cGOAqwppMy-nv9d-spxR3GNaaM67CgwrsZLj8YANzmo/edit#

Страшно не то, что мы взрослые, страшно, что взрослые — это мы

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

если фирма нормальная у вас есть ибшники которые дадут по рукам или просто by default заблокируют небезопасные вещи, либо если их нет то ты в любом случае за это не отвечаешь и тебе похер. ну вообще, как я вижу, такой курс практической значимости для нашего будущего практически 0 несёт

До чуваков (специальность «Информационные системы и сети») еще не дошло, что это им придется быть теми самыми «ибшниками, которые дадут по рукам». Заодно конечно интересна уверенность в том, что им в будущем пригодится, а что нет.

PS Ну и особенно забавно, как эта уверенность в том, что в случае чего придет дядя-ибшник и все поправит сочетается с желанием основывать свои стартапы, например.

Про студентов и байесовскую статистику

Препод должен быть барином и самодуром. Студент должен четко понимать, что оценка зависит от настроения левой пятки твоей правой ноги, что пойманного с едой студиоза ты рассматриваешь исключительно как накрывающего для тебя полянку лакея, что барщину ты можешь оброком легким заменить, а думы твои о «Мысли народной»
Неизвестный преподаватель МГИМО

Написал тут на днях два разных текста о том, как я ставил оценки студентам — и думаю, что неплохо бы их скомпилировать и оставить последователям научно обоснованную инструкцию по самодурству. В общем, началось с того, что на одном форуме некоторые наивные люди очень хвалили подход к выставлению оценок в ВШЭ — мол, принятый там подход концептуально прекрасен и исключает всякую возможность преподавательского произвола. Смею вас заверить, что в рамках этой системы пространство для произвола достаточно велико и позволяет творить всякую дичь — что я довольно успешно делал в Московском Институте Элегантных Мужчин (сожранном Высшей Школой Этого-самого из-за недвижимости и выселенном в ебеня в С*****но). Что же восхищает наивных людей? Да просто то, что для выставления оценок введена обязательная «формула» — для каждой дисциплины указывается несколько «элементов контроля», за каждый из них выставляется отдельная оценка (иногда по формальным правилам), а затем все это дело суммируется с некоторыми «весами». Вот, скажем, пример не очень удачной формулы:

0,48 * Практические работы + 0,16 * Домашняя работа + 0,16 * Контроль на лекциях + 0,2 * Экзамен

В чем дело? Студенты просекли, как работать ровно так, чтобы каким-то минимальным требованиям соответствовать (ну то есть 6 баллов, «четверку с минусом» по старой системе, можно набрать минимальными усилиями — и отлично). Практические работы можно удачно списать у одногруппников, домашние — либо тоже скатать, либо если лекции в удобное время — то походить потупить туда («контроль на лекциях» — это посещаемость), и минимум 6,4 балла у тебя в кармане (ну и на экзамене пару слов сказать — можно и на 8, если повезет, прыгнуть).

Некоторые студенты делают из подобных формул еще один вывод — мол, если в «формуле» явно не присутствует контроль посещаемости, то можно на лекции не ходить (особенно если преподаватель не отмечает присутствующих). Подобная наивность поражает — преподаватель не биоробот, обязанный следовать какой-то формуле, и я бы даже сказал, что на самом деле все происходит совершенно наоборот. Я в последнее время немного угорел по байесовской статистике — так что сейчас считаю, что при выставлении оценок в неявном виде происходит что-то, напоминающее технику Thompson sampling. А именно:

— в каждый момент времени студенту можно сопоставить некое априорное распределение вероятностей оценок; для этого удобно использовать, например, бета-распределение (только отрезок [0, 1] надо потом масштабировать в [0, 10]);

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

— когда надо выставить оценку — просто случайно выбираем значение из этого распределения;

Для «совсем нулевого» студента распределение будет равномерным, то есть В(1, 1) — хотя такие попадаются редко, плохой студент хотя бы один раз взбесит, например, написав в ночь перед экзаменом «здравствуйте, а когда можно сдать задачи с практических занятий?» — это по байесовской логике снизит его шансы получить что-то выше 5 баллов с 1/2 до 1/4 :)

Поиграть с бета-распределением и посмотреть, как на его форму влияют разные параметры, можно тут:

http://homepage.divms.uiowa.edu/~mbognar/applets/beta.html

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

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

0,4 * Практические занятия + 0,4 * Экзамен + 0,2 * Проект/доклад

На практических занятиях выдается список задач, каждой приписано некоторое количество баллов, по сложности — 1 балл — это найти готовый пример и нажать кнопку «compile», 10 — «весомый вклад в opensource-проект». Задач довольно много и нужные 10 баллов в сумме можно набрать 1-2-балльными заданиями не напрягаясь вообще, суммарно было баллов 30-40 где-то, но в зачет идет максимум 10. Никаких «домашних работ» нет (ну точнее ты можешь дома делать задания с «практики», но это не всегда доступно — скажем, хочешь с базовой станцией для LoRaWAN поработать — надо в институт ехать), посещаемость не учитывается явно (неявно, конечно, я мог задать на экзамене вопрос, который подробно разбирался на лекции или практическом занятии, но в слайдах с лекций отсутствует — но это на тот случай, если студент ну очень хотел вытянуть с 5 баллов хотя бы на 6 — то есть с «тройки с плюсом» на «четверку с минусом»). Экзамен проводился по довольно халявной на первый взгляд системе «можно пользоваться всем, чем угодно». На самом деле, конечно же, это изощренная подстава — если ты на лекции не ходил, то демонстрировавшиеся на них слайды тебе особо не помогут.

Для проебавшихся в течение всего полугодия (таких на всю группу из 30 человек было аж четверо!) на экзамене выдавалось практическое задание, приравненное к 5 баллам, сделал — получи 2 дополнительных балла в итоговую оценку.

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

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

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

О кросс-платформенности

HomeAssistant, написанный на Python сервер «умного дома» — официально предлагается либо в виде образа виртуальной машины, либо в виде контейнера для docker, отличные от x86/x64 архитектуры сводятся к Raspberry Pi (с Raspbian, другие дистрибутивы не поддерживаются). Установка на «голый Linux» крайне не рекомендуется и официально приравнена к извращениям (заодно приводится какой-то ебнутый список зависимостей).

Fossil SCM, система контроля версий + вики + … (и SQLite вместе с ними), написана на C, представляет собой один-единственный исполняемый файл, компилируется под любую архитектуру — хоть Windows на x64, хоть Linux на ARM (даже кросс-компиляция для Synology DSM прокатывает), поддерживает несколько вариантов запуска в качестве веб-сервера, от standalone до разных вариантов CGI, в последнем варианте работает на любом shared-хостинге.

Не кажется ли вам, что что-то здесь неправильно?

Про фантастику

Почитал тут случайно первоапрельские RFC 1994 года. То, что 28 лет назад казалось смешной шуткой:

The vast number space of the IPv9 protocol has also allowed allocation to be done in a straight forward manner. Typically, most high street commercial internet providers issue a range of 1 billion addresses to each house. The addresses are then dynamically partitioned into subnet hierarchies allowing groups of a million addresses to be allocated for each discreet unit (e.g., room/floor etc.) The allocation of sub groups then to controllers such as light switches, mains sockets and similar is then done from each pool. The allocation process is again done in a hierarchical zoned way, with each major application requesting a block of addresses from its controller. In this way the light bulb requests an address block from the light switch, the light switch in turn from the electrical system which in turn requests one from the room/floor controller. This has been found to be successful due to the enormous range of addresses available, and contention for the address space being without problems typically.

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

А вот с мечтами о полетах на Марс из RFC 1607 пришлось распрощаться! Не думаю, что к сентябрю 2023 года нас ждет колонизация Солнечной Системы.

Пишите от руки…

…советует нам Stack Overflow:

https://stackoverflow.blog/2022/11/23/why-writing-by-hand-is-still-the-best-way-to-retain-information/

Привет всем тем программистам, что на выходных доказывали мне, что главное — это умение ловко печатать на клавиатуре.

Про программистов опять

Поучаствовал в очередном мини-срачике о том, что о нас знают всякие гуглы и яндексы. Собеседник-программист отстаивал мнение, что ничего особенного они там не сохраняют, обосновывая все это богатым жизненным опытом — таким примерно:

Все данные нигде и никогда не хранятся. Чем больше ты хранишь тем меньше период. У нас на хайлоаде в прошлом месте где я работал логи забивали 2 Тб за неделю. И ротация логов была такой что дальше уже затирались старые.

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

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

Прокручивание рекламы — задача крайне интересная, без шуток. Достаточно посмотреть, например, свежие научные статьи на тему Thompson sampling, rank-1 bandits и тому подобных штук, или хотя бы на список публикаций и мест работы вот таких интересных чуваков:

https://bkveton.com/

Если уж совсем времени нет — то прочитайте хотя бы введение и раздел MovieLens Experiment вот этой статьи:

https://proceedings.mlr.press/v54/katariya17a/katariya17a.pdf

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

В общем, если совсем коротко — то успех любого из интернет-гигантов зависит от того, насколько успешно он показывает рекламу в зависимость от предпочтений пользователя. А для того, чтобы эти самые предпочтения пользователя определить — может служить буквально вся его история. Хранить ее не так дорого — вот возьмем хотя бы пример выше и посмотрим, сколько стоит двухтерабайтный жесткий диск в московской рознице — недорого, можно найти меньше, чем за 5 тысяч рублей. Щедро накинем вдвое и предположим, что хранение 2 Тб логов за неделю от 40 тысяч пользователей обойдется той конторе всего в 10 тысяч рублей. Сумма смешная, и это говорит нам об одном — весь этот «хайлоад» не приносит и одного лишнего рубля в месяц с пользователя. Гуглы же, фейсбуки и яндексы, я уверен, вполне себе способны просто за счет лучшего анализа поведения пользователей этот рубль совершенно честно заработать — хотя бы за счет более «подходящей» рекламы, на которую пользователь нет-нет, а все же нажмет.

PS Проанализируйте с этой точки зрения следующее высказывание того же программиста:

Я вот в компании предложил кликхаус поднять чтобы аналитика быстрее в 5 раз считаться начала. Ну мне тонко намекнули, то что я разобрался сам это хорошо, но вот больше никто разбираться не будет. И так серверов субд уже три типа и четвертый нахер не нужен. Это притом что кост тут был только людям разобраться.

Почему «аналитика быстрее в 5 раз» никому не нужна?