fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

igrishaev

igrishaev

رفتن به کانال در Telegram

Ivan Grishaev on everything // grishaev.me

نمایش بیشتر
690
مشترکین
+124 ساعت
+27 روز
+430 روز
آرشیو پست ها
Умерла Маргарет Гамильтон – программист NASA. Та самая женщина со снимка, где она рядом со стопкой бумаги в ее рост. На бумаг
Умерла Маргарет Гамильтон – программист NASA. Та самая женщина со снимка, где она рядом со стопкой бумаги в ее рост. На бумаге – распечатки исходников корабля “Аполлон”. Я никогда не говорил этого, но все-таки: я всегда немножко вдохновлялся Маргарет. Когда-то давно снимок стоял у меня на рабочем столе. Он напоминал мне, что самые лучшие инструменты – это голова и мотивация. Остальное вторично. Еще Маргарет совмещала работу с материнством, что по тем временам было тяжело. Это опять же напоминает, что семья не мешает самовыражению и что выбор между семьей и карьерой в целом поставлен неверно. Можно совместить то и другое. Не буду писать о том, что мне жаль. Маргарет прожила 90 лет: это достойно, это полностью завершенная жизнь, пришедшая к финалу. Спасибо этой замечательной женщине за ее труд. Спасибо за мотивацию, которая хоть чуть-чуть, но передалась мне. PS: пожалуйста, не пишите "RIP", я этого не выношу.

Документ прочитан.
Документ прочитан.

Открыл интернет – а там кипит-бурлит, пенится, через край выливается, течет по стенке. Господин Хуанг, патриарх всея Энвидиа, высказался в том ключе, что, мол, натуральные дроби – это сложно, квадратные корни – еще сложнее, и вообще учить детей этому барахлу не нужно. Есть эй-ай, который все посчитает за нас, им и пользуйтесь. Зная мое отношение к теме, вы, наверное, предвидите волну негодования. Однако мне в голову пришла другая мысль, и я постараюсь внятно ее передать. Со своей колокольни господин Хуанг совершенно прав. С учетом того курса, что ведут основные поставщики ИИ-услуг, обучение в школах действительно нужно менять в сторону упрощения. Поэтому ничего другого Хуанг сказать не мог, и видимо, мы услышим еще много подобных заявлений. Например, что обучение в школе нужно сократить до пяти классов, университеты проредить, заменить бумажные учебники ИИ-помощником и так далее и далее. Курс, которым идут условные хуанги и биллы гейтсы, называется “технофашизм”. Смысл в том, чтобы сделать человека настолько зависимым от технологий, чтобы он не мог выживать. Без установленных приложений, без учетных записей, без взаимодействия с сетью в нужной мере человек оказался бы в такой нужде, за такой чертой бедности, что выбраться откуда уже нереально. Там человек либо умирает, либо живет в общине с подобными ему, либо его съедают гиены вроде домов труда или чего-то такого, связанного с рабством. Подобные режимы показал нам жанр киберпанка. Хотя формально это другое, я не вижу разницы между технофашизмом и кибербанком: одно переходит в другое. В киберпанке власть принадлежит корпорациям, которые встраивают свой продукт в каждую ступень общества. Государства как такового нет, полиции и армии тоже – только продажные чиновники и частные военные организации. Жизнь конкретного человека зависит от того, насколько удачно он встроен в сеть, построенную корпорациями. Это и есть мир, который хочет построить Хуинг сотоварищи. В этом мире все задачи перекладываются на ИИ: законодательство, суд, международные отношения, конфликты. Чтобы подступиться к этим вершинам, ИИ закладывают еще на этапе образования. Например, уроки ведет ИИ-ассистент, для которого нужна подписка. Хочешь дополнительный курс – покупай премиум-план. Образование должно быть поверхностными и не в коем случае не развивать ребенка, только давать ответы. Получится идеальный потребитель ИИ, абсолютно зависимый во всех сферах жизни: учебной, рабочей, личной (эй, чат, напиши признание в любви). Разумеется, во главе такой корпорации-государства будет мистер Хуанг, и станет от не менее чем Президентом мира. Если все зависят от ИИ, который в любой момент можно подкрутить в нужную сторону, ты и есть правитель мира. Так что повторюсь: со своей точки зрения мистер Хуанг говорит то, что должен. Скорее всего, он искренне верит, что дроби и корни не нужны, а обучение в школе должно занимать пять лет. После этого часть детей идут на завод клепать чипы, часть становятся безработными на подачках, а дети элиты идут в корпорацию. Очень даже может быть. Но я с такой картиной мира не согласен. Так что, мистер Хуанг, я прослежу, чтобы мои дети хорошо знали и дроби, и корни, и уравнения, и учили стихи, и писали сочинения по пять листов. А если хватит сил, позабочусь, чтобы все это умели дети их детей. Силы наши не равны, но мы еще посмотрим.

В каждом почтовом клиенте есть поле cc – кому отправить копию. Дословно cc означает carbon copy, то есть дубликат, полученный копиркой. Когда набирали важный документ, его копия должна была остаться в архиве. Чтобы не печатать одно и то же дважды, в каретку заправляли комбо из бумаги, копирки и еще раз бумаги. На первом листе, который ближе к нам, оставался чернильный оттиск от ленты, а на втором – оттиск от копирки. Так что и в электронной почте печатные машины оставили след. Расскажу теперь несколько интересных фактов. Первый – печать на машине плохо влияла на суставы пальцев. У профессиональных машинисток в старости были убитые кисти – настолько, что иные женщины не могли себя обслуживать. Печатные машины были механическими, нужно было вкладывать порядочную силу, чтобы молоток оставлял читаемый оттиск. Механизм изнашивался, местами ржавел, проседал и поэтому изрядно напрягал руки. В СССР печатные машины официально считались средством распространения информации. Покупали их так же, как сегодня покупают оружие, например травмат. Сперва получаешь разрешение, едешь с ним в магазин, покупаешь машинку. Затем везешь в органы и ставишь на учет по серийному номеру. Купить-продать машинку в обход этих правил считалось преступлением, примерно как сегодня раздобыть симку, оформленную на другое лицо. Машины требовали обслуживания. Качество оттиска на обслуженной машине и убитой отличалось разительно. Прежде всего это влияло на ход молотков, вероятность их столкновения и залипания. Чем лучше они смазаны, тем быстрее поднимались и падали, реже сталкивались. На головках скапливалась каша из частичек бумаги и чернильной ленты. Грязь заполняла пустоты, и буквы “пухли”, например у буквы A могло не оказаться пустоты в треугольнике. В детстве я читал криминальный рассказ, где преступника определили в том числе по характеру писем, что он набирал на машинке. Оттиск был столь безупречным, словно машинку чистили перед каждым набором. Эта маниакальная педантичность косвенно указала на нужного человека. Вот и все, что я хотел рассказать о печатных машинах. Вспоминая о той, что была у меня в детстве, я понимаю, что она пошла мне на пользу. Хоть я и не умел печатать, зато понял ее устройство, и лишними эти знания не оказались. Может быть, машинка станет неплохим подарком ребенку: детям не помешает знание того, как работают аналоговые вещи. Даже если не зайдет, отдайте машинку в местный бар, где она украсит интерьер.

Думаю, теперь понятно, откуда возникли термины "возврат каретки" и "перенос строки". Очень важно, что это не одно и то же. Если вернуть каретку, но не перенести строку, мы будем печатать поверх прошлой. Если перенести строку на середине, получим текст как в стихах Маяковского. Именно поэтому Микрософт выбрал комбинацию \r\n для разделения строк в файлах. Это именно два действия, а не одно! Я согласен, что просто \n удобней, но за \r\n стоит железная – буквально механическая – аргументация. На всякий случай уточню, что \r означает "carriage return", а \n — new line. Итак, молоточек ударяет по бумаге, и что? Ничего, если в машину не заправлена лента. Если точнее, молоток оставит на бумаге легкую вмятину и не больше. Чтобы появилась буква, между молотком и бумагой помещали ту самую ленту, которых не хватало в "Резиденте". Лента была из ткани, густо пропитанной чернилами. Молоток ударял по ленте, выпуклое место касалось бумаги, и на ней оставался оттиск буквы. Считайте ленту своего рода копиркой (карбоновой бумагой), которой пользовались точно так же: подкладывали между вторым листом бумаги, чтобы получить оттиск ручки. У ленты тоже были свои хитрости. Если бы молоточки били в одно и то же место, она бы быстро порвалась. Поэтому лента была намотана на катушку; свободный конец протягивали сквозь окошечко, куда ударяли молотки, и тянули к пустой катушке. Как аудиокассета, понимаете? При нажатии клавиши обе катушки чуть прокручивались, чтобы место удара смещалось. Когда лента заканчивалась, катушки меняли местами: полную направо, пустую — влево. В основном ленты были иссиня-черные, но бывали и цветные, например красные или зеленые. Ими набирали что-то торжественное, и притом крайне редко. Поменять цвет в машинке — это не мышкой ткнуть в палитру: приходилось менять ленту, а это долго. Со временем ленты высыхали и истощались, ведь чернила переносились на бумагу. На закате печатных машин появились корректирующие ленты, которые замазывали оттиски чернильных. Теперь когда вы знаете устройство печатной машины, обсудим их наследие. Прежде всего это клавиша Shift — откуда она в вашем ноутбуке и почему так называется? На головке молоточка располагались два символа, как правило строчная буква и прописная, примерно так (только в зеркальном отражении): E e В обычном состоянии молоточек ударял по бумаге нижним оттиском, то есть строчной e. Клавиша Shift опускала весь молотковый механизм на сантиметр или около. В результате, если взвести молоток, он ударял верхним оттиском, то есть E. Вот откуда идет термин Shift — это буквальный сдвиг. Технически он был реализован так: молотковый блок парил в воздухе на очень тугих пружинах. Клавиша Shift была рычагом с большим плечом, чтобы эти пружины продавить. Они же поднимали блок обратно, если клавишу отжать. Не поверите, но у печатной машинки был капс-лок! Технически он тоже был устроен просто. Молотковый механизм опускался вниз и крепился особой защелкой. Повторное нажатие снимало эту защелку, и блок прыгал на место. Во всех интерфейсах слово "настройки" заменяет иконкой шестеренки. Вы когда-нибудь думали, почему? Как связаны настройки софта с гайками и шестернями? А так, что настройка печатной машины означала механические действия: подкручивание гаек, подтягивание валов и всего остального. Увеличить межбуквенное расстояние? Такая-то гайка. Межстрочный интервал? Другая. На каждую опцию приходился валик, который нужно было переставить, как в механической коробке передач. Конечно, все эти опции настраивались только раз и позже – при техобслуживании. В обычной жизни никто не менял межбуквенный интервал, потому что это трудно. Использовали пробелы и переносы строк.

Стоим мы такие в качалке, мускулистые и потные, как персонажи Гачимучи, и разговариваем о... девятом Резиденте (Resident Evil 9 Requiem, игра такая). Объясняю одному качку: на трудном уровне сложности ресурсы уходят на то, чтобы крафтить ленты, а на патроны не остается. Иногда ленты попадаются, но их не хватает, потому что хочется сохраняться чаще. Собеседник удивляется: какие ленты? Я: ну, ленты для печатной машины. Собеседник: а зачем печатной машине ленты? После короткой паузы я понимаю: человек не знает устройства печатной машины. Чтобы с вами не было такой же неловкой сцены, неважно в качалке или еще где, расскажу вам про печатные машины. В конце вы и сами поймете, почему это полезно. Спойлер — тем, что почти все понятия, связанные с клавиатурами и печатью, произошли от печатных машин. Однако уж если начал с Resident Evil, то сперва короткая вводная. “Резидент” — игра про зомби, интересная по многим направлениям. В том числе тем, что сохранения в ней были сделаны в виде печатных машин. Считалось, что персонаж садится за машинку и печатает свою историю, чтобы в случае смерти ее прочли. Для машинок были нужны расходники — чернильные ленты, те самые, о которых вопрошал мой собеседник в качалке. Ленты давались изредка, и каждое сохранение занимало одну. Тем самым игра не позволяла сохраняться после каждого убитого зомби. Еще школьником, проходя "Резидента", я взял за правило: всегда иметь ленту в запасе, чтобы, если родители сгонят с приставки, быстренько сохранится. Система лент, интересная вначале, позже приелась. В третьем “Резиденте” игроку наконец дали бесконечную ленту. Но и здесь было неудобство: чтобы сохраниться, лента должна быть в инвентаре, а инвентарь маленький. Поэтому ленту хранили в сундуке, освобождали ячейку, доставали ленту, сохранялись, клали обратно в сундук и шли дальше. В четвертой части и далее машинки работали без лент: просто подошел и сохранился. В девятой части эту милую деталь добавили в виде челленжа для олдов. В детстве у меня была печатная машина: отец принес ее с какой-то помойки. Не смейтесь: в девяностые машинки массово сменялись компьютерами. Организации даже не трудились сдавать их в комиссионные магазины или на металл. Просто вынесли к контейнерам, и забирайте кто хочет. Печатать на машине я не умел, разве что "Чижик-пыжик" одним пальцем. Учиться было тяжело, да и незачем. Мои занятия с машиной сводилось к тому, что я бесконечно ее обслуживал: протирал, чистил, подтягивал и без конца покупал чернильные ленты в комиссионке. Вижу, что графомания выше не отвечает на вопрос: так зачем печатной машине ленты? Терпение. Чтобы это понять, нужно представлять устройство машины. Механизм печатной машинки напоминает... пианино! Мой отец работает мастером музыкальных инструментов, и все детство я прожил в окружении разбитых пианин. Сходство между первым и вторым в следующем: когда вы жмете клавишу, механизм взводит молоточек, и он ударяет в определенное место. Машинка — по бумаге, пианино — по струне. Разница в том, что у пианино у каждого молоточка своя позиция. Можно нажать три клавиши и получить аккорд (совместное звучание), а в машинке так не получится. В ней каждый молоток ударяет в одно и то же место, и если нажать две клавиши, машина "залипнет": молотки зацепятся на полдороге, и нужно будет разогнуть их пальцами. Вопрос: если молотки ударяют в одно и то же место, как получается строка? Сверху машины есть подвижный блок — по-русски каретка, по-английски carriage (повозка, коляска). В нее заправлена бумага. Каждый удар молотка двигает каретку влево, и отпечаток оказывается справа от прошлой буквы. Очевидно, каретка не может двигаться неограниченно долго. Рано или поздно рельсы закончатся, и механизм упрется в блок, чтобы она не вывалилась. В этом случае человек берет специальный рычаг и тащит каретку вправо, чтобы строка началась сначала. Рычаг устроен так, что одновременно с возвратом каретки бумага прокручивается на строку вниз, чтобы мы печатали новую строку, а не поверх старой.

У современных детей детство заканчивается, когда им дарят смартфон. Разумеется, не сразу, но точка невозврата пройдена. Разумно будет оттягивать этот момент как можно дольше. Если дарите телефон в 13 лет, есть шанс, что вы успели заложить хороший фундамент книгами и совместным чтением. Если в 7 — уже вряд ли. Если суете телефон годовасику, по поздравляю: вы посадили ребенка на цифровой героин. Детства у него не будет. Нет сцены отвратительней, чем маленький ребенок, уткнувшийся в телефон. Нет глупее тех, кто этот телефон ему подсунул.

Так что когда я думаю о том, что мы потеряли и в угоду чего, хочется кататься по полу от отчаяния. От словаря на тысячу ключей, где половина данных дублируется, просто хочется плакать. От убогих инструментов, которые годятся разве что для TODO-листа, тоже хочется горевать. И вот что решительно непонятно – на что уходят все усилия? На веб тратят страшные деньги и часы, пилят все эти реакты-вуи, улучшают апишку JavaScript в Хроме. А данные – фундамент любого приложения – по-прежнему хранить негде. Почему?

Современные веб-приложения работают так. Есть апишка на сервере, которая возвращает данные в JSON. Бекенд ничего не знает о рендере, а только раздает данные и обрабатывает команды. И есть js-приложение на клиенте, которое забирает данные с бека и рендерит их. Все это понятно, и все так делают – не думают вот о чем. У бекенда, как бы криво он ни был написан, есть прочный фундамент – реляционная база данных. Она не пропустит откровенную дичь, сделает проверки на уникальность и целостность, словом, снимает ряд проблем. Кроме того, я могу окинуть всю базу взглядом: схему, зависимости, всякие вьюхи, функции и так далее. Тулинга под реляционные базы столько, что не знаешь, что выбрать. Реляционная база, пусть даже это Sqlite, воздвигает столь мощный барьер от дурака, что не ценить его означает быть полным болваном. Да, иные ребята берут Монгу и прочие базы без схемы, но это путь в никуда. Рано или поздно проект придется мигрировать на Постгрес, либо стартап сожжет инвестиции и закроется. Ключевая беда фронтенда в том, что там нет базы данных. Есть ублюдочные LocalStore и IndexedDB, которые по недоразумению называют базами данных. Да, в IndexedDB можно создать индекс btree по произвольному полю. Но в целом эти два ничто иное, как KV-хранилища. А судьба любого KV-хранилища одна – быть помойкой. Дело в том, что KV не предполагает схемы. В коде нет никакой информации о том, что лежит в словаре. Вижу, что одно событие вынимает словарь, а другое пишет словарь. Что в них – неизвестно. Сейчас работаю над сложным веб-приложением (UI-частью). Ему около семи лет, сменилось много разработчиков. И все подтверждает мой тезис – для работы с данными KV не годится абсолютно, соверошенно. База данных приложения – огромный словарь, сущая помойка. Одни и те же данные читаются с бека и пишутся под разными ключами. Визуализатор базы – студенческая поделка: тысячи ключей не помещаются на экран, нет нормального поиска. Спрашивается: если веб-приложения так активно работают с данными, то почему в браузере нет нормальной базы данны? С плоскими таблицами, проверкой целостности, NOT NULL, джоинами и так далее? Чтобы любой открыл схему и сразу понял, что к чему. Ведь когда схема открыта, каждый видит, что и где хранится. При попытке добавить лишнюю таблицу коллеги скажут: друг, эти данные уже хранятся здесь. А когда у вас один KV на всех, каждый тихонько подсирает в него свое барахло. Это проще, чем читать проект или спрашивать коллег, что где лежит. Проще дернуть бек и положить данные под своим ключиком – и плевать, что так поступают пять других разработчиков. Что самое ужасное и что заставляет меня чуть ли не скрипеть зубами от досады – так это то, что лет десять назад был сделан шаг(!) в правильном направлении. Появился стандарт WebSQL, предлагавший SQL в браузере. Все по классике: таблицы, типы, not null, реляционная алгебра. В качестве бекенда – Sqlite, который мало того, что является общественным достоянием, так и работает в каждом(!) устройстве. Оглянитесь вокруг: на каждом ноуте, компе и смартфоне работают много-много Sqlite-баз. Интегрировать ее в браузерер и прокинуть через JavaScript- апишку, пусть даже в ограниченном виде, должно быть нетрудным делом. Казалось бы, в вебе была возможна нормальная работа с данными. Но нет! Постепенно поддержку WebSQL выкинули изо всех браузеров, а в 2024 году спецификацию прикрыли. Что мы получили взамен? Ублюдочные LocalStore и IndexedDB, унылые хранилища по ключу. А ведь реляционная база в браузере – это только начало! Можно было б пойти дальше и сделать бинарный формат для синхронизации серверной базы с клиентской. Сегодня все базы работают в бинарными данными, и нужно только написать спецификацию. Представьте: выполняешь запрос, и бинарный поток из базы сразу идет клиенту безо всяких жысонов и сериализаций. Там они подхватываются в Sqlite. Просто, доступно, открыто.

Естественная сложность никуда не уходит. Как правило, все что можно сделать – грамотно распределить ее. Принимаясь за работу, подумайте: действительно ли вы удаляете сложность или выдавливаете в другие места.

Есть у меня идея, которую я называю “теория о несжимаемой сложности”. Звучит так: В каждый процесс заложено определенное количество сложности. В идеальных процессах она распределена либо равномерно, либо по соглашению или возможностям участников. Многие улучшения на самом деле не удаляют сложность, а выдавливают в другой участок – подобно тому, как если надавить на шар с водой, воды не станет меньше, просто она перейдет в другое место. Подтверждений этому тезису достаточно – например, вся современная разработка. Все мы видели мемы, что в 2026 году, чтобы запустить сайт, нужны десять технологий, а чтобы устроиться джуном – все двадцать. Люди, которые внедряют эти технологии, не понимают: хотя каждая что-то упрощает, общая сложность процесса не снижается. Упрощение конкретного шага компенсируется тем, что внедрили новый инструмент, который нужно знать, обновлять, понимать его слабые стороны. Сюда же относятся микросервисы. Полагаю, сегодня очевидно всем: фрагментация сервисов не упрощает систему. Когда сервис А идет в сервис B, а тот в C и D, сложность устремляется в потолок. Нужен тулинг, чтобы отслеживать цепочки вызовов, находить сетевые задержки, воевать с сериализацией данных, находить тех, кто кого-то ди-доссит, разворачивать сложный CI. Где здесь упрощение? В нулевых годах скрипт на PHP ходил в базу, собирал HTML-страничку и выплевывал клиенту. Сегодня на стороне клиента работает приложение, состоящее из сотен библиотек. На одну страничку совершается 50 аякс-запросов, после чего запускается локальный рендер. Что именно этим хотели упростить, я не знаю. Но зато знаю, что условная Джира загружается около 20 секунд. Когда я открываю вкладку с Джирой, то уже выработал привычку переключаться на что-то другое, чтобы дать ей прогрузиться в фоне. Под теорию несжимаемой сложности подходит вся веб-разработка. В нулевые года мы писали на смеси HTML и неудачного языка – PHP. Сегодня мы пишем на смеси HTML и другого неудачного языка – JavaScript. Чтобы “упростить” процесс, Микрософт выкатила свой TypeScript, который тоже нужно учить, понимать, местами – бороться. В теорию вписываются не только айтишные, но и общие процессы. Скажем, 25 лет назад школьные олимпиады проводились просто – давали листок с заданиями, листок для чистовика, черновик, канцелярию – и все. Сегодня олимпиады проводят на сайтах образовательных платформ, а входить на них нужно через Госуслуги. Как айтишник я вижу, где именно упростили процесс – в проверке. Если раньше проверяли учителя, то теперь программа читает базу данных, сравнивает ответы с образцом и выставляет баллы – и все это за микросекунды. Однако сложность никуда не делась: ее перекинули на учителей и детей. Должны быть компьютеры с интернетом. К ребенка должен быть телефон, почта, учетка на Госуслугах. Пароль от нее должен быть не менее 8 символов с решетками и долларами, при этом ребенок обязан помнить его, чтобы ввести на чужой машине. Спрашиввается: что именно этим упростили? Я давно заметил то, что выражено в начале статьи: многие улучшения на самом деле не снижают сложность, а выдавливают ее на другой участок, перекладывают на чужие плечи. Дробим микросервисы – растет сложность их взаимодействия. Выносим логику на фронтенд – там ничего не работает, а мы даже не знаем об этом. Обложились технологиями – тонем в их несогласованности. Цифровизировали образование – втянули детей в цифровое болото, хотя должны были оттягивать этот момент. И так далее. Так что когда кто-то ворчит в ответ на усложнение процесса, дело не в плохом характере. Возможно, человек понял, что локальное улучшение вызовет волну сложности, которая разойдется по другим участкам цепи. А теперь у нас эйай, и все описанное умножается на бесконечность. Теперь на каждом участке что-то отчаянно что-то “упрощают”: генерят код, тесты, скрипты, документацию. Обещают десятикратное повышение всего и вся, но пока что видно обратное. Если и раньше было трудно справляться со сложностью, то теперь она льется через край.

photo content
+5

Игры (3). Покахонтас #games Ненадолго вернусь к теме игр. С 8-битными играми закончили, перехожу к 16-битным (то есть Сеге). Первая игра на ней, достойная воспоминания — "Покахонтас". Как ясно из названия, игра в точности повторяет мультфильм Диснея. Сделана она с теплотой и любовью, присущим ранним произведениям студии. Пейзажи, животные и герои нарисованы профессиональными аниматорами, качество картинки замечательное. Сохранены основные музыкальные темы, в том числе главная "Colors of the Wind". Мультфильм интересен тем, что все описанное в нем – правда. Он стал первым произведением Диснея, основанным на достоверных событиях, а не сказке или легенде, как до этого. В 1707 году англичане, после успешной экспедиции испанцев, тоже поплыли в Америку в поисках золота. И действительно была Покахонтас, дочь вождя, и действительно был капитан Джон Смит. Последний попал в плен и должен быть казнен, но Покахонтас закрыла его собой перед казнью. Это растрогало вождя и он отдал Покахонтас капитану в жены. Племя и отряд Смита заключили мир. Увы, история закончилась не так хорошо, как в мультике. Смит привез жену в Лондон, где она сразу же умерла от гриппа. У индейцев был нулевой иммунитет к европейским болезням, так что иначе и быть не могло. Поэтому в мультике паре не суждено быть вместе: раненый Джон уплывает в Лондон, покахонтас остается с племенем. Игра интересна тем, что никого убивать не надо. Сперва героиня исследует лес и помогает животным, а они за это дают ей способности: олень – быстро бегать, выдра – нырять, птица – плавно спускаться с высоты. Позже, когда появляются колонизаторы, их нужно распугивать духом медведя. За героиней следует ручной енот. Иногда управление переключается на него, чтобы проникать через норы и решать головоломки. Уровни излагают сюжет фильма: сначала мы знакомимся с лесом, встречаемся с Джоном Смитом, делаем вылазки в лагерь. Ближе к концу нужно успеть к месту казни до рассвета, чтобы его спасти. Игра довольно короткая и проходится за 40 минут, однако в детстве я долго ей любовался. “Покахонтас” – целостное произведение: на деревья и водопады приятно смотреть, красивую музыку – слушать. Эта отличная работа, выполненная командой сценаристов, аниматоров и программистов. Как “Алладин”, только в другом ключе. Если накатит на вас 16-битная ностальгия, знайте: “Покахонтас” будет отличным выбором. https://www.youtube.com/watch?v=r02WpoY38jE

https://grishaev.me/pg-book-json-ch10/ Вот, книжка готова. Осталось перечитать ее несколько раз, сверстать и издать. Не знаю, как скоро это получится, не дело идет!

Пишут, социальные сети проигрывают иски, связанными с детьми. Где-то соцсети даже признали вызывающими зависимость, то есть приравняли к сигаретам и алкоголю. Представители соцсетей вяло оправдываются и предлагают меры: ограничить доступ при помощи детских аккаунтов, привязанным к родительским. У меня есть несколько мыслей по этому поводу. Во-первых, к соцсетям я испытываю крайнее отвращение. Сидеть в них для меня – примерно как купаться в нечистотах. Понимаю, дело вкуса, но от одного вида VK или Фейсбука меня подташнивает. Так что да, я предвзят. Во-вторых, тезис о зависимости поставлен совершенно верно. Всяких топ-менеджеров и директоров по развитию не интересуют дети. Пусть ваши дети торчат в телефонах до 4 утра, отвлекаются на уведомления, завидуют, ревнуют. Это никого не интересует. Топ-менеджеру важно расширить продукт и получить деньги, поэтому в ход идут все более хитрые инструменты, чтобы удержать ребенка у экрана. Наконец, третье: детский аккаунт – это обман. Формально они будут созданы (где-то уже созданы), но пользоваться ими никто не будет. Почему? А потому, что я пробовал и что это такое. Когда моему сыну еще не было 13 лет, он начал пользоваться смартфоном. Покупал и настраивал его, конечно, я. При входе в аккаунт я всегда указывал возраст старше 13, чтобы система не придиралась. И вот однажды решил проверить: что будет, если указать честно? Гугл говорит: до 13 лет нужен детский аккаунт, который нужно привязать ко взрослому. Я попытался пройти процедуру и не смог. Нужно что-то сделать на детском телефоне, зайти в админку на своем телефоне, ввести пароль, код из смс, что-то подтвердить, взять обратно детский, что-то там нажать, потом еще раз подтвердить на родительском. Пайплайн очевидно не доработан: то ошибка, то бесконечный спиннер, то попробуйте еще раз. Короче, ад. Плюнул и указал возраст 16 лет. Поэтому когда я слышу “детские аккаунты”, то знаю заранее – это обман. Квест пройдет только очень мотивированный родитель, который понимает токены-сессии-подтверждения. Обычный человек не будет разбираться. Ребенок откроет обычный аккаунт, укажет 16 лет, и система его пропустит. В итоге все довольны: у родителя не болит голова с настройкой детского аккаунта, ребенку не нужно долбить родителя, соцсеть собирает данные, топ-менеджер идет на повышение. Я понимаю, что там, где дети, очень строгое законодательство. Должны быть выдержаны все нормы. Но дело в том, что когда они выдержаны буквально, возникает такой порог, что всем участникам проще обойти его. По-хорошему нужно запереть в одной комнате дизайнера, программиста и юриста. Далее не выпускать их до тех пор, пока они не построят удобную регистрацию детского аккаунта — такую, где справится обычный человек. Максимально сократить число экранов, подтверждений, переходов, но так, чтобы удовлетворять закону. Будет ли соцсеть этим заниматься? Нелепый вопрос. Так что детский аккаунт – это подачка суду, чтобы утерлись. Да, сделали детские аккаунты. Да, занимает двадцать экранов. Да, все по закону. Да, никто не пользуется, но это не наша вина: виноваты тупые родители и ушлые дети. Цинизм соцсетей и раньше был запредельным, а теперь просто рвет в небеса.

Смотрел доклад. Хороший, но рассказчик злоупотреблял одним приемом: задавал вопросы в зал и просил поднять руки. И я вспомнил, что давно хотел об этом написать. Мне неприятно, когда выступающий обращается к залу с просьбой реагировать на выступление. Я считаю это настолько низким приемом, что хочется поскорее выкинуть его из головы как что-то неприятное. За сорок минут доклада автор, наверное, раз пятнадцать обращался к зрителям: поднимите руки те, кто... Разумеется, на ход повествования это не влияло. На кажыдй вопрос докладчик только комментировал: "о, как много" или "о, как мало" и как ни в чем не бывало продолжал. В целом это напоминало игру с иллюзией выбора: в лучшем случае изменится часть кат-сцены, а дальше игра идет как обычно. Начиная с пятого вопроса докладчик всегда поднимал руку сам. Словно дрессировщик перед собакой, он показывал: смотрите, надо сделать вот так (поднимает руку вверх), и я буду доволен. Сидя в зале или перед монитором, я не хочу быть дрессированной собакой. Я считаю, что уважил докладчика уже тем, что пришел. Я здесь, рассказывай, только пожалуйста, не заставляй поднимать руки. По той же причине мне не нравятся номера артистов с людьми из зала. Даже когда я смотрел маленьким КВН, мне не нравилось, когда выступающие обращались к членам жюри или Маслякову. Зачем? Им запрещено взаимодействовать, они смотрят и улыбаются. Так что когда выступающий просит поднять руку, я не делаю этого, даже если тысячу раз подхожу под критерий. Я смотрю и улыбаюсь: давай выступай, а не командуй. Не за этим я сюда пришел, чтобы работать дрессированной собакой. А у вас есть такое? Поднимите руки те, кому тоже не нравится.

К одному из прошлых постов был комментарий, который я бы хотел обсудить отдельно. В какой-то момент обратил внимание, что коллеги на ревью оставляют очень развёрнутые комментарии, написанные без единой орфографической ошибки. Думаю – неужто разработчики резко научились выражать мысли? Потом дошло, что чуваки просто скармливают пуллреквест элэлэмке и постят её ответ (при том что в гитлабе есть кнопка "запросить ревью у ИИ"). И почему-то это очень неприятно (хотя комментарии преимущественно по делу), но я для себя не могу сформулировать, почему именно. Мне тоже неприятно, когда собеседник выступает мясным прокси. Вопрос только – почему? Что с того, что человек пользуется популярной технологией? Ответ в следующем: в общении между людьми все решает этикет. Без него общение будет невежливым как в бумажной переписке, так и в межгалактическом звонке. Собеседники должны уважать друг друга – вот единственный залог нормального общения. Как я уже упоминал, у многих ИИ-ребят плохо с этикетом. Каждый решил, что получил источник безграничных знаний и решение на все случаи жизни. С ним не нужно искать вежливые слова и соблюдать приличия – только копировать выхлоп нейросети, и все диалоги, задачи, дискуссии будут в твою пользу. Если говорить конкретно о комментариях нейросети, которые коллеги выдают за свои, то они напоминает вот что. Каждый из нас совершал такую ошибку: заходил в организацию и пытался попасть в директору. На входе охранник или вахтер спрашивают: вам по какому вопросу? Ты как дурачок выкладываешь свой вопрос. Охранник внимательно слушает и отвечает: по понедельникам директор не принимает, и вообще он на месяц в отпуске. Зачем тогда было спрашивать причину визита? Просто чтобы развлечься: человеку скучно, хочется послушать чужие дела. Такой у него характер, нравятся подобные вещи, что поделаешь. Ребята, которые выдают ревью нейросети за свое, в сущности, такие же. Пройти мимо – скучно, и хочется как-то о себе напомнить, посмотреть на чужую реакцию: как он будет выкручиться? Очевидно, если человек запрашивает мнение нейросети, он не разбирается в вопросе. Нужно ввести это в контекст. Этичный комментарий звучал бы примерно так: "дружище, я не вникал в тему, но нейросеть говорит сделать так. Я вижу, что ты сделал по-другому и поэтому спрашиваю, чтобы лучше понять. Этот коммент на твое усмотрение." Даже если в теле коммента идет выхлоп нейросети, общение остается человечным. Видно, что на том конце не мясной прокси, а нормальный человек. А когда голая копипаста – увы, этого не только не видно, но вы навлекаете на себя подозрения в вахтерстве и проксировании. Так что вот почему машинные комменты так выводят. Будь нейросеть трижды права, вы не этичны. И тут вам нейросеть не поможет.

В этот светлый день не помешает вспомнить, как пишутся праздники-даты. Если число пишется прописью, оно принимает на себя заглавную, а месяц пишется со строчной. Пример: Третье сентября. Если число пишется цифрой, заглавная переходит к месяцу: 3 Сентября. Не перепутайте!

Прогресс не стоит на месте, и все чаще я сталкиваюсь с результатом вайб-кодинга. Сначала я хотел написать “с нейрослопом”, но передумал. Кажется, это слово считается обидным: людям неприятно, когда их работу называют помоями, поэтому обойдемся нейтральным термином. Я смотрю на результат вайб-кодинга и не знаю, что с ним делать. Во-первых, объемы: текущий PR, что передо мней, включает 3200 новых строк. Вдумчиво их просмотреть – это сорок минут мозговой деятельности, а если учесть набор комментариев – то весь час. Далее, комментарии. Набирая их, понимаешь, что автор скорее всего не будет их читать. В лучшем случае он скормит их модели и скопирует ответ, но скорее всего просто проигнорирует. Качество сгенерированного кода посредственное. Код раздут, ему не хватает краткости. Я не говорю о стремлении записать все в одну строку; речь о той краткости, при которой код передает идею. Вместо встроенной функции – свой костыль: на момент обучения модель не знала о возможности языка. Вместо одного класса – два: абстракция и транспорт, хотя можно было свести к нескольким функциям. В коде на Питоне везде проверки: это словарь? это строка? это число? И много другого в том же ключе: приемлемо, но лучше исправить. Ощущение, что код писал джуниор с заявкой на мидла. И тут возникает момент: был бы автор человеком, мы бы сели и разобрали все минусы. В следующий раз он напишет код лучше, а через какое-то время ему можно будет доверять. А вот что делать с коммерческой моделью – я не знаю. Автор очевидно не хочет учиться сам. Зачем мне тратить час на объяснение недостатков? С таким же успехом я могу объяснять их уборщице или коту. Насколько я понял, код, написанный моделью, поддерживается одним способом – моделью. Если требуются изменения в логике, править вручную будет тяжело – не найдешь концов. Ожидается, что у разработчика развернуто окружение, плагины и всякие модели, чтобы сказать, что именно поправить в слопе, и модель поправит. Возникает противоречие: как быть, если кто-то (например я) не пользуется моделями. Как править этот код? Разворачивать окружение, переходить на вайб-кодинг? Не знаю. Лично я не собираюсь этого делать и, наверное, пересмотрю место работы, если слопа станет все больше. Уже на этом этапе заметна зависимость от моделей и подписок, в которую впадают разработчики. Чтобы поправить код, произведенной моделью, нужна модель. Нам же известно понятие “вендор-лок” и его последствия, ведь так? Разве эти ваши клоды-копайлоты не вендор-лок? И вы, друзья-элэлэмщики, не только садитесь задницей на иглу моделей все глубже и глубже, но и затягиваете других.

Когда что-то не работает, очевидное решение в том, чтобы починить. Второе неочевидное – отказаться. Чем старше становлюсь, тем чаще отказываюсь от того, что ломается. Разумеется, тезис слишком абстрактный и решается по ситуации. Но часто отказ не рассматривают в принципе и чинят одно и то же годами. Не надо так: отказ и пересмотр очень важны.