Для разнообразия история с хэппи-эндом. Понадобилось мне срочно ответить мемом, который я нарисовал сколько-то лет назад. Мем я помню, а файла давно нет.
Что делать? Исходники я, конечно, не храню. Зато я постил его в твиттер.
К счастью, в папке Backups у меня лежит архив всех моих твитов за три года (Почему только за три? Потому что ебучий Элон Маск, три года поноса ему шлю). Они все в одной здоровенной json-ине, чтобы тебе было удобно искать, и картинки рядом в отдельной папке.
Полазил я по ним, потыкал в рандомные места — нет нужного мема. Картинок там, чтобы вы осознавали масштаб, 9999 (натурально, я сам сначала подумал, что Finder сломался, но нет, так совпало, реально 9999).
Расстроился. Запил.
А потом пришла в голову гениальная идея — а что если поискать по тексту на картике? Ну а что, Эпл же позволяет текст с картинок выделять теперь. Может он и индексирует его тоже?
И да. Все нашлось моментально. И я ничего для этого не делал. Даже по-русски ищет, прикиньте?
Настоящий Эпл момент. Я снова люблю компьютеры (это чувство продержалось минут 20).
Есть такая традиция — писать в футере сайта текущий год. Типа, © 2024.
Символ © это, понятно, оберег от юристов и нейросетей. Когда нейросети видят его, они сразу перестают на контенте этого сайта обучаться, а юристы разбегаются в ужасе. Но в остальном это маленький и безобидный карго-культик, даже лень его дальше высмеивать.
Так вот, год.
Начнем с самой очевидной гипотезы — год в футере нужен, чтобы посетитель узнал, какой сейчас год. Теоретически может пригодится какому-нибудь залетному путешественнику во времени, но вообще это довольно ненадежный источник, и календарь справится с этой задачей лучше. В крайнем случае можно попробовать газету купить.
Вторая гипотеза — год показывает дату последнего обновления сайта. Ну допустим. Только, опять же, скорее всего ненадежно — он либо меняется где-то в совсем другом месте, чем собственно публикуется контент, либо просто забит динамически и всегда показывает текущий год, т.е. выполняет первую функцию, обслуживает путешественников во времени и людей, вышедших из многолетней комы.
Но давайте предположим, что год таки реализован правильно, т.е. действительно показывает, когда последний раз обновлялся сайт. Какой у этого потенциально может быть юз-кейс? Посетитель может узнать, что автор сайта жив. Вот, пожалуй, и все. Зачем ему это информация? Что он будет с ней делать?
Например, у меня есть проблема, я гуглю решение, перехожу на сайт, читаю статью, дохожу до конца, а там в футере 2022, и я такой — блин, ну и нафига я это читал, автор-то похоже умер. И тут же закрываю сайт и все забываю. Так что ли? Или как? Объясните.
Может показаться, что год как-то отражает релевантность контента, что конечно неправда. Год обычно делается один для всего сайта, а у отдельных статей есть свои точные даты. Так что это аргумент летит в ведро.
Иногда пишут диапазон, 2020–2024, и в этом хоть какой-то смысл есть — можно узнать год основания. Не супер-важно, но хотя бы любопытный факт, потому что годы основания у разных сайтов РАЗНЫЕ. А текущий год везде один, и он, блин, написан на каждом сайте зачем-то.
Ну так что, зачем вы пишете год в футере? Обновили на 2024 уже?
Запостил тут ссылку на Awesome Cold Showers Хиллеля Вейна. Типа, какие есть хайповые поверья и что на самом деле говорят исследования. Да, про статическую типизацию в том числе. Почитайте, она короткая и хорошая.
Есть там и «разоблачение» формальной верификации. В реплаи к твиту пришел чел со словами «но ведь эти разоблачения сводятся к „баги были только в неверифицированной части“, какие могут быть вопросы?».
На что я могу сказать, что он, конечно, по-своему прав. Есть такой анекдот:
Летят чуваки на воздушном шаре. Потерялись. Пролетают мужика.
— Мужик, где мы находимся?
— Вы находитесь на воздушном шаре!
— О, математик! Абсолютно точный и абсолютно бесполезный ответ.
Конечно, если вы верифицировали часть системы, вы можете гарантировать отсутствие багов только в верифицированной части.
Проблема в том, что людям не нужна «верифицированная часть». Им нужно приложение, все, целиком, от начала и до конца. И тот факт, что вы не смогли верифицировать какие-то части и в них нашли баги снимает с вас ответственность перед коллегами-академиками, но никак не перед пользователями.
Или можно так сформулировать: если вы сделали систему, которая верифицирует _что-то_, имеет значение не только то, что она верифицирует хорошо, но и _что именно_ она верифицирует. Иначе это опять ключи под фонарем искать.
Grow up already.
Кстати, еще один выпуск подкаста вышел, с пылу с жару
Search → Канал Ильи Бирмана → Думаем дальше № 3 — «Ощущается как ненастоящие ёлочные игрушки» с Никитой Прокоповым
Про то, как американцы не могут больше полететь на Луну, а Эплы — делать нормальные интерфейсы. Рассказываю немножко про Huumble UI!
Никто не знает будущее.
Я уже писал про это по-отдельности, но тут сформулировал в виде бюрошного принципа, который легко запомнить.
В общем, никто не знает будущее. Офигеть откровение, да? Но почему-то я постоянно сталкиваюсь с примерами, где будущее почему-то совершенно конкретными способами влияет на их решения и они не видят в этом ничего странного.
Например, выложил на Грампи скриншот какого-то стандартного мастера установки, который спрашивает: установить для всех пользователей комьпютера или только для меня. Меня этот вопрос всегда выбивал из колеи: кто эти другие пользователи, они с нами сейчас в одной комнате? Я тут вообще-то один сижу. Почему меня заставляют принять это решение, если оно а) не необходимо и б) оба варианта приводят к абсолютно идентичному результату?
Так вот, возражение было такое: а что если пользователь сейчас один, а завтра появится второй? Вот тогда-то разница и проявится.
Звучит логично? Нет! Я не знаю, вы не знаете, никто не знает, когда и при каких обстоятельствах появится второй пользователь. То, что вы переложили это решение на меня, не значит, что я могу его как-то лучше принять. Нет, я тоже не знаю будущего.
Другой пример услышал буквально на днях в подкасте. Чувак рассказывал про язык Roc и как они делали управление зависимостями. И вот он говорит: сначала мы сделали version ranges. Что-то типа: моя библиотека требует зависимость json версии начиная с 1.2.0 и до, допустим, 2.0.0 не включительно. И дальше он буквально своим же ртом говорит: «да, 2.0.0 еще не вышла, но мы предполагаем, что там будут какие-то серьезные изменения, а до 1.99.99 все изменения будут менее серьезные, и хотя они тоже еще не вышли, давайте делать вид, что мы сможем с ними работать».
Звучит как булшит, да? Что это за «предполагаем»? Никто этого не знает! Никто этого не гарантирует! И не может, даже в теории. Так почему мы должны принимать это решение сейчас, когда _по определению_ мы не можем его принять???
(К счастью, ребята из Roc одумались и сделали нормальное версионирование, без диапазонов. Но вроде есть языки, которые диапазоны умеют?)
Ну и третье это программирование на будущее. Интерфейсы с одной реализацией (а вдруг потом понадобится вторая?). Геттеры, которые просто возвращают значение поля (а вдруг потом захотим логику добавить?). Использование ОРМ, потому что «а вдруг мы захотим поменять базу?». Интересно, что этим любят заниматься именно джависты, у которых при этом «лучший инструментарий для работы с кодом в мире» и любое из этих изменений в теории должно делаться тривиальным нажатием кнопки в ИДЕ.
Так зачем делать это сейчас, когда ты не знаешь, появится вторая реализация или логика в геттере, если ты можешь это сделать когда они действительно понадобятся, и с той позиции скорее всего сделаешь это лучше? Зачем гадать сейчас и рисковать не угадать, если можно вообще ничего не делать и принять решение тогда, когда информации будет достаточно?
Потому что люди почему-то думают, что могут предсказывать будущее.
А они не могут. Такие дела.
А вот мессенжер Сигнал, который продается типа как экстра секьюрный. Я уже писал вроде об их странном решении спрашивать номер телефона и доступ к телефонной книге, что звучит вообще вот несекьюрно.
А теперь другой вопрос — он постоянно обновляется! То есть буквально каждую неделю как будто. Я не очень часто в него захожу, у меня там пара друзей только, так что я вижу просьбу обновиться буквально каждый раз. Один раз несколько месяцев не заходил, так он тупо работать перестал, пока не обновишься.
Ну и мысль такая — если ты дофига секьюрный, то наверное надо наоборот, обновляться как можно реже? Потому что каждый апдейт это же риск притащить новые дыры. Была какая-то история, где чуваки померяли количество инцидентов за несколько лет, и самое надежное и стабильное время было когда все были в отпуске и никто не релизил.
Или наоборот сидеть на самых последних библиотеках это более секьюрно? Не могу понять. Неужели там реально каждую неделю какие-то дыры закрывают в зависимостях? Но тогда опять же, имидж дофига секьюрного мессенжера не клеится как-то.
Есть еще конечно вариант что они фичи каждую неделю релизят. Но во-первых какие такие фичи мессенжеру вообще нужны каждую неделю? И во-вторых, а как же секьюрность? Это явно из разных вселенных концепции, конфликтующие.
По мне так по-настоящему секьюрный мессенжер должен быть кондовым как картонная коробка из-под велосипеда, (почти) никогда не обновляться, ничего у тебя не спрашивать, ничего не предлагать и ничего не требовать. С кондовостью у Сигнала, кстати, все в порядке, а вот по остальным фронтам подкачал.
Или я чего-то не понимаю? Частые апдейты — секьюрно или нет?
Решил я написать пост на сайт, открываю редактор, запускаю веб-сервер с Джекиллом, а он — пук-среньк, я сегодня работать не буду, сломался.
И так, сука, каждый раз! Я не преувеличиваю. Еще не было такого, чтобы я сел писать, и все просто заработало.
И это при том, что Руби у меня стоит исключительно для Джекилла, в остальное время я его вообще не трогаю! Он сам сгнивает, и каждый раз что-то новое. Или brew там че-то куда-то передвинет, или макось обновится, или в PATH кто-нибудь что-нибудь пропишет, или права куда-то проебутся. Или Гитхаб че-то там обновит, тоже бывало. А я страдай.
Как вы понимаете, интереса разбираться у меня нет. Поэтому было принято стратегическое решение перевести сайт на Кложу и переехать на свой сервер с Github Pages.
Прикинул быстренько, во сколько мне выльется написать свой редактор типа Medium, на условном CodeMirror. Тяжеловато для быстрого переезда, плюс JS-библиотеки без шага сборки, такие, чтобы закинул файл в <script src> и у тебя все есть, сегодня уже фиг найдешь. А я не хочу шаг сборки. Я хочу кайфовать от мнгновенной перезагрузки и максимальной интерактивности.
Поэтому оставил как было: Sublime Text + Markdown + Git. Редактировать удобно, версионирование, но вот WYSIWYG и картинок не получишь. Штош.
Следующий шаг какой? Надо Markdown-парсер. Тут я тоже оценил обстановку и решил что это стратегический ресурс, зависеть от других будет беспечно, поэтому надо делать его ин хаус.
Ну и пошел сделал. Есть такая библиотека, Instaparse, ей пишешь грамматику в EBNF, а она тебе парсер. В принципе, немножко занудно, но все делается, и даже приятно. Особенный кайф, что парсер целиком умещается на экран. Есть что-то экстатическое в том, что никуда по файлу бегать не надо, если что-то забыл, можно просто взгляд перевести, и т.п.
Синтаксис картинок украл у Бирмана. В маркдауне же как? ![]()
, под инлайн-картинки в первую очередь. Но что это за концепция, кому вообще нужно посередине строки картинку встраивать?
Никому. Не, картинка это явно элемент блочный. Поэтому у нас (с Бирманом) просто на отдельной строке пишешь image.jpg
и оно превращается в картинку. Кайф!
Ну и видосы добавил, а то как в MD вставить видосик? То-то же. Вообще одна из моих больших печалей, что видео и картинки настолько по-разному в компьютерах обрабатываются. Как смог исправил :)
По Instaparse есть пара мыслей. Например, в троице звездочка - плюсик - вопросик не хватает такого полезного примитива, как список, разделенный разделителями. Он конечно собирается, но не очень удобно. Вот эти все «бэкслеш эн или конец файла» быстро утомляют. Второе, что утомляет — пробелы. С ними бы тоже что-нить придумать, особенно когда они почти везде ничего не значат, хотелось бы такой дефолт — можно пробелы, если только явно не запретил.
Дальше приделал роутер, такой, чтобы позволял перекрывающиеся пути (`/post/*` и /post/new
, например), но при этом не зависел от порядка определения. Чет готового не нашел, психанул, написал свой. Теперь собираюсь везде использовать.
Потом еще давнюю свою мечту реализовал, прописывать размеры картинкам, чтобы страница не прыгала. Вроде просто, а Джекилл не умеет.
Ну и кеширование настроил, просто потому что могу. Все ресурсы кешируются на бесконечность, но ссылаются с таймстампами — если обновится, получишь новую версию, а нет так нет. Ну а сами странички по таймстемпам и If-Modified-Since. Кстати, мой любимый факт это что Cache-Control: no-cache не отключает кеширование. Каждый раз смеюсь. Но мы и не такое видели, конечно.
Неожиданным бонусом получил предсказуемые деплои. Потому что Github Pages, во-первых, тупит, а во-вторых, если что-то не так, то просто молчит об этом. А, ну и отложенные публикации. Короче, одни плюсы.
В перспективах еще сделать дев-режим, чтобы когда сохраняешь файл, страничка в браузере сама ре-рендерилась. Но это когда руки дойдут. Я же вообще-то пост писать сел, отвлекся чет.
Короче, хорошо провел выходные, всех яков побрил, всем рекомендую. 10/10, хостите свои блоги сами.
Has Software Development Become Slower? Or: Catching Up With Carmack.
Прочитал вот такой пост. Сначала думал: хехе, еще парочка примеров в мою копилку того, что вроде бы уже всем очевидно: программы сегодня свечку не держали рядом с тем, что было раньше.
И оно правда так начинается. Вот про книжку Doom Guy Ромеро:
> Halfway through this book, I’m constantly amazed by how fast the early id Software guys got things done and games released. [...] Coming up with new tech and shipping that in 4 months. Creating a SNES port in 3 weeks. No off-the-shelf engines available back then.
> A SNES port in 3 weeks? No matter what is being ported, 3 weeks for a platform port is fast.
Ноу шит, как говорится. Сегодня три недели нужно «серьезным людям» только чтобы все аккаунты в копроративных слаках завести.
Но дальше чувак почему-то начинает этот блоат защищать:
> Hardware has gotten better & faster, but the workloads we throw at computers have also grown: our screen resolution isn’t 640x480 anymore, instead we have 120Hz displays and watch 4k movies
Правда, с защитой получается не очень, причем до такой степени, что я до сих пор подзреваю, что это какой-то тонкий стеб. Ну да, 4K фильм требует больше ресурсов, чем 480i GIF, но, во-первых, фильмы-то как раз не тормозят, во-вторых, почему из-за этого например текстовый редактор открывается медленнее (я не пишу ИДЕ, потому что вы опять начнете мне рассказывать, что современные ИДЕ торомзят по делу, ведь программисты добавили туда столько полезных фич, что теперь им нужно пять секунд, чтобы просто показать окно выбора файла). Ну и в третьих, 4K отличается от 480p на полтора порядка, а число транзисторов выросло на три-четыре порядка с 1993-го, когда вышел Дум.
Так что нет, любимые, ваш Слак тормозит, потому что разработчики поленились, а не потому что у него есть объективные причины тормозить. И не надо про Unicode и эмодзи. Это тоже объяснение, промахивающееся на пару-тройку порядков в смысле насколько сложнее стало vs насколько выросли ресурсы. Удивлен, кстати, что чувак про это в статье не вспомнил.
Дальше там еще смешнее, через метафору, чтобы было нагляднее:
> You’d see how much a house costs and wonder: why are houses so much more expensive than the house my parents built in the 80s? And yet they’re still smaller? Turns out expectations and standards slowly rose over the past 40 years: houses in the 80s didn’t have proper insulation, floor heating, that many windows, that many power sockets, triple-pane windows, Ethernet cables in every room, etc.
Сука, да, необходимость проложить кабели эзернет и розетки это то, что увеличивает стоимость строительства, ага. Ну в общем если вы про компьютеры не понимаете, это ровно такой же аргумент, который он делает про компьютеры. Все тормозит, потому что букв стало в два раза больше.
Заканчивает он вот чем: программы конечно тормозят, и программисты работали быстрее, но задумывались ли вы, что это потому, что они работают с более сложными технологиями теперь?
> Have you ever tried to implement an OAuth authentication flow? Ever compared the sweat that came out of you with the amount of time a user spends thinking about what goes on in the background when they click “Login with …”?
И тут как нигде уместен тот мем с гусем. А кто придумал этот ебучий OAuth и сделал его таким сложным? Кто, а?
> Ever made a website look nearly exactly the same in four different browsers on desktop, on phones, and even gaming consoles
As a matter of fact, да. Я, лично я, автор этого текста, человек, который прямо сейчас жмет по кнопкам, лично я писал те самые сайты и лично задрачивал их под разные браузеры. Это в те времена еще, когда браузеры действительно были разными. Сейчас это гораздо проще, И ОДНОВРЕМЕННО раньше писалось бытрее и работало шустрее, чем сейчас. Иди фигурируй.
В общем, программы тормозят, программисты несчастны, но не из-за каких-то вселенских законов, а потому что живут в проклятом мире, который сами и создали.
I rest my case.
Как-то один знакомый написал в соцсети: мы сделали вот такую фичу, плюсы очевидны. Мне были неочевидны, поэтому я спросил, не мог бы он их объяснить. Если они очевидны, то это наверное просто? Не мог.
Или сегодня попалось в твиттере: очевидно, надо ходить на выборы, даже в России. Причем чел все остальное понятно разложил: да, ни на что не влияют, да, власть свергнуть так не получится. Но, мол, ходить надо. Его, естественно, спросили: ну так а зачем? И там началась демагогия, типа, сложно объяснить, нет причин не ходить и т.п. Хотя, опять же, началось с того, что это, мол, очевидно.
Или кто-то показывал дорогие часы, его спросили, в чем прикол, а ему: если надо объяснять, нет смысла объяснять.
Или все эти продавцы методологий: очевидно, ООП/ФП/TDD/DDD/статическая/динамическая типизация/докер уменьшает стоимость разработки (цитата уточняется).
То есть я не то чтобы несогласен, или, наоборот, согласен. Просто ну если вы не можете на простые, очевидные по-вашему вопросы ответить, то может быть хотя бы не писать, что они простые и очевидные?
Но лучше бы конечно остановиться и попробовать все-таки на них ответить. Результат может оказаться интересным.
А вообще я тут Grumpy Website в порядок привожу, потому что давно хотел, времени свободного много и вообще, почему нет?
Ну и я там переделал полностью урлы у постов, перевел его на новую БД, и при всем при этом в RSS посты ни разу не продублировались. Ну, знаете (хотя откуда вы знаете, вы поди родились в 200x году и RSS в глаза не видели), это вообще проблема любого блога, что рано или поздно что-то случается и все прошлые посты приходят еще раз. Ну вот я все аккуратно сделал, и никто не заметил.
А второе это то что я много возился с CSS-ом, и каждый раз, когда я что-то менял (включая продакшн), достаточно зайти на сайт и ты сразу видишь актуальные стили. Не надо рефрешить ничего, просто сразу видишь новое. При этом старое кешируется, конечно.
Вроде немного, но душу греет. И все это без вебпака. И без реакта. OG SSR, так сказать.
Продолжаю слушать Metamuse, который мне обычно нравится, но тут они как-то подопустили планку, начав звать бизнес-маркетинг-СЕО чуваков вместо настоящих людей.
В выпуске про Obsidian я, кажется, наконец понял, почему мне никак не заходит вся эта движуха с tools for thoughts.
Чувак рассказывает, что можно соединять свои заметки ссылками, и получается такая Википедия. Казалось бы — да, Википедия круто, к ней вопросов нет!
Но дальше начинается нюанс. Он приводит пример: вот я написал статью Evergreen notes. И в какой-то момент начинаю новую статью с предложения «Because everything is an evergreen note», и ставлю ссылку. Получается, связал. Так, говорит, можно строить одни идеи на других. Видите нюанс?
Другой пример, который он же приводит (CEO Obsidian, между прочим, правда, наемный). Читал, говорит, книжку Мураками (тут уже любой приличный человек вышел из чата), и там есть фраза «Pain is inevitable, but suffering is a choice». Он сделал себе на основе этого заметку «Pain is information». Потом он вспомнил другую известную фразу, «Knowledge is power». Information == Knowledge, поэтому транзитивно получаем Pain is power. Синтез!
Ну в общем моя проблема со всем этим в том, что это какие-то метафоры, то есть по определению неточные, контекстно-зависимые и с кучей «но». «Боль это информация» это не самое главное и не самое точное, что нужно знать про боль, это какая-то очень частная мысль, которую может быть можно натянуть на реальность, если очень сильно закрыть глаза. То же самое и про Knowledge is power. Не, это конечно смешная игра со словами, но не надо притворяться, что из этого можно какое-то знание или «идеи» извлечь.
Girls = time x money, time is money, money is root of evil, поэтому girls = evil. И что?
Ну а разница с Википедией в том, что Википедия собирает факты. Факты, ну, объективно существуют. Поэтому и смысл ссылаться друг на друга есть, и анализ какой-то комплексный проводить, и строить фундамент из знаний, чтобы стоять на их плечах.
В общем, записки у меня какие-то, конечно, есть. Тудушки, черновики, список идей для постов. Но, честно, желание поставить ссылку ни разу пока не появлялось. И все, что я видел, включая конкретные примеры, мне глубоко непонятно. А я в Roam Research работал, между прочим! Да, можно заморочиться и все связать, а можно и нет. Не видел ни разу, чтобы что-то от этого менялось.
И в общем моя рабочая гипотеза пока в том, что tools for thoughts это такие feel good инструменты, которые делают приятно пользователю. Они создают ощущение, что человек что-то там производит или синтезирует, но на самом деле реальность мало меняют.
Но если кто-то почувствует себя более организованным и кайфанет от этого, безотносительно того, изменится ли его организованность в объективных показателях, ну, почему бы и нет?
Ничто так меня не удивляет, как уведомления о куках в нативных приложениях. Типа, в браузере еще понятно — твой сайт ему никто, сессий нет, приходится выкручиваться.
Но нативное-то приложение ты сам написал? Сам логинишься. Сам поддерживаешь сессию. Можно нормальные файлы или БД использовать. А если трекать пользователя, то между чем и чем? Он вроде не уходит никуда и не меняется.
Короче очень странное место, чтобы увидеть эту срань. Заходишь в приложение банка — куки. Заходишь в приложение маркетплейса (нативное все, напоминаю) — куки. Заходишь в приложение для телевизора — куки.
You were supposed to destroy the Sith, not join them! Какие еще куки???
Посмотрел Spider-Man: Across the Spider-Verse, продолжение Spider-Man: Into the Spider-Verse (да, они издеваются). Он сильно хуже! Но удивительнее всего, что об этом практически не говорят. Как будто ему по инерции достались лавры оригинала.
--- СПОЙЛЕРЫ ---
Конфликт. В Голливуд пробралась какая-то релятевистская толерантность, когда в фильмах хорошие срутся с хорошими, и понять в чем суть конфликта решительно невозможно. См., например, Мстители — Гражданская война.
Тут тоже, одни пауки хотят, чтобы другие пауки «страдали более правильно». Кто определяет правильно? Почему это хорошо? «Ты должен смотреть, как умирает твой отец, без этого ты не Спайдер-мен», это же садизм какой-то, нет? «Даже не пытайся что-то сделать», «все должно происходить по канону» — фатализм, странный выбор, не? «Ты плохой, потому что тебя не должны были укусить». Кто кому должен был? И как это делает меня плохим, если это просто со мной произошло?
Родители-то у Майлза превратились в needy мудаков. Буквально, ебут мозги и обижаются. «Ты опоздал на вечеринку своего отца» — серьезно? Это повод для конфликта? Хули 15-летнему парню делать на вечеринке сорокалетних? «Мы хотим, чтобы ты поступил в университет» — «Отлично, давайте» — «Нет, не давай, мы будем скучать». Ну охуеть, ребят, вы о ком-то кроме себя вообще думаете? «Ты нам лгал». Вы хотите в ситуации разобраться или обижаться сидеть? Там реально в какой-то момент звучит фраза «У тебя что, есть своя жизнь?» Типа это не окей. «Мне не нравится, что наш сын общается с девушкой». Эээ, родители, вы нормальные вообще? И мы при этом должны их тоже как-то «понять».
В чем конфликт Гвен с ее отцом я вообще не понял. Я полицейский, ты паук, помогаешь ловить преступников, я уволился, мы помирились? Что?
В общем, мне никогда не понять драматизма этих высосанных из пальца проблем.
Фантазия победнее. Чп-индус, чп-британец, чп-мексиканец, чп-женщина. Сравните: нуарный, мультяшный, аниме.
Экшн состоит из шуток больше, чем из экшна, и обесценивает сам себя, потому что слишком легко у них все получается.
Мета-шутки, которые только подчеркивают тупизну происходящего. «Я знаю, платформа медленная». «Что с твоим костюмом, кровь из подмышек?» Вот и что с этим зрителю делать? Соглашаться и обесценивать фильм? Не соглашаться и считать персонажей слегка мудаками?
Вообще, тут все слишком озабочены тем, как они выглядят вместо того, чтобы думать о том, как решить проблему. «Ты клевый» — «Я всегда был клевый». «Это я его научил». «Of course I’m right, I’m always right». И вообще шутки тут не особо добрые, обесценивающие. «Ты не смешной», «Он не думает головой», «Ты плохой учитель». Ха-ха? Они даже умудряются шутить над смертью дяди Бена!!! Никакого чувства такта.
Origin stories. Во-первых, who cares? Во-вторых, раскрывать персонажа через закадровый текст это зашквар.
Мотиваций просто нет. «Возьмем ее?» — «Нет». Почему нет? «Да». Почему да? «Ты с ним поговорила? Так нельзя!» Почему нельзя? «Я тебе отомщу». За что? «Никому не рассказывай». Почему?
Майлз большую часть фильма просто болтается как говно в проруби, без какого-либо agency.
Рисовка стала похуже, ракусры по-скучнее, позы обычнее. Даже постер просто в традиционные отрезанные головы превратился. А у первого фильма какой был! Хоть на стену.
Ну и фильм разделен на две половины. Мне кажется, не существует ни одного фильма, который бы разрезали пополам и из этого что-то хорошее получилось.
Я думал, может мне показалось? Освежил первый фильм, и нет, там все классно, все работает, погони интересные, реплики убойные и в тему, каждая сцена на месте, конфликт relatable. В общем, чувствуется, что другие люди делали.
Короче, если бы второй Паук вышел сам по себе, то я бы ничему не удивлялся. Сейчас все фильмы такие, meh. Что меня удивило, так это что первый фильм получился по-настоящему хорошим, и что никто не видит между ними разницы. Хотя она вроде бы огромная.
Самое тупое нововведение последнего времени (последнего, хехе) — плавающая экшн-кнопка в правом нижнем углу. Ее придумали в Гугле, когда им нужно было обновить свою дизайн-систему и хоть как-то выделиться. Ну мы все знаем, как плохо в Гугле с дизайном.
На бумаге вроде неплохо: собственный угол, где больше ничего нет, коммуницирует важность. Правый нижний угол вроде как самая удобная область на телефоне.
На практике же вышло как всегда у Гугла: херово, но все сделали вид, что так и нужно, а кое-кто даже и скопировал.
Поместить кнопку туда, где больше ничего нет — идея сомнительная. Раз там ничего нет, то и искать ее там никто не будет. В итоге я, например, постоянно не могу понять, что нажать, пробегаю все менюшки и иконки по нескольку раз, пока не вспомню про эту кнопку. Сфига ли она в контент-зоне вообще?
Ну и правый нижний угол все-таки не самая удобная область. Если, конечно, если у вас не нулевой длины палец. В итоге вместо того, чтобы до нее было удобно тянуться, палец ее просто загораживает. А тянуться все равно неудобно.
Rule of thumb: не копируйте дизайн-решения Гугла, здоровее будете.
Linda Yaccarino, CEO Икса (бывш. Твиттер), пишет:
> The pace of innovation speaks for itself. If we can achieve this in nine months, just imagine the scope of our ambition in the next year
Не хочу обесценивать, но я пошел почитать, что там за инновации такие.
> 1/10 | “For you” and “Following” tabs replace “Home” and “Latest”
Т.е. две строчки в коде переименовать. Понятно, учитывая размеры Твиттера, сложность в том, чтобы их найти.
> 1/20 | Ability on iOS to Bookmark a post directly from the post details
Добавить кнопку к существующему API, окей.
> 1/17 | View counts feature location moved to the right side of posts
Люблю запах инноваций по утрам!
> 12/19 | Profile labels expand to include blue, gold and grey check marks
Нарисовать три иконки. Я кстати в день анонса десяток нарисовал ради шутки, оказывается это были инновации.
> 4/15 | AI bot progress made, altering timelines so only verified accounts are eligible in For You
Я так понимаю AI здесь это SELECT ... WHERE users.status == "verified"?
Иногда сложность и амбициозных решенных инженерных задач поражает, конечно. Например:
> 3/16 | Feature update for users to see the total number of times a post has been bookmarked
или
> 7/01 | Video feature update to allow for double tap functionality to fast forward/backward
Не зря у них там сколько инженеров осталось, тыща?
Еще мне нравятся, как они меняют лимит (одна цифра в коде, кстати) и доят это событие раз за разом, видимо, чтобы список солиднее казался:
> 12/12 | Blue subscribers can now upload 10-minute videos
> 12/23 | Blue subscribers can now upload 60-minute videos
> 5/18 | Blue subscribers can now upload two-hour-long videos
Особенно кульминация этого всего мне понравилась. Результаты, так сказать:
> 6/27 | Apple TV+ posts entire first episode of “Silo” on Twitter
«Great move by Apple!», пишет Elon Musk. Если пойти по ссылке, там будет «This Tweet was deleted by the Tweet author». Действительно, Great move!
Иногда там чистый пиздеж. Например:
> 1/24 | Starting today on web, timelines default to where users left it last
(ни разу не видел, чтобы оно так работало, Твиттером пользуюсь ежедневно)
Иногда просто объявляют то, что уже работало:
> 2/21 | Launch of notifications for users
> 6/06 | Feature upgrade allowing Blue subscribers up to 1 hour to edit their posts
(редактирование было до Элона)
Иногда то, что вообще-то должно работать само, но его как-то сломали?
> 6/20 | Feature updates to improve screen mirroring integration
Иногда за фичу выдают то, что что-то отключили:
> 3/20 | Use of text messages as two-factor authentication method available for Blue subscribers
(2FA была для всех, отключили для не-платных)
На самом деле, единственная более-менее инженерная работа, которую я нашел в этом списке, вот:
> 7/03 | New, improved version of TweetDeck launches
Да, у Твитдека отломали половину функций в процессе переписывания, да, он тормозит как сука, да, их никто не просил, да, это переписывание никому не понравилась. Но тут хотя бы понятно чем люди занимались (обратным прогрессом, хе-хе).
Иногда хвастаются фичами, которые отключили на следующий же день:
> 7/01 | Rate limits to fight scam and bots
Элон хотел нагнуть всех, заставив купить галочку, через лимиты. В тот день Твиттер тупо ни у кого не работал. Откатили, конечно же.
Кстати, что-то они не включили в этот список, как отрубили АПИ и тем самым грохнули все прекрасные сторонние клиенты. Интересно, почему?
Зато включили главное:
> 2/15 | Expanded ability for advertising cannabis products
В общем, интересно было посмотреть, что в больших ИТ-компаниях считают за инновации. По моим прикидкам один инженер за неделю бы все это сделал, если прийти с улицы на незнакомую кодбазу. Все остальное, я так понимаю, это бюрократический оверхед. 1000 инженеров, девять месяцев, родили, так сказать, ребенка.
Всем здоровья, особенно погибшим. Ну и цитата CEO:
> Stay tuned—the team is shipping more this week.
Вот допустим у вас в интерфейсе есть кнопка. Пользователь наводит на нее указатель типа мышь. Надо ли менять курсор со стрелки на руку Микки Мауса (как у ссылок)?
Люди, которые ничего кроме веба в своей жизни не видели, хором отвечают: да. Еще и цвет поменяй, и побольше сделать, и теней прибавь. Ну, чтобы было совсем уж очевидно, что она нажимается.
Однако если мы обратим свое внимание на весь остальной компьютинг, то внезапно станет понятно, что никто кроме веба-то так и не делает. Все операционные системы начиная с Windows 3.11 и до сегодняшних macOS Sonoma/Win 11 не делают ничего специально, когда ты пролетаешь над кнопкой.
Потому что — шумит же. Может ты и не собирался ничего нажимать, а просто пролетал мимо. Зачем мне посреди пути вдруг менять курсор, отвлекаться на него?
Те же люди из браузера скажут: но чел, как же тогда понять, что кнопка нажимается???
И опять обратимся к истории. 30 лет люди как-то понимали это без курсора и hover state, а теперь вдруг резко потеряли такую способность? А на мобиле как, как люди определяют, что нажимается? Там курсора вообще нет.
Ответ прост: внешний вид. Кнопка и так уже выглядит как кнопка. Нафига ей еще какая-то дополнительная индикация? У вас есть глаза? Есть. Прямоугольник можете найти? Можете. Ну вот, вы достаточно квалифицированы, чтобы находить кнопки без смены курсора.
Но что если кнопка выглядит как хуй знает что, только не кнопка? Это тоже чисто вебовское изобретение, кстати. Мем с велосипедистом, который вставляет палку сам себе в колесо. Сделал хуевую кнопку — нужен hover state — пользователи не могут ее найти. Я предпочту визуально понятную кнопку без курсора визуально непонятной кнопке с курсором в ста случаев из ста. Hover state — это не разрешение делать кнопки, которые приходится искать.
И еще раз, на всякий случай, если захотите возразить. 30 лет. 30 гребаных лет. Все интерфейсы вообще, кроме сайтов. Без курсора. И все живы. Это не теория даже, это практика, 30 лет практики. Статус кво практически — не подсвечивать кнопки и не менять курсор. Факты.
А у вас какие аргументы?
Ладно, внезапно ситуация, в которой без ссылки не обойдешься. Впервые на этом канале.
Я тут написал черновик поста. Он философско-провокационный, поэтому нужен фидбек. Много фидбека.
Ну а поскольку это черновик, то придется дать прямую ссылку, других способов нет.
Почитайте, плиз, напишите, что думаете?
Ссылка:
http://localhost:8080/drafts/2024-01-05.html
Тут же анонсировали Hey Calendar, рекомендую сходить посмотреть видео — оно сделано ровно так, как я недавно рассказывал: чувак открывает свое приложение и 20 минут тыкает во все подряд. Без всяких слайдов.
Они придумали там много прикольных фич, довольно толковых, но на что я обратил внимание, так это что некоторые из них технически можно было сделать и в текущих календарях. Но никто не делал.
Например, maybe события. То есть когда что-то запланировано, но еще не подтверждено. Формально можно просто еще один календарь завести, на практике же удобно, когда создатели заранее об этом подумали и тебе не надо это изобретать самому.
То же самое с хайлатами — события, более важные, чем другие — это мог бы быть отдельный календарь, а стала специальная фича. Даже названия дней формально можно было бы делать как all-day event, но это противоестественно как-то.
Так что вот, сделать гибкую ортогональную систему это еще полдела. Второая половина это придумать, как этим пользоваться на самом деле, и научить этому пользователя.
Я, например, вдохновился их почтой и сделал себе что-то похожее в Fastmail (папки Inbox/Feed/Paper Trail). Мог ли я это сделать раньше? Конечно мог. Но сделал, только когда увидел у них.
Ну а про то что Календарь надо бы по-хорошему с туду-листом объединить я уже давно говорю.
Давайте расскажу про модерацию.
Канал постоянно спамят. Чтобы это побороть, я написал бота. Бот очень тупой: он сидит и смотрит кто что пишет.
Если человек пишет свое самое первое сообщение в канале и в нем есть картинка или ссылка — удаляется только это сообщение, к человеку никаких мер, может постить дальше.
Как только человек написал хотя бы один текстовый коммент, он попадает в белый список и дальше может постить все что угодно.
Этих простых мер достаточно, чтобы отсечь 99% процентов спама.
Все это коммуницируется через временные сообщения с меншном, т.е. если ты совершил ошибку, тебе об этом скажут и объяснят, что делать.
Второй критерий подозрительного сообщения — микс латиницы с кириллицей. Причем надо до четырех раз в одном слове, т.е. всякие dockerконтейнер не стриггерят, надо прям WЖSФ хотя бы. На это нормальные люди не должны попадаться вообще.
Баны раздаются только вручную и только когда человек переходит на личные оскорбления, меня или других комментаторов. Мнения можно высказывать свободно.
В оооооочень редких случаях бывают баны за неконструктив, но это надо неделями его постить в огромных количествах.
Happy shitposting!
Анимации. Анимации никогда не меняются.
Вообще идея анимаций была дать понять, что вообще происходит. В OS X например окно уезжало в док буквально (эффект «джинна») и ты знал, где его потом искать. Попап буквально вылезал из заголовка родительского окна, и ты знал, к чему он относится. Новый виджет, брошенный на дашборд, пускал волны, и ты знал, за что отдал столько денег Стивджобсу.
Потом выросло поколение веб девелоперов, посмотрело на это и сделало неправильные выводы. А именно, двигается — значит хорошо. И пошло пихать анимации куда получится. То есть буквально, искать ключи под фонарем. Делается легко и удобно на html/css/js framework of the week — значит хорошо. Не делается — ну сорян.
Например, представьте кнопку. В спокойном состоянии у нее нет фона, только надпись. Но когда наводишь на нее мышку, фон плавно зумится из центра и растягивается до границ кнопки. Что? Зачем? Почему? Какой физический процесс, даже потенциально, это воспроизводит? Что это помогает мне понять? А ничего. Просто делалось удобно. transform: scale(0) -> transform: scale(1). Спасибо, Гмейл!
Потом, кстати, и макос с айосом подтянулись. В какой-то версии они нарисовали segmented control (это такие радиокнопки, которые выглядят как физические радиокнопки: одна торчит, остальные вдавлены) с жирнючими прям тенями, чтобы не было сомнений что мы тут физический мир воспроизводим. А когда переключаешь на соседнюю, надпись остается на месте, а кнопка плавно едет вбок, прям под текстом.
Ну и что мы такое изобразили тут? Почему она едет? Почему надписи остаются на месте? Почему радиокнопки в слайдер превратились? Это вообще другой процесс же!
Еще всякие UX-дизайнеры в вакууме любят хвастаться таким в твиттере. Например, представьте верхнее меню в маке. Ты нажал, из него вывалилась простыня, вроде логично. Так вот чувак сделал прототип, где ты выбираешь соседний пункт, надписи тухнут, фон меню плавно едет и трансформируется на новое место, новые надписи появляются.
Что это? Зачем вообще? Что пытался сказать автор? Люди, кажется, недостаточно часто задаются этим вопросом. Сделал — уже хорошо. Если уж меню выпадает, то оно должно _выпадать_. Анимация должна показать, что вообще-то оно вон там наверху живет, просто его не всегда видно.
Мне кажется, одна из лакмусовых бумажек тут — если в ходе реализации у вас какие-то элементы испаряются в пустоту. Значит, вы не очень понимаете, где они находятся на самом деле, и пытаетесь их законное место как-то неправильно использовать.
Но это еще не конец! Дальше все стало еще хуже. SwiftUI добавил авто-анимации. Если я правильно понимаю, он просто сам пытается «догадаться» что переходит во что, и как-то это максимально тупо санимировать. Использовать — просто, оно считай что само работает. Результат — почти всегда брак. Вещи прячутся не туда, появляются не оттуда, превращаются друг в друга там, где это не нужно, ездят поверх и поперек всего, ломая любые оставшиеся иллюзии насчет логики интерфеса (что поверх чего и что внутри чего, да, это до сих пор важно, даже в плоских интрефейсах).
Например, недавно обсуждали, как пункт меню Beta Updates (стрелка, ведущая на экран с тогглом) превращался в панель «Вам пора обновиться» просто, кажется, потому, что стоял рядом, а после превращения вылезал снова на своем старом месте.
Жесть? По-моему жесть. Выход один — ни на кого не смотреть, делать хорошо самому и рассказывать.
Вот, рассказываю. С наступающим!
UPD: Вспомнил самый идиотский но характерный пример. Иногда когда делают листание страниц взад-вперед, например, в книге, и есть функция «Перейти на страницу по номеру», и ты вбиваешь например, с 500-й на 100-ую, и она листает одну страницу (!) вперед (!!!) и ты такой: ну все, спасибо, вся иллюзия разрушена. Не надо так.
Посмотрел тут на днях видосик про CGI vs Real. Ютуб предложил. Ну видосик и видосик, звезд с неба не хватает. Я честно говоря уже и забыл, в чем там был поинт. Но!
На следующий день какой-то чувак в твиттере постит кадр из него с едким комментарием, и ничего не упоминает, типа, и так должно быть понятно. Потом еще один, и еще. Все из разных пузырей.
И тут мне как-то не по себе стало. Я всю дорогу думал, что у Ютуба какая-то там персонализированная лента, что он по интересам мне что-то там подбирает. Что он что-то там про меня понимает, хоть и поверхностно. И это видео в принципе ложилось в интересы.
А оказалось, что это такой большой телевизор: видос вышел, и все его всем миром смотрят. А потом обсуждают. Какова вероятность, что из десятков тысяч видосов на ту же тему несколько человек из моего круга посмотрят один и тот же в один и тот же день? Да нулевая.
В общем, добро пожаловать в телевизор. Не переключайте канал.
Господи, как же хорош Мастодон. Решил я транслировать посты из Грампи в него. Пошел, завел акк, зашел в профиль, скопировал ключ, вуаля. АПИшечка — вот пожалуйста. Пост, репост, картинки залить. Можно редактировать посты! Еще и лента хронологическая.
Просто такое свежее ощущение, когда платформа не ебет тебе мозги, а честно все делает и дает, прямолинейно. Так странно действительно получать то, чего ожидаешь, а не читать пространные объяснения, почему ты не должен этого хотеть, и почему должен сначала продать им свою душу.
Немножко говорит о временах, если даже такой прямой и простой вещи радуешься, как ребенок.
Гугл там выкатил апдейт в Хроме, который они продают под соусом «чтобы рекламодатели за вами слишком сильно не следили, мы им выдадим ваш обезличенный рекламный профайл, основанный на вашей истории». Что конечно можно попытаться продать как «new privacy feature», но на самом деле это «в дополнение к тому, как вас палят рекламодатели, мы им еще будем сливать вашу историю посещений, к которой у них раньше доступа не было». Теперь официально, Хром — браузер-крыса.
Я сам переехал на ФФ лет пять назад, когда Хром начал принудительно логинить тебя в Гугл-сервисы из аккаунта браузера и наоборот. По-моему, когда браузер начинает лезть в контент сайтов, которые он показывает, это уже очень нездоровая хуйня и звоночек. Контент отдельно, машина для его показа — отдельно. А Файрфокс очень приятный оказался, ни разу не пожалел.
Не используйте Хром. Сафари, ФФ, Эдж, Брейв, в общем что угодно, что не производится компанией, зарабатывающей на рекламе.
Но вообще интересно, конечно, когда их уже испорченная репутация начнет хоть как-то на продажах отражаться. Надеюсь что скоро, нельзя же бесконечно пиздеть своим пользователям, особенно так нагло.
Нашел на Хакер Ньюз обсуждение Грампи опять, а там люди радуются нашей пагинации. Мелочь, а приятно.
Обычно же как? Посты в блогах идут в обратном хронологическом порядке, а страницы в прямом. Т.е. самый последний пост ты видишь на первой странице, одинадцатый самый новый на условно второй, а самый старый пост на странице 126, она же последняя (пока).
Проблема? Ну содержание страниц плывет. Написал новый пост? Он попал на первую, а десятый пост уехал на вторую страницу. Т.е. вторая страница показывала 11-20 посты (считая с конца), а теперь показывает с 10-го по 19-ый. Как-то, знаете, некомфортно. Ни ссылку нормально не дать, ни в закладки положить, ни из истории перейти, ни рефреш не сделать. Как книга, в которой постоянно дописывают и вклеивают страницы в начало, а потом перенумеровывают вообще все.
Ну вот а на Грампи наоборот. Самый старый пост на первой странице. Был в момент публикации и будет там всегда. Одинадцатый самый старый — на второй. Текущий, он же последний — на 137-й. Когда еще десяток напишем, они попадут на 138-ую, а текущий последний как на 137-й был, так на ней и останется.
Красота? Красота. Если честно, это настолько естественно, что я реально не понимаю, как кто-то мог придумать и сделать по-другому. И тем не менее, мы живем в мире плавающих страниц. Потому что так SQL программистам проще было писать. Привет
UPD: Судя по реакциям, в посте стоит упомянуть, что нововведение касается только нумерации страниц и что при входе ты видишь сначала последнюю страницу. А то многие (и я в том числе) явно подумали, что пользователь при входе видит первую страницу со старым контентом, а чтобы до нового добраться - надо перейти на последнюю
Купил тут пульт, он пришел без батареек, и крышка у него так дебильно открывается, что я минут 20 провозился, включая скачивание инструкции и использование ножа. Что, нельзя было как у всех сделать? Вроде давно решенная проблема, минусов никаких, зачем мудрить?
Или скачивали мы тут файл. В письме слылка на WeTransfer, так как файл большой. И там начинается: открываешь, а скачивание не начинается, зато грузится тяжелая страничка, начинают показывать фотки каких-то людей и природы из путешествий (почему?), жаваскрипт рисует красивую анимацию рядом со словом «подготавливаю файлы». Чего там подготавливать, ссылку давай? Ну и рефреш, понятно, не работает, зато работает нажать ссылку из письма еще раз.
Ну или кроп картинок, особенно с ML. А ведь можно было просто не кропать!
Или кастомный скролл. Или кастомный зум. Или контролы с таким кастомным дизайном, что их или не видно, или за что-то другое принимаешь. Или, прости господи, веб воркеры.
Все эти примеры объединяет одно: было бы гораздо лучше, если сделали как у всех. Просто. Понятно. Ожидаемо. Никаких минусов. Все счастливы. Дешево. Давно решенные проблемы.
Короче, прием: сделайте как у всех и не выебывайтесь.
UPD: Под вебворкерами имелись в виду сервис воркеры. Вебворкеры просто редко нужны и плохо сделаны, а вот сервис активно вредят
Слушал подкаст с создателями Readwise, и они такие: «мы решили, что наша миссия будет улучшить чтение на порядок. Как улучшить на порядок? Мы разбили чтение на три стадии: до чтения, в процессе и после. Если мы каждую стадию улучшим в 2 раза, в итоге получится 2^3 = 8 (вот тут я реально порадовался за ребят, видно, технически подкованные — прим. автора канала), а это округляется по 10».
И в общем я вот чего не понимаю. Какой смысл в таких планах? Что это за план — в два раза? А если выйдет в три, что делать? Или полтора? Или вообще ухудшишь? Как вообще планировать эффективность изобретения, которого еще нет? Ты же не знаешь, что именно у тебя получится придумать. Это как планировать изобрести непромокаемый порох.
Ну то есть я понимаю, звучит красиво. И, наверное, не очень внимательные венчурные капиталисты могут спросонья перепутать и решить, что они уже в 10 раз все улучшили, а не только планируют. На это, что ли, расчет? У вас есть цифры? Да. Конкретные? Вполне. 10 раз. А то, что мы их сами придумали, ну кого это волнует, да?
Кстати, я планирую увеличить количество подписчиков канала в 10 раз. В два раза в сентябре, в два в октябре и два в декабре. В ноябре не планирую, чтобы аккуратно под Новый год подвести. Следите за новостями!
У меня дома к столу прикручен фотоаппарат, потому что, ну, он у меня уже был, он умеет работать как веб-камера, так что почему бы и нет? И микрофон тоже стоит, ему сто лет, но раз есть, почему бы моим собеседникам в скайпе не слышать/видеть меня в хорошем качестве?
Ну и в общем каждый, кто приходит в гости или даже на секунду и видит этот «сетап», сразу загорается интересом: «Что делаешь? Что записываешь? Где стримишь?».
И меня такой всплеск интереса очень удивляет. Типа, ты со мной тридцать минут разговаривал и особо интересно не было. А камеру увидел и понеслось.
Как будто подкастер это какая-то уважаемая профессия, ей богу.
Еще один небольшой доеб. Я периодически пользуюсь Гугл Переводчиком, и в основном чтобы переводить между тремя языками: русским, английским и немецким. Иногда попадает какое-нибудь залетное европейское слово или там древнегреческий или японский, но оооочень редко.
Так вот, в интерфейсе у Гугла вынесены как раз три языка для «быстрого доступа». Казалось бы, идеально? Неееет, там постоянно какая-то хуйня! То хорватский, то болгарский, то исландский. Хотя казалось бы, ну Гугл, вытащи уже свой AI из жопы и просто по частоте попробуй угадать, что я скорее всего переводить буду.
Тот случай, когда не надо быть умным. Многомиллиардная компания, которая знает раньше меня, когда у меня начнется насморк или месячные, не может сообразить, что если я никогда не переводил с Суахили, то скорее всего в ближайшее время и не начну. Или они рекламируют языки народов мира так?
Второй доеб в том, что когда я нажимаю Detect language (потому что эта кнопка вынесена и не надо в меню из ста (буквально ста, да) пунктов лезть), то он врубает перевод типа Русский → Русский или English → English. Хотя казалось бы, сколько инженеров надо иметь, чтобы сообразить, что такие переводы не нужны примерно никогда и _любой_ наугад выбранный вариант был бы лучше.
Третий доеб это, конечно, что кнопка Detect language не выбрана по-умолчанию. Вроде очевидно, не? Причем он все равно определяет язык и даже пишет об этом, но вкладку не меняет.
Ну и четвертый что он не дает в поле просто писать (по крайней мере на латинице если выбран русский). Типа, сначала выбери, а потом пиши. Люди так не работают! «Сейчас я буду переводить с немецкого, дай подумать, какую фразу». Нет, люди работают «Фраза у меня уже есть, переведи ее с немецкого». Объект, потом глагол. Кстати, команды Vim совершают ту же ошибку.
inb4 пользуйся DeepL, знаю, знаю
Основная идея цифровизации всего — кино там, музыки, текстов — в том, что байты не стареют. Оцифровал один раз и оно навсегда останется точно таким же.
Однако почему-то на компьютеры это правило не действует. Возился сегодня с проектом, который не трогал год. Просто открыл и попробовал собрать. На CI. И без удивления узнал (я пессимист), что конечно все развалилось. Не сильно, но подпорки ставить приходится. Причем даже то, что казалось бы должно оставаться иммутабельным, например apt-get пакеты под Убунту 20.04.
Вот и получается, что байты и стареют, и жирнеют. Господи, как же я люблю эту работу!
Ладно, последнее (я надеюсь). Когда запускаешь игру, появляется три (!) промежуточных окошка, каждое на одну-две секунды. Пользователю ничего делать не надо. Одно из окошек терминальное.
Так что давайте, расскажите мне, что мы не живем на самом деле на руинах великой когда-то цивилизации, не потеряли необходимые знания (не можем повтороить) и не склеиваем палки говном чтобы то что досталось нам от предков хоть как-то еще немного продержалось.