-
Социальные сети и дети
Пишут, что социальные сети проигрывают иски, связанные с детьми. Где-то соцсети даже признали вызывающими зависимость, то есть приравняли к сигаретам и алкоголю. Представители соцсетей вяло оправдываются и предлагают меры: ограничить доступ при помощи детских аккаунтов, привязанным к родительским.
У меня есть несколько мыслей по этому поводу.
Во-первых, к соцсетям я испытываю крайнее отвращение. Сидеть в них для меня – примерно как купаться в нечистотах. Понимаю, дело вкуса, но от одного вида VK или Фейсбука меня подташнивает. Так что да, я предвзят.
Во-вторых, тезис о зависимости поставлен совершенно верно. Топ-менеджеров и директоров по развитию не интересуют дети. Пусть дети торчат в телефонах до 4 утра, отвлекаются на уведомления, завидуют, ревнуют, смотрят рекламу, повторяют за популярными блоггерами. Это никого не интересует. Топ-менеджеру важно расширить продукт и поднять метрики, поэтому в ход идут все более хитрые инструменты, чтобы удержать ребенка у экрана.
Наконец, третье: детский аккаунт – это обман. Формально они будут созданы (где-то уже созданы), но пользоваться ими никто не будет. Почему? А потому, что я пробовал и знаю, что это такое.
Когда моему сыну еще не было 13 лет, он начал пользоваться смартфоном. Покупал и настраивал телефон, конечно, я. При входе в аккаунт я всегда указывал возраст старше 13, чтобы система не придиралась. И вот однажды решил проверить: что будет, если указать честно?
Гугл говорит: до 13 лет нужен детский аккаунт, который нужно привязать ко взрослому. Я попытался пройти процедуру и не смог. Нужно что-то сделать на детском телефоне, зайти в админку на своем телефоне, ввести пароль, код из смс, что-то подтвердить, взять обратно детский, что-то там нажать, потом еще раз подтвердить на родительском. Пайплайн очевидно не доработан: то ошибка, то бесконечный спиннер, то попробуйте еще раз. Сущий ад. Плюнул и указал возраст 16 лет.
Поэтому когда я слышу “детские аккаунты”, то лишь фыркаю – это обман. Квест пройдет только очень мотивированный родитель, который понимает айтишную байду. Обычный человек не будет разбираться. Ребенок укажет 16 лет, и система его пропустит. В итоге все довольны: у родителя не болит голова с настройкой аккаунта, ребенку не нужно долбить родителя, соцсеть собирает данные, топ-менеджер идет на повышение.
Я понимаю, что там, где дети, очень строгое законодательство. Должны быть выдержаны все нормы. Но дело в том, что когда они выдержаны буквально, возникает такой порог, что всем участникам проще его обойти.
По-хорошему нужно запереть в одной комнате дизайнера, программиста и юриста. Далее не выпускать их, пока они не построят удобную регистрацию детского аккаунта — такую, чтобы справился обычный человек. Максимально сократить число экранов, подтверждений, переходов, но так, чтобы удовлетворять закону.
Будет ли соцсеть этим заниматься? Нелепый вопрос. Так что детский аккаунт – это подачка суду, чтобы утерлись. Да, сделали детские аккаунты. Да, настройка занимает двадцать экранов. Да, все по закону. Да, никто не пользуется. Нет, это не наша вина: виноваты тупые родители и ушлые дети.
Цинизм соцсетей и раньше был запредельным, а теперь просто рвет в небеса.
-
О вайб-кодинге (2)
К одному из прошлых постов был комментарий, который я бы хотел обсудить отдельно.
В какой-то момент обратил внимание, что коллеги на ревью оставляют очень развёрнутые комментарии, написанные без единой орфографической ошибки. Думаю – неужто разработчики резко научились выражать мысли? Потом дошло, что чуваки просто скармливают пуллреквест элэлэмке и постят её ответ (при том что в гитлабе есть кнопка “запросить ревью у ИИ”). И почему-то это очень неприятно (хотя комментарии преимущественно по делу), но я для себя не могу сформулировать, почему именно.
Мне тоже неприятно, когда собеседник выступает мясным прокси. Вопрос только – почему? Что с того, что человек пользуется популярной технологией?
Ответ в следующем: в общении между людьми все решает этикет. Без него общение будет невежливым как в бумажной переписке, так и в межгалактическом звонке. Собеседники должны уважать друг друга – вот единственный залог нормального общения.
Как я уже упоминал, у многих ИИ-ребят плохо с этикетом. Каждый решил, что получил источник безграничных знаний и решение на все случаи жизни. С ним не нужно искать вежливые слова и соблюдать приличия – только копировать выхлоп нейросети, и все диалоги, задачи, дискуссии будут в твою пользу.
Если говорить конкретно о комментариях нейросети, которые коллеги выдают за свои, то они напоминает вот что. Каждый из нас совершал такую ошибку: заходил в организацию и пытался попасть в директору. На входе охранник или вахтер спрашивают: вам по какому вопросу? Ты как дурачок выкладываешь свой вопрос. Охранник внимательно слушает и отвечает: по понедельникам директор не принимает, и вообще он на месяц в отпуске. Зачем тогда было спрашивать причину визита? Просто чтобы развлечься: человеку скучно, хочется послушать чужие дела. Такой у него характер, нравятся подобные вещи, что поделаешь.
Ребята, которые выдают ревью нейросети за свое, в сущности, такие же. Пройти мимо – скучно, и хочется как-то о себе напомнить, посмотреть на чужую реакцию: как он будет выкручиться?
Очевидно, если человек запрашивает мнение нейросети, он не разбирается в вопросе. Этичный комментарий звучал бы примерно так: “дружище, я не вникал в тему, но нейросеть говорит сделать так. Я вижу, что ты сделал по-другому и поэтому спрашиваю, чтобы лучше понять. Этот коммент на твое усмотрение.”
Даже если в далее идет выхлоп нейросети, общение остается человечным. Видно, что на том конце не мясной прокси, а нормальный человек. А когда голая копипаста – увы, этого не только не видно, но вы навлекаете на себя подозрения в вахтерстве и проксировании.
Так что вот почему машинные комменты так выводят. Будь нейросеть трижды права, вы не этичны. И тут вам нейросеть не поможет.
-
О вайб-кодинге (1)
Прогресс не стоит на месте, и все чаще я сталкиваюсь с результатом вайб-кодинга. Сначала я хотел написать “с нейрослопом”, но передумал. Кажется, это слово считается обидным: людям неприятно, когда их работу называют помоями, поэтому обойдемся нейтральным термином.
Я смотрю на результат вайб-кодинга и не знаю, что с ним делать. Во-первых, объемы: текущий PR, что передо мней, включает 3200 новых строк. Вдумчиво их просмотреть – это сорок минут мозговой деятельности, а если учесть набор комментариев – то весь час.
Далее, комментарии. Набирая их, понимаешь, что автор не будет их читать. В лучшем случае он скормит их модели и скопирует ответ, но скорее всего просто проигнорирует.
Качество сгенерированного кода посредственное. Код раздут, ему не хватает краткости. Я не говорю о стремлении записать все в одну строку; речь о той краткости, при которой код передает идею. Вместо встроенной функции – свой костыль: на момент обучения модель не знала о возможности языка. Вместо одного класса – два: абстракция и транспорт, хотя можно было свести к нескольким функциям. В коде на Питоне везде проверки: это словарь? это строка? это число? И много другого в том же ключе: приемлемо, но лучше исправить. Ощущение, что код писал джуниор с заявкой на мидла.
И тут возникает момент: был бы автор человеком, мы бы сели и разобрали все минусы. В следующий раз он напишет код лучше, а через какое-то время ему можно будет доверять. А вот что делать с коммерческой моделью – я не знаю. Автор очевидно не хочет учиться сам. Зачем мне тратить час на объяснение недостатков? С таким же успехом я могу объяснять их уборщице или коту.
Насколько я понял, код, написанный моделью, поддерживается одним способом – моделью. Если требуются изменения в логике, править вручную будет тяжело – не найдешь концов. Ожидается, что у разработчика развернуто окружение, плагины и всякие модели, чтобы сказать, что именно поправить в слопе, и модель поправит.
Другими словами, код теперь как файл .psd. Хочешь поправить — покупай подписку на Фотошоп. Нет денег? Лох и неудачник, вон из профессии.
Возникает противоречие: как быть, если кто-то (например я) не пользуется моделями. Как править этот код? Разворачивать окружение, переходить на вайб-кодинг? Не знаю. Лично я не собираюсь этого делать и, наверное, пересмотрю место работы, если слопа станет все больше.
Уже на этом этапе видна зависимость от моделей и подписок, в которую впадают разработчики. Чтобы поправить код, произведенной моделью, нужна модель. И тут я удивляюсь: неужели никто не видит параллели? Нам же известно понятие “вендор-лок” и его последствия, ведь так? Разве эти ваши клоды-копайлоты не вендор-лок? И вы, друзья-элэлэмщики, не только садитесь задницей на иглу все глубже и глубже, но и затягиваете других.
-
Поднимите руки
Смотрел доклад. Хороший, но рассказчик злоупотреблял одним приемом: задавал вопросы в зал и просил поднять руки. И я вспомнил, что давно хотел об этом написать.
Мне не нравится, когда выступающий обращается к залу с просьбой реагировать на выступление. Я считаю это настолько низким приемом, что хочется поскорее выкинуть его из головы как что-то неприятное.
За сорок минут автор, наверное, раз пятнадцать обращался к зрителям: поднимите руки те, кто… Разумеется, на ход повествования это не влияло. На каждый вопрос докладчик только комментировал: “о, как много” или “о, как мало” и как ни в чем не бывало продолжал. В целом это напоминало игру с иллюзией выбора: в лучшем случае изменится часть кат-сцены, а дальше игра идет как обычно.
Начиная с пятого вопроса докладчик всегда поднимал руку сам. Словно дрессировщик перед собакой, он показывал: смотрите, надо сделать вот так (поднимает руку вверх), и я буду доволен.
Сидя в зале или перед монитором, я не хочу быть дрессированной собакой. Я считаю, что уважил докладчика уже тем, что пришел. Я здесь, рассказывай, только пожалуйста, не заставляй поднимать руки. По той же причине мне не нравятся номера артистов с людьми из зала. Даже когда я смотрел маленьким КВН, мне не нравилось, когда выступающие обращались к членам жюри или Маслякову. Зачем? Им запрещено взаимодействовать, они смотрят и улыбаются.
Так что когда выступающий просит поднять руку, я не делаю этого, даже если тысячу раз подхожу под критерий. Я смотрю и улыбаюсь: давай выступай, а не командуй. Не за этим я сюда пришел, чтобы работать дрессированной собакой.
А у вас есть такое? Поднимите руки те, кто не поднимает руки.
-
Don't be a meat proxy
Коротенькая заметка о ребятах, которые на все отвечают выхлопом нейросети: Don’t be a meat proxy. Хороша тем, что метко вводит новый термин: meat proxy. Мясной посредник между человеком и нейросетью.
Замечаю, что все больше людей скатываются к роли посредника. Задаешь коллеге вопрос – он подвисает на пять минут и кидает md-выхлоп. Разумеется, он его не читал: тебе надо – ты и разбирайся.
Попадаются ребята, которые открыто пишут: Иван, я передал твои замечания по ревью нейросети, и вот что она сказала… Далее идет md-выхлоп, который, конечно же, заботливый коллега даже не читал.
Некоторое время я не знал, что делать с такими людьми – под каким углом смотреть и как взаимодействовать. На мой взгляд, человек, который проксирует каждое обращение к нейросети – словно проблемный родственник. Лучше его не провоцировать и не подкидывать горячих тем, и тогда, может быть, все обойдется.
Со временем я понял, что, похоже, некоторые люди плохо улавливают этикет. Каждая технология требует своего этикета, но не все это понимают – в инструкции не написано. Скажем, когда появились мобильные телефоны, считалось нормальным обсуждать бытовые дела на всю маршрутку. Когда появились планшеты и мобильный интернет, каждый решил, что можно включить сериал или игру без наушников. Сейчас так поступают разве что дети и пенсионеры.
С нейросетями та же история. Есть те, кто по какой-то причине не понимает: людям нравится нормальное, живое общение. Взаимодействие с машиной – это один протокол, с человеком – другой. Если коллега отвечает макрдаун-выхлопом, то тем самым нарушает негласные договоренности. С ним просто не хочется общаться – каким бы лапочкой и хорошим человеком он ни был.
Верю, что когда-то это поймут. Я подожду.
-
О Конфуции
Читаю Конфуция. Вот какой случай напомнил о нем.
Жил в Америке ультра-патриот. Трамп, МАГА, все дела. Потом женился на русской эмигрантке, и пара поехала в отпуск. Супруга как раз продлевала визу, и оказалось, что старый документ уже недействителен, а новый еще не выдали.
В аэропорту к паре подошли представители ICE – Immigration and Customs Enforcement (иммиграционная и таможенная служба США). Тут важно понимать контекст. Формально ICE борется с незаконной миграций, однако при Трампе штат расширили на порядок, чтобы проводить облавы. На работу в ICE устраивается отребье вроде бывших военных, таксистов и охранников. Мало того, что эти люди озлоблены на всех; так еще государство дает им в руки летальное оружие, чтобы задерживать мигрантов.
То, что подобные облавы проходят со всеми возможными нарушениями, нет смысла и говорить. Достаточно не той одежды, головного убора, цвета кожи, чтобы оказаться в приемнике на месяцы. Семьи разделяют. Иногда при задержании гибнут люди.
Представителям ICE не понравилось, что у супруги виза еще не выдана. Ее отправили в приемник, и там она провела несколько недель. Ситуация в приемнике ICE местами хуже, чем в тюрьме. Например, свет никогда не выключают, а охранники нарочно громко говорят по рации. Неделя – и от недосыпания едет крыша. Никаких медикаментов достать нельзя, правозащитников не пускают. За грубое слово изобьют и скажут родственникам, что поскользнулся на банановой кожуре.
Все это время муж пытался вызволить супругу. Навещал ее трижды в неделю, видел все своими глазам. В итоге женщину отпустили под залог с надетым на ногу браслетом. В обращении к прессе мага-патриот сказал, что разочарован в Трампе и ситуации с преследованием людей.
История пары на этом не кончилась: им еще ходить по инстанциям в браслете и доказывать правоту. Однако оставим их и подумаем над другим вопросом: при чем же тут Конфуций?
При том, что примерно в 680 году ДО нашей эры (то есть 2700 лет назад) Конфуций вывел формулу человеколюбия: не делай другим того, чего не желаешь себе. Разумеется, и до Конфуция эту мысль высказывали в том или ином виде, но он возвел ее в абсолют. На человеколюбии держится все учение Конфуция.
Условный мага-патриот уверен: можно устраивать облавы на мигрантов ради высшего блага. Ведь это мигранты: они цветные, глупые, что с них взять. Подумаешь, в приемнике тяжело спать и нет медикаментов? Это ложь правозащитников.
Но когда в жернова попадает близкий человек, все меняется. Товарищ
СталинТрамп, произошла чудовищная ошибка…Если бы у мага-патриота был хоть грамм мозгов, он бы понял, насколько верна формула Конфуция. Не желай другим гнить в приемнике, если не хочешь, чтобы то же самое случилось с тобой – или близким, что отнюдь не лучше.
За последние 2700 лет люди не придумали ничего лучше этой формулы. Остальные религии и учения – просто ее повторы. Например, формула целиком вмещает десять христианских заповедей: почитай родителей, не укради, не убий… В самом деле: хочешь, чтобы дети тебя уважали? Уважай своих родителей. Не хочешь, чтобы у тебя крали? Не кради сам. Не хочешь быть убитым? Не убий.
И так далее.
Глядя на историю людей, иной раз поражаешься. Мысль высказали 2700 лет назад и с тех пор повторяют во всех вариациях. Понять ее – это ведь не вырастить плавник или третью руку: тут не нужны тысячелетия. Но судя по текущей обстановке, до понимания формулы осталось еще очень и очень долго.
-
Чинить или отказаться
Когда что-то не работает, очевидное решение в том, чтобы починить. Второе неочевидное – отказаться. Чем старше становлюсь, тем чаще отказываюсь от того, что ломается. Разумеется, тезис слишком абстрактный и решается по ситуации. Но часто отказ не рассматривают в принципе и чинят одно и то же годами. Не надо так: отказ и пересмотр очень важны.
-
Повторный рендер
Почти на всех сайтах я замечаю повторный рендер. Это когда контент нарисовался, а потом Реакт решил, что виртуальное дерево устарело. Поэтому вжух – и контент рисуется еще раз.
То же самое во многих мобильных и настольных приложениях вроде Slack или Teams — которые только называются “приложениями”, а на самом деле оболочка Хрома или WebView.
Никто не считает это проблемой. Подумаешь, мигнул контент! В нулевые скорость была низкая, верстали таблицами, и сайт собирался по 30 секунд. Бывало, уже давно читаешь текст, и раз – что-то подгрузилось, подпрыгнуло, перестроилось. А тут – всего-то мигнуло.
Забавно, что современный фронтенд по-прежнему в ситуации эпохи нулевых – не может победить технические трудности. Должен быть улучшенный алгоритм рендера, который бы не срабатывал дважды. Еще лучше – дать над этим контроль разработчику.
Ну и фронтендеры хороши: никого не парит, что экран мерцает. Я вот заметил недавно, что на каждый клик огромная таблица повторно рендерится. А мне отвечают – не приоритетная задача. Спасибо, починим через никогда.
Давайте договоримся: не важно что у вас под капотом, Реакт-Вуй или что угодно. Контент не должен перерисовываться только потому, что ему так показалось. А если эти ваши Реакты-Вуи не починить, то верстайте так, чтобы не провоцировать повторный рендер.
-
Confirmation

Подтверждать или нет?
Кстати, лютейше бесят ребята, которые делают кнопку подтверждения слева. Это неправильно. Продолжение действия должно быть справа, а слева — возврат или отмена. Разумеется, к тем ребятам, которые не могут показать текст, это не относится — у них еще все впереди.
-
Кложурный тулинг
Если я правильно понимаю ты писал (пишешь?) на питоне в том числе. Просто я немного поглядываю что происходит в мире clоjure и вижу, люди как-то справляются без linter-ов, typechecker-ов и без такого инструмента, как uv (это менеджер интерпретатора, зависимостей проекта и виртуального окружения) в мире python. Когда работаешь с чужим кодом и погружаешься в него, то такие вещи очень сильно помогают. Возможно, в мире clоjure как-то можно обойтись без них, но тогда мне интересно как?
До прихода в Кложу я много писал на Питоне. Сейчас, хоть и меньше, тоже приходится: на работе есть Python-лямбды и скрипты. Питон — популярный язык, и я прибегаю к нему в случаях, если нужно что-то продемонстрировать для широкой аудитории.
Если отвечать на вопросы буквально, то да: тулинг Кложи не дотягивает до Питона. Для него созданы десятки линтеров и чекеров, а к каждому — еще столько же плагинов. Есть Jetbrains с Pycharm, которая выводит типы и предлагает автокомплит на любой чих. Программирование на Питоне в Pycharm стало как в Джаве — все типы подхватываются, и возникает ощущение, что в языке строгая типизация. Что касается uv и uvx, то я не застал их, но знаю, что это мощные средства.
До этого изобилия Кложе далеко как до Луны. IDE нет, есть только плагины к редакторам. Я пользуюсь связкой Emacs + Cider, но понимаю, что освоить ее новичку трудно. Автокомплит каждый настраивает как может. Проверку синтаксиса в полете и прочие удобства — тоже. Централизованным решением вроде Jetbrains даже не пахнет, и вряд ли оно когда-либо появится.
Не все так плохо с линтерами. Есть весьма развитый clj-kondo, который отлавливает много ошибок, например неверное число аргументов, необъявленные переменные и так далее. Суммарно кложурных линтеров наберется с десяток, и если использовать хотя бы пару из них, это решит некоторое число проблем. Также есть форматтеры кода по определенным правилам.
Существует кложурный LSP сервер (Language Server Protocol). Во многих редакторах LSP-клиент идет из коробки (VS Code, Emacs), так что здесь наблюдается развитие. С LSP у вас будет автокомплит, переход по коду и остальные базовые вещи.
В Кложе есть REPL, который закрывает много проблем. REPL основан на том положении, что единственный способ доказать, что код работает – это запустить его. Бывает, что код на Джаве выглядит корректно, но не работает. Непойманное исключение, ошибка индекса в массиве, NPE и так далее. Все это проверяется на практике, компилятор не поможет. Будет глупо оправдываться тем, что компиляция прошла: какая разница, если прод падает?
Зато REPL позволяет выполнить код в редакторе и отловить подобные случаи. Кстати, замечаю вот что: все больше джавистов топят за TDD – разработку от тестов. Парни не понимают, что TDD – это прокисший REPL, своего рода костыль, чтобы поскорее запустить код. В Джаве нет репла, но есть зеленая кнопочка Run, которая появляется в Main- и Test-классах. Нажатие этой кнопочки – просто убогий способ запустить код и ничего больше.
REPL не отменяет тестов, их пишут – юнит-, интеграционные и так далее.
Если переходить на Кложу с языков вроде Питона или Джавы, будет неудобно. Там у вас уютный Jetbrains, который по одной клавише угадывает экран кода. Здесь — самосбор: плагины к редактору, запуск линтера из командной строки. Зачем все это?
Затем, чтобы выйти из зоны комфорта, увидеть разнообразие, попробовать себя в чем-то другом. IDE и тулинг на все случаи жизни — это здорово, но нельзя на них замыкаться. Не вся работа делается в IDE по подписке. Когда Рич и Кен делали Unix и Си, разве были у них средства, аналогичные нашим? Они сами написали линтеры, парсеры, чекеры и прочие обвязки. А как написали IDE без IDE?
Удобства – это хорошо, но плохо, когда зависишь от них. Если точнее, плохо, когда кругозор сужается до той степени, когда жизнь без удобств становится немыслимой. Речь не о том, чтобы полностью от них отказаться. Но полезно быть в состоянии что-то сделать без привлечения мощных средств.
Когда вы увозите ребенка к бабушке в деревню, скорее всего там нет микроволновой печи, кондиционера, интернет-канала на 4К и других полезных вещей. Но никто не сомневается, что ребенку в деревне полезно: речка, солнце, животные. Отдохнет от гаджетов, помоется в дачном душе и вообще – не развалится.
Так и здесь. Да, чего-то не хватает, но не развалитесь. Можно и на Кложе писать хороший софт, зарабатывать и получать удовольствие. Да и не только на Кложе: я бы с удовольствием взялся за коммерческий проект на Common Lisp или Cobol — да на чем угодно! Нет тулинга? Не беда: либо обойдусь, либо напишу свой.
С таким настроем легко жить и смотреть в будущее.