Я уже писал, что мне нравятся кросс-платформенные приложения, и это до сих пор так, по крайней мере идея нравится.
Но во всем нужно знать меру. Пока я писал Skija, и сейчас когда пишу Humble UI, меня постоянно спрашивают: а можно их как-то в вебе запустить? Очень бы хотелось. Может можно что-то придумать?
Но ведь это бред! Есть три платформы — телефон, десктоп и веб. Внутри них есть несущественные отличия и в целом можно писать кросс-платформу, скажем, Винда-Мак или Айфон-Андроид.
Но между ними сама логика построения интерфейса отличается настолько, что никакого смысла что-то там шарить или переиспользовать нет. Просто примитивы другие, контролы другие, экраны строятся по-разному, выглядят по-разному и открываются по-разному. Технически тоже: возможности разные, технологии принципиально разные, модель исполнения разная.
Поэтому каждый раз, когда-то кто заявляет, что притащил свой мобильный фреймворк в веб или десктопный на мобилку или еще что-то, а особенно на все три, я кручу пальцем у виска. НАФИГА? Вот просто, нафига? Чтобы что?
Хорошего интерфейса таким образом не сделаешь. Инструменты, которые сразу создавались «под веб», явно дадут лучший результат для веба, чем мобильные, но портированные. То есть все это максимум как выебон интересно. Вы можете себе представить, чтобы кто-то в здравом уме выбрал Catalyst для создания десктоп-приложения или Флаттер для веба — ну это сильно ударенным головой надо быть, не?
Мы когда-то использовали в JetBrains библиотеку winit для управления окнами. Там чел зашел с очень амбициозной целью — создать одну общую библиотеку, конечно же на Rust, интеграции с платформой для всего: и мобилок, и веба, и десктопа. Создал, посмотрел, что хуйня получилась, и убежал куда-то. Ну просто потому что нет там общей абстракции, нечего там искать, ничего, кроме компромиссов не найдешь.
Я вот сейчас пользуюсь TVTime для трекинга сериалов. У них было когда-то какое-то веб-приложение, не восторг, но работало. Но недавно они переписали его на Flutter for Web и это прям беда. Тормозит как собака, весит 16 Мб на страничку, жесты все эти мобильные не в тему, анимации в 10 FPS.
Про то, насколько хуевыми выходят мобильные приложения с Айфона, притащенные на Мак через Каталист, я думаю, и рассказывать не надо.
Короче, вебу — вебово, мобилке — мобилково, десктопу — десктопово. И не надо их миксовать. Все равно не получится. Пробовали.
Ох, про столько всего надо поговорить. Спросили про Докер, что мне в нем не нравится?
Не нравится, что это такой белый флаг, признание поражения. Вот есть у нас системы, которые срут по всему диску и потом хрен найдешь/воспроизведешь. Давайте вместо того, чтобы это чинить, просто засунем это все в несколькогигабайтную виртуалку и будем ее распространять. Джава вот например не срет, и мне никогда в жизни в голову не приходило докер для нее брать.
Не нравится неэффективность. Что по сути с каждым образом распространяется целый компьютер, и что качаются они гигабайтами, и в итоге компьютер страдает, потому что мы просто не смогли все нужное в одну папку положить.
Не нравится думать о количестве слоев VM, когда запускаешь докер на каком-нибудь виртуализированном хостинге. Три это уже как-то много.
Не нравится, что Dockerfile это даже близко не лок-файл, и теми самыми reproducible builds тут даже и не пахнет. То есть ты собрал образ один раз и потом трясешься именно над этим образом, потому что второй раз с некоторой долей вероятности собрать его уже не получится (да, было лично со мной).
Не нравится, что там какая-то ебанина с сетью и файлами, и что вообще для них нужно что-то специально делать. Вот я запустил обычный процесс на машине, он видит файлы и сеть, все работает. А в докере есть внутренние файлы, внешние надо прокидывать, и сеть не сеть, короче, создали сложность на ровном месте и радуются.
Не нравится, что это worse is better решение, которое, как всегда бывает, победило, отняв тем самым силы у движения в правильную сторону, над которым никто не работает.
Короче непонятно, чем Докер лучше условного бинарника, который можно скопировать по ssh и запустить. А, вы так не умеете? Сорян, skill issue.
А уж о microkernels я вообще молчу. Вот это инновации. Вот это мечта.
А Докер — для людей, которых порядок вообще не очень волнует. У них на рабочем столе прямо во время работы шесть чашек, три блокнота, кактусы, бумажки, кот, недоеденная пицца, сломанная клавиатура, паяльник, скакалка, лягушка и еще миллион вещей и им норм. И иконки на десктопе.
UPD: @dmitry_vsl пишет: Еще докер легализовал пулл-деплой, когда сервер сам что-то скачивает. Раньше это считалось зашкваром
Еще одна вещь в Расте, которая мне кажется не очень интутивно сделана, это что присваивание это прям операция, с семантикой.
То есть во всех остальных языках мы привыкли, что если написать var b = a
, то просто создастся еще один алиас для a
, и можно использовать любой из них. В скомпилированном коде может и не будет вообще ничего.
В Расте же не так:
let a = Clazz::new(42);
let b = a;
// все, `а` проебалась
let b = a + 1;
// почему `a` не проебалась?
a
не доставали ниоткуда, а в b
положили совсем другое.=
поменяло свою семантику вот здесь. Хотя написано одинаково, тот же знак =
.
let a = Clazz::new(42);
f(a);
// `а` проебалась опять!
let a = Clazz::new(42);
f(move a);
f(a);
f(a);
f(a);
Сегодня наброса не будет, вместо него вопрос в духе старого доброго lazyweb:
вот у меня айфон, и часто, когда я его блокирую, у него нажимается буква q, a или 1. То есть если фокус стоял в поле ввода, я потом захожу — а там в конце одна буква дописана.
Я уже отключил всякое «включаться от поднятия» и «включаться по дабл-тапу», то есть он теперь в принципе ни на что реагировать не должен, пока я сам на питание не нажму. Но проблема не ушла.
Случается где-то раз в два-три дня. Идеи?
UPD: Похоже я дежру телефон так что пока большой палец тянется к кнопке безымянный/мизинец залазит на экран. Тот факт что выклается телефон не сразу, а с задержкой на полсекунды тоже, видимо, не помогает
Прочитал твит как чувак жалуется Верселу (js-хостер) что у них счет на две штуки баксов в месяц выходит.
(оффтоп: там потом какая-то странная математика начинается, и две штуки в месяц превращаются в 40 штук в год (как?), а потом он говорит «мы щас еще добавим и вообще 100К получится, вы офигели там все что ли»? Что конечно интересный риторический прием.)
Но смысл не меняется. Он смотрит на статьи своих затрат и прикидывает, что бы и куда перенести, чтобы сэкономить.
И я вот что подумал. Программирование и так сложно. Ну типа все правильно сделать, собрать, оттестировать. Просто чтобы работало корректно уже непросто. Потом надо сделать чтобы быстро. Это вдвойне непросто.
А тут получается, что помимо того чтобы знать как делать тебе еще надо крутиться вокруг совершенно искусственных, с потолка взятых ограничений, которые придумал хостер типа брать доллар за вызов функции (условно). Типа, вот тебе игрушки, но ты ими не играй, а то дорого что-то выходит.
Зачем себя так мучать, непонятно.
P.S. Там еще ответ от представителя хостера смешной:
There’s more drastic cost savings (e.g. turning off prefetching entirely, switching to slower data transfer speeds for assets) but you would want to validate the performance/conversion impact (don’t want to hurt your business).
То есть их фреймворк префетчит ссылки, о которых их никто не просил, эти фетчи считаются в стоимость, и клиента за них биллят. Очень удобно! Но вы, говорит, трижды подумайте, прежде чем это отключать, а то мало ли, мы о ВАШЕМ бизнесе беспокоимся.
Знаете что, я всю жизнь писал максимум на vanilla.js и веб терпеть не мог, а тут попробовал TypeScript и мне понравилось!
Типы придумываешь, ошибки с ними чинишь, все красненькое постоянно, билд настраиваешь, компиляторы выбираешь, экстеншны в vs code, линтеры — не до скуки. Система типов, опять же, сильная, такого можно нахуевертить — закачаешься! Все как у взрослых.
Программу пока до конца так и не скомпилял, но процесс очень нравится. Думаю выбросить плохо специфицированную Кложу и перейти на жестко специфицированный Тайпскрипт. Все-таки не молодой уже, нуллы по углам ловить, хочется как-то без них.
Хочется стабильности, чтобы один раз разобрался — и до конца жизни уже.
CEO Linear-а написал пост о важности редизайнов. Мол, долги накапливаются, фичи добавляются, и раз в два-три года надо бы делать редизайн.
Я кстати согласен с предпосылками, но не согласен с выводами: ну накопились долги, ну возьми и вычисти их. Нафига при этом кнопки-то перекрашивать? То есть может и есть причина, но какая-то другая, одно из другого никак не следует.
Ответ, понятно, как и в любой большой корпорации: мы наняли много людей (дизайнеров в данном случае) и им всем надо что-то делать.
Например, если нанять много программистов, они напишут вам много кода. Потому что они ничего больше и не умеют, так-то. Так что если вам надо мало кода, не нанимайте много программистов.
Ну и в общем когда у вас сидит 15 лбов без дела, то они могут лендинг хоть раз в неделю перерисовывать, но в конечном итоге это и мертвого заебет. А общий редизайн проект долгий, и дизайнеры устанут, и юзеры не сильно взвоют. Отсюда и рекомендуемая частота.
Мне нравится что чел в посте сам пишет: логически оправдать редизайн очень сложно. Плюсов никто никогда не видел и не мерял. Да-да, в посте про важность редизайнов, так и пишет. Но потом такой: но все-таки надо. Надо. Поверьте мне, надо. Ну поверьте. Ну пожалуйста. Ну что вам жалко что ли?
Ну то есть понимаете, да? Если бы хорошая причина делать редизайн была, он бы ее привел. А он не привел. То есть, как бы... Того. Этого.
Лукавит, получается.
Как работает человеческая психология. Кто-то процитировал в Твиттере мою любимую индейскую поговорку: Лошадь сдохла — слезь.
Естественно, ее встретили на ура. Мощная, едкая, самоочевидная, и тем не менее позволяет тебе самоутвердиться за счет воображаемых неудачников, которые зачем-то все еще сидят на мертвой лошади. Но я-то не такой!
Тогда я рассказал собственную историю, как я слазил с мертвых лошадей. Как бросил Хром и переехал на Файрфокс. Как искал замену Дропбоксу и нашел Syncthing. Про переезд с поиска Гугла на DuckDuckGo, с Гмейла на Фастмейл. С VS Code на Sublime Text. С Твиттера на Мастодон.
Казалось бы, ровно та же ситуация. Продукт сговнился — идешь и ищещь следующий. Самое рациональное, что можно сделать.
Но не тут то было. Как только я начал это правило применять на практике, люди очень удивились. Вот прямые цитаты из реплаев:
> Но зачем?
> А зачем? Прост, чтоб движ был?
> Зачем с чего-то слезать?
> Когда главное "процесс", а не результат
> Больше похоже на то, как у меня сын, когда был совсем мелкий, года 3-4, бегал по площадке и катался то на одних качелях, то на других, то на третьих. Вы просто ещё и гордитесь этим.
> Я понимаю, когда возникает причина на что-то перелезть, но вот так целенаправленно с чего-то слезать...
> Для чего вы с чего-то слезли? Ощущение, что вы и сами не знаете, даже вопросы задаёте "куда?" "как?".
Один чел настолько несогласился, что попросил меня его забанить (ага, я сам удивился, но мне не сложно).
В общем, с практическим применением правила у людей вопросы. Хотя казалось бы — ну очевидно же — сдохла лошадь — нафига продолжать на ней сидеть?
Наверное, в этом и сила поговорки. Всем она нравится, но если бы все ей _на самом деле_ следовали, то не было бы так точно и едко.
Произошел ChatGPT момент. Спросил, значится, в Твиттере, помощи с непонятными моментами неравенств Белла (шутники, давайте про Сумерки пошутите, но знайте, вы не первые), и несколько человек посоветовало: братишка, чего ты мучаешься, спроси ЧатГПТ.
Что как бы довольно оскорбительно, потому что подразумевает, что я глупее ЧатГПТ и не могу понять какие-то моменты, которые она может. Вдвойне оскорбительно, учитывая, что она вообще ничего понять не может.
Ну пишу, значит: чел, ты издеваешься, ЧатГПТ не знает, почему у стола четыре ножки (пример из вчерашних комментов, спасибо за него), а ты хочешь, чтобы я ее про квантовую механику спрашивал.
Но чел не унимался. Он пошел и сросил про стол. ЧатГПТ отвечает:
> Это делает стол устойчивым к небольшим неровностям пола, так как четыре точки опоры легче сбалансировать, чем три или две.
И чел показывает это мне с комментарием: «Вполне себе достойный ответ 🤔»
Но он неправильный! Это неверный ответ! Это глупость, ложь, бред. Три точки легче сбалансировать, три точки устойчивее к неровностям, а две сбалансировать вообще невозможно.
Кажется, люди забыли, что ЧатГПТ это не какой-то интеллектуальный собеседник, а такой довольно хуевый поисковик по довольно усредненному мнению обывателей в интернете. Оно не способно на логические рассуждения, ответы на вопросы, выводы, отсеивание правды от лжи. Причем даже на уровне детского сада, как в примере со столом.
Но главный вопрос: человек, который прочитал ответ и показал его мне, он что, тоже, получается, ЧатГПТ?
Кстати, консультация про неравенства все еще нужна. Но именно глубокая, не поверхностная, поверхностно-то все понятно.
Сейчас красоту покажу.
Одна из самых логичных вещей в Кложе — что словари (map/dict/associative array) это еще и функции. Типа, и то и то отображает аргумент в значение, так зачем их различать?
Там потом из этого много удобных шняг вытекает еще, но даже на самом базовом уровне это жутко логично.
В условном js/питоне можно написать dict[key]
, но зачем, если можно с тем же успехом было бы писать dict(key)
?
Вот и я думаю, что незачем.
Очень странный фильм посмотрел. Ну как фильм, сериал. Мистер и миссис Смиты.
Сначала я думал: да ну, фигня, после того фильма, где Даг Лайман, Джоли, Питт, смысл переделывать, лучше уже не будет. Плюс герои весь трейлер сонные какие-то ходили.
Потом включил и опа, а там режиссер Хиро Мурай, режиссер Атланты. Интересно, может какая-то задумка все-таки есть.
Ну и да, оказалось, что сравнение с фильмом ему только вредит: тут все другое и про другое, это такой меланхоличный мамблкор про двух грустных одиноких людей. Окей, попробуем.
Попробовал. Красиво. Тонко. Интересно. Но есть проблема.
Смотрите: наемные убийцы в кино вообще сомнительная тема. Они держатся разве что на том, что тебя просят сильно не думать, кого и как они убивают, чтобы в этой недосказанности оставалась хоть какая-то возмозможность их за людей считать. Они или убегают от кого-то сами весь фильм, или убивают ну совсем уж карикатурных злодеев, или просто этот момент оставляют за кадром/в прошлом. Вспомните, когда Джеймс Бонд последний раз кого-то не из-за самозащиты убивал?
Взамен тебя очень усиленно развлекают: трюками, погонями, взрывами, гаджетами, чтобы не дай бог у тебя ни в какой момент не возникла мысль: вообще-то этот чел за деньги горла режет и затылки дырявит.
Ну вот, а теперь мистер и миссис Смиты. Идея в том, чтобы показать простую, ежедневную жизнь двух людей в очень высоком разрешении. Как они берут кофе, держатся за руки, неловко переглядываются, желают друг другу спокойной ночи, едят бейгели, кормят кота, ездят на метро. Во всех подробностях. Максимально честно. В любой другой ситуации я был бы только за, обожаю такую фигню.
Но при этом высокий концепт тоже оставили: они в фоне постоянно кого-то карикатурно убивают, взрывают, душат, путешествуют по миру, покупают модную одежду, машины и недвижимость.
И это совсем не клеится друг с другом. Один концепт душит другой. Если вы просите меня задуматься, каково это на самом деле, по-настоящему, как выглядит ежедневная жизнь наемных убийц, то вы не можете замести под ковер факт того, что они регулярно убивают других людей за деньги. Это просто все ломает. Или крестик, или трусы.
Хотите быть честными? Ну тогда давайте наверное не шутить про убийства? Ой, я такой весь тонко чувствующий, сейчас только трупу ноги сломаю и дальше продолжим обсуждать фильмы Тарковского.
Хотите про убийц? Тогда отвлекайте, развлекайте меня, уведите это как можно дальше от реалистичности, потому что иначе ну невозможно на это смотреть же.
В общем рекомендую ли я? Да, но не Мистера и миссис Смитов, а Атланту. Вот уж на что великий сериал, у которого и с концепцией, и с моралью все в порядке.
Прочитал в твиттере тираду о том, что алгоритмы испортили интернтет. Типа, вместо того, чтобы делать классный контент, но редко, люди работают на количество, потому что если ты регулярно не постишь, алгоритм тебя сольет.
И я конечно не очень разбираюсь, но где-то слышал, что алгоритму на самом деле более-менее пофиг на регулярность. Пости хоть раз в месяц, хоть раз в год, он будет продвигать тебя с одинаковой силой.
Что на самом деле происходит, так это что если выложить 100 постов и каждый посмотрит, скажем, 500 человек, то это уже пятьдесят тычяч, а если выложить один особо качественный и его посмотрит, скажем, в 10 раз больше среднего, то это все равно всего пять тысяч.
То есть алгоритм-то тут и ни при чем. Люди (люди?) — криейторы, инфлюенсеры, влоггеры — сами решили, что им цифры важнее качества материала, и получили то что получили. А винят алгоритм, потому что не может же любимый блоггер просто оказаться вдруг тщеславным чудаком.
Похожую историю слышал и про призывы «лайк, подписка, колокольчик», что они совсем не работают, а народ повторяет их просто потому, что так делают другие.
Так и живем.
Слушайте, в прошлый раз кто-то заметил, как я мучаюсь с редактированием кода в сообщениях в Телеге, передал разработчикам и они починили. Я не могу найти кто!
Но пожалуйста передайте еще два бага:
1. Когда вставляешь ссылку, у нее рисуется карточка Preview. Так вот текст в этой карточке масштабируется с изменением размера шрифта в настройках, а line-height — нет. Короче, если сделать шрифт побольше, строчки слипаются. В самих сообщениях все нормально.
2. В режиме бабблов, если запостить кусок кода, из-за подсветки на темно-синем фоне он абсолютно не читается.
Все на Telegram for macOS.
Спасибо!
К сожалению, я сам не могу сделать все, что потенциально хотел бы, но зато я могу написать о своих идеях в надежде, что у кого-то другого дойдут руки, а я потом этим воспользуюсь.
Итак, сегодняшний пост для тех, кто собирается писать свою операционную систему с нуля. Я знаю, я скромный, о многом не прошу.
Идея такая: пользовательская папка должна жить по адресу /
(в корне то есть), я вся система ютиться где-нибудь в неудобной жопе типа /.system
.
Потому что — ну системе какая разница? Никакой. А пользователю все эти /Users/tonsky
или, простите, C:/Documents and Settings
, это что вообще такое?
Плюс, когда система живет в /
, рут в /root
, а юзера (меня!) затолкали в /home/tonsky
, это невольно коммуницирует, кого тут считают главным (не меня).
Сейчас сюда придут люди, которые начнут рассказывать про «в системе обязательно должно быть несколько пользователей» и без этого абсолютно, никак невозможно жить.
На что я отвечу: айфон видели? Сколько там пользователей? Помешало это его успеху? Ну вот.
В общем, хоум дир должен быть корнем. Я сказал.
Каждый раз, когда я думаю о том, как мы пишем код, и как всякие артефакты вокруг него разбросаны по разным сервисам (документация, баги, история изменений, архитектурные решения, обсуждения и т.д.), естественным образом прихожу к мысли, как круто было бы это все собрать вместе.
Получилась бы такая утопия, где все счастливы, все что тебе нужно сразу под рукой и код пишется со скоростью света. Про это и в подкасте про Zed говорили, они не просто хотят телефон в редактор встроить, они именно что хотят все общение про код в редакторе собрать (как это будет работать непонятно пока ни мне, ни им).
В общем, каждый раз когда я про это начинаю думать и возбуждаюсь, вспоминаю, что в 80-х Кнут уже придумал литературное программирование, которое было той самой утопией. И знаете что? Всем оказалось пофиг, потому что, оказывается, никто не хотел быть писателем.
Не, мы-то с Кнутом писать, конечно, любим, как видно по этому каналу. Но мы исключение. А люди в основной своей массе пытаются приспособить AI, чтобы 40 знаков комментария к коммиту не писать.
Так что все. Занавес. Я могу дать вам более лучшие инструменты, но вот более лучших людей у меня для вас нет. Расходимся.
Пока мы далеко не ушли, есть еще такое вот мнение: вы думали Линукс это операционная система, а это среда разработки, сборки и запуска C-программ. Если это понять, многие странности встанут на свое место.
Ну то есть с одной стороны Линукс вроде бы рад любому языку и может запускать что угодно, а с другой все эти папки, пути, пакетные менеджеры, поиск зависимостей, линковка, маны, дефолты, куча всего организовано так, чтобы было удобно собирать и исполнять именно С-код. Не просто «код на любом языке», а именно что C.
Все остальное по остаточному принципу получилось, т.к. другие языки написаны на С, то получается что их тоже исполнять можно, но не то чтобы для них там что-то специальное создавалось или подкручивалось.
Если подумать, это самый сложный, запутанный и обросший уже не то что мхом, а целым лесом случай протекания абстракций из языка в ОС и из ОС в язык.
Но вы, конечно, не согласитесь.
Ходил не так уже и недавно на митап, и там был пятиминутный рассказ про Nix. Как я себе Nix представлял: фиксируешь каждую версию каждой зависимости. Ставишь разные версии в разные папки. Потом, когда поработать нужно, говоришь: дай мне то такой-то версии, а это такой-то. И он тебе из этих папок что нужно собирает.
Ну вот. Прихожу на доклад. А там какой-то уже свой язык программирования придумали, внутри циклы, ветвления, короче прям полноценная программа, и чел что-то обещает из серии что «не так уж это и больно, когда привыкнешь» и «скоро это все заработает».
Если честно, в сравнении с этим даже Докер кажется хорошей идеей. А вы знаете как я не люблю Докер.
Откуда вообще там сложность берется-то? И разве возможность программировать и что-то там настраивать не ломает идею иммутабельности всего?
Мне нравится как многие современные тренды это по сути «просто не делай хуйни».
Например, движение local-first. Просто храни свои данные локально, а не фетчи их каждый раз сервера. Казалось бы, ну какой идиот будет делать миллион запросов на то, что и так уже локально есть. Однако же целое движение понадобилось, чтобы людей образумить. И то, оно еще контр-культурным считается.
Или server-side рендеринг. Ну типа нахуя передавать JSON, а потом его рендерить, если можно сразу отрендерить? Зачем придумывать еще один промежуточный формат? Однако тоже целое движение, и люди даже спорят о плюсах и минусах.
Или reproducible builds. Для меня это попадает в категорию «работающие программы». Как он может быть не-reproducible-то? Давайте движение за «программа должна запускаться и работать» организуем еще.
Какой-то чел в твиттере гуглил оленя для референса, а ему вывалило сгенерированное AI говно с очень странно устроенными, как водится, ногами (были бы у оленей руки — он бы и руки испортил).
Я сам недавно гуглил «креативная типографика», чтобы что-то там доказать в споре, и из 30 результатов как минимум 10 были сгенерированным говном (не надо притворяться, что его не видно. Еще как видно).
То есть мы УЖЕ живем в мире, где нормальные результаты надо фильтровать от говна, которое обучено на когда-то нормальных результатах, а теперь ими прикидывается. Новые поколения нейросетей, понятно, пойдут обучаться на своем же выхлопе и вот пожалуйста, замкнутый feedback loop и цифровая сингулярность.
Роботы будут общаться с роботами, генерить контент, сами же его пожирать, строить по нему индексы и искать. Лет через 50 все уже забудут, как выглядят настоящие олени или там озера, забудут, сколько ног у птицы и как крыло прикреплено к самолету. Люди, понятно, уйдут в подполье, будут писать тексты и рисовать картинки на настоящей бумаге, а в интернет ходить будут только сумасшедшие. Настоящий, ручной контент будет цениться на вес золота, его надо будет добывать особо сложными путями, а в сеть его принципиально пускать не будут, чтобы нейросети его не переврали.
И вот тогда-то наконец заживем!
В последние годы в глобальной сети интернет набирает популярность такое явление как ховер.
И ладно еще когда элементы подсвечиваются под мышкой, это я еще хотя бы могу понять — мы променяли визуальные аффордансы на такое вот «ощупывание» интерфейса на интерактивность.
Чуть менее приятно, когда элементы по ховеру появляются. У меня есть поговорка: юзер не может нажать на контрол, если он этот контрол не видит. Казалось бы. Но тем не менее. Целиться в невидимые контролы тоже такое себе удовольствие.
Но самая жопа — это когда по ховеру вообще все нахуй меняется. Меню вываливается, картинка разворачивается, описание рисуется поверх и так далее.
Очень любят такое интернет-магазины. Называется «быстрый просмотр». Типа, наши страницы грузятся так долго и так медленно, что вот мы способ по-быстрее придумали. А почему они грузятся медленно, га?
В принципе, когда тебе правда интересен товар, оно работает. Проблема в том, что когда не интересен, оно работает тоже! Ну и начинается история, что ты не можешь спокойно ни пролистать, ни до товара мышку довести, не триггернув при этом с десяток ненужных ховеров по пути. Вот кому это удобно, а?
Даже Эпл, когда-то эталон хорошего дизайна и вкуса, влепил себе на сайте меню по ховеру. То есть едешь ты мышкой сверху вниз — хуяк, меню развернулось на пол-экрана. Веди теперь в самый дальний край, чтобы эта хуйня пропала. И так раз двадацть, пока сидишь на сайте. Причем оно специально сделано горизонтальной полосой поперек экрана, чтобы путей обхода не было совсем. Хочешь не хочешь а пересечешь.
Алло, ребят, уберите правую руку со стола и посмотрите на свою мышь. Там спереди у нее, где провод, есть два прямоугольника. Вот если пальчиком на левый нажать, придавить слегка, то меню вылезет. А если не нажать — не вылезет. Клево придумано же, а? Почему не пользуетесь? Готовятся к безкнопочной мыши, не иначе.
Короче, право водить мышкой туда-сюда по всему сайту спокойно и без страха — базовое человеческое право. Как право на жизнь и на достоинство. Нехуй ваши ховеры везде пихать.
Произошел эксплойт xz, хорошее описание есть в канале Авва. Если коротко, чел два года мейнтейнил пакет, ждал возможности, засунул экплойт через autoconf, который давал доступ к удаленным машинам, а сотрудник микрософта заметил, что логин в систему по ssh стал занимать 800 мс вместо 300 мс и докопался до причин.
Это я все к чему? Учитесь программировать, ребят. Обидно, два года трудов на смарку только из-за того, что чел вовремя не заботал алгоритмы и/или многопоточку и не смог написать нормальный бэкдор.
Алгоритмы нужны, получается
Тут Гугл решил объединить два своих фреймворка: Ангуляр и Виз (Wiz, да, тоже впервые слышу). Вот что по этому поводу пишет один из разработчиков Ангуляра на Hacker News:
> The tldr; is that we see a lot of similar requirements from developers across Angular and Wiz, so we're looking for opportunities to reuse work. [...]
> Over time, we'll continue focusing on what's best for developers and incorporating the best from Wiz in Angular, and vice versa. At the end we can end up with one framework, or continue to coexist. [...]
> We're building infrastructure for these products rather than the products themselves.
Вроде нормально пишет, да? Ничего не забыл? Да если и забыл, скорее всего это было не так уж и важно.
Забыл он, конечно, юзера. Почему-то это стало таким общим местом: мы стараемся для разработчика, хотим понравиться разработчику, а что там за приложение в итоге получится, не так уж и важно. As long as we had fun.
Хотя вроде бы очевидно, что все это делается для пользователя, и оцениваться должно в первую очередь с точки зрения того, какая система получается, а не насколько разработчику было удобно.
Кого волнуют разработчики вообще? Пойду куплю молоко, но не то, которое вкуснее, а то, на котором фермерам было приятнее всего работать. Поеду на такси не кратчайшим маршрутом, а тем, где водителю приятнее всего будет проехать. Пойду не в тот ресторан, где вкусно кормят, а в тот, где на кухне приятный процесс организован.
Ну бред же?
Одна из моих проблем с Растом — это что он тебе все мозги вынет несущественной, по сути, ерундой. А именно ворнингами.
Казалось бы: ну не нужна мне эта вот переменная прямо сейчас, ну и пусть полежит, чего орать?
Закомментил строчку, и началось: ой, тут не присвоено теперь, тут результат проигнорирован, тут импорт лишний.
Девочка моя. Ты пойми. Мне насрать прямо сейчас. У меня вообще другим голова забита.
Если честно, мне даже перед пушем в продакшн насрать. Если ты такая умная, что можешь неиспользуемый импорт найти, почему тогда ты недостаточно умная, чтобы молча его проигнорировать и заткнуться? Зачем весь этот BDSM с играми: я вижу твою ошибку, а теперь иди и исправляй? Ну исправь сама, епт, если тебе так нужно.
Главное, поддашься бывает соблазну, уберешь импорт (все-таки вывод rustc ооооочень развесистый, и когда у тебя ошибки вперемешку с ворнингами, хрен разберешь, где что начинается и заканчивается), а через пять минут эта же сука тебе: ой, а это что за метод? Не знаю такого!
Короче, ворнинги — это игра в качество, а не настоящее качество. Мы не знаем, как проверить суть твоей программы, зато знаем, как доебаться до мелочей. Поэтому доебемся до того, до чего легче всего доебаться.
Как люди с ворнингами программируют — ума не приложу.
Ладно, минутка признаний. Одну вещь я никак не могу полюбить в языке Раст. Вот что возвращает это выражение?
let a = [1, 2, 3];
let res = a.iter().collect();
let res: Vec<i32> = a.iter().collect();
let res: HashSet<i32> = a.iter().collect();
let res: String = a.iter().collect();
fn test() -> Vec<i32> {
let a = [1, 2, 3];
let res = a.iter().collect();
return res;
}
let res = a.iter().collect::<Vec<i32>>();
.collect()
на интах умеет суммировать числа), а во-вторых что просто
a.iter().collect()
a.iter().map(|&x| x).collect();
Витя, про канал которого я вам как-то рассказывал, делился со мной когда-то вот какой гипотезой.
Почему в Гугле такой детсадовский дизайн? Все эти шапочки с пропеллером, бассейны с шарами, горки с этажа на этаж, цвета как в детском саду?
Его идея в том, что это чтобы инфантилизировать сотрудников. Чтобы они думали о себе как о детях, а о том, чтобы пойти основать собственную компанию не думали.
Мнения?
Я на самом деле очень скептически отосился к ML/AI. Типа, нас всех заменят, художники станут не нужны, программисты и подавно.
Но недавно подумал: а что, в принципе, как поисковик по всем накопленным знаниям человечества — нормально ведь? Особенно учитывая как Гугл сговнился, и если оно еще научится как-то банально группировать/кросс-референсить, что не бог весть какая задача, то и вообще нормально будет?
Типа, ну вот поиск по интернету, Wikipedia и затем StackOverflow тоже вроде новых знаний не порождают, но за счет того, что находятся на кончиках пальцев — огромная революция в способностях среднего человека. Ну вот будет еще один способ искать.
Я до сих пор скептически отношусь к их способностям генерировать новое. Вот эти все моменты плохо оговоренные, зазор между тем что реально предлагается и что люди хотят услышать. Когда кто-нибудь формулирует задачу, и ты ее читаешь и думаешь: ага, вот тут-то бы мозг бы и включить.
Но формулятор задачи не включает, а передает ее ChatGPT, и она тоже не включает (у нее нет), и в итоге фигня получается. Да, вот эти моменты хорошо бы людям научиться распознавать конечно.
Кстати, если вашу работу уже хорошо делает ChatGPT, у меня для вас очень плохие новости. И нет, они не про то, что ChatGPT достигла невиданных высот интеллекта. Проблема с другой стороны.
В общем, просто как усилятор ума, как будто есть что добавить к тому что уже есть? Даже звучит не очень тупо как будто.
Смотрел тут на выходных сериальчик с Amazon Prime, ну и подумал, че, подписка все равно есть, посмотрю легально.
Включаю. Для пущего погружение отключил субтитры. И чет диалоги норм-норм-хуяк-ничего не понятно. Ладно, один раз. Потом второй, третий. Че за дела? У меня английский G5, я должен британские фильмы без субтитров смотреть, а тут американщина, английский для начинающих.
Короче, оказалось, что добрый дядя Безос придумал мега-фичу: во время диалогов рандомно менять громкость. То есть буквально, слог громко, слог тихо. Может и в других местах тоже, но именно в диалогах заметно пиздец. Настолько, что непонятно, что говорят. Опции, чтобы отключить, нет конечно.
Фича, судя по всему, называется «адаптивная громкость». И это тот самый случай, когда просто если бы ничего не делали, было бы лучше. Зачем это? Для кого? Кому стало лучше? Даже если с точки зрения самого Амазона смотреть, забыть о пользователях, то какие метрики выросли? Куда потрачены деньги? Я и так уже добрый десяток часов потратил суммарно, чтобы отключить все «улучшения изображения» на телевизоре, так теперь приложения начали подсирать.
И это не первый мой опыт с Амазоном. Однажды захотел я в поезде сериальчик хотел посмотреть, скачал какое-то официальное десктопное говноприложение, у которого был офлайн-режим, скачал серии, так он их скачал в минимальном качестве. Такая вот награда за то, что решил все сделать легально.
Про то, что если пытаться смотреть стриминг на компе в браузере, ты будешь получать максимум 1080p без HDR, наверное, все и так знают, вроде Амазон даже не единственный, кто так делает.
Ну и последний гвоздь в крышку гроба — теперь у них в этой подписке есть реклама между сериями. Парам-пам-пам, пиу!
Короче, хотите хорошего сервиса — идите к пиратам. Вот уж люди никому мозги не ебут, а просто делают все на совесть. Любое качество, из любой страны и юрисдикции, на любом языке (а не только языке страны), переносимость, оффлайн, нет рекламы, нет «адаптивной громкости». Компьютеры могут быть офигенно удобными, надо только захотеть.
Тут пошла какая-то адовая мода на попапы. Типа, открываешь знакомую программу, а там какая-нибудь иконка в углу подсвечена и рядом попап на полэкрана, типа, смотрите, новая функция.
Почему так делать не нужно?
Во-первых, потому что это заплатка. Ваши интерфейс настолько плох, что его нужно отдельно пояснять. И ладно это еще какой-то старый интерфейс, разработчики которого давно разъехались кто в монастырь кто в психбольницу и вписать новое сложновато. Но ведь такое иногда и в новых интерфейсах делают, с нуля спроектированных, где все со всем вроде как сочетается и имеет свое место.
Ну а во-вторых приоритеты. Вы программу для кого делаете? Для пользователя. Пользователь вашу программу зачем открыл? Почитать, что вы нового сделали? Нет конечно. Он наверное что-то сделать пришел. И с 99% процентов вероятности это новое делается не той функцией, которую вы только что добавили. Так что имейте совесть, не плюйте в лицо человеку, который и так уже ваш клиент.
А что если вы сделали фичу, не прорекламировали ее в попапе, пользователь о ней не узнал и не воспользовался?
Ну значит ему не нужно было, епта!
Посмотрите внутрь себя и ответьте себе честно: правда ли попап решает задачу пользователя? Или вам просто работу свою жалко?
Я периодически балуюсь тем, что рисую логотипы для опен-сорса, своего и иногда чужого.
Недавно у меня вышла библиотека clj-reload, и я подумал — перезагрузка кода, стрелочки по кругу, что тут думать, приключение на двадцать минут, зашли и вышли.
Оказалось, конечно, что одной идеи недостаточно, выглядит это уродско и на поиск в итоге ушла большая часть дня. Но нашел, и даже симпатично получилось, на мой взгляд.
Я это все к чему? Это не первый случай, и все они развиваются по похожему сценарию: ты начинаешь с того, что ничего не нравится, идей нет и ступор. Возишься, пробуешь, пыхтишь, и через итераций двадцать-сорок что-то нащупываешь, доводишь до конца и получается что-то симпатичное.
Ты не знаешь, когда начинаешь, что получится в конце, и получится ли. Даже тени надежды нет. Но надо посидеть и что-то получается. И накопленный опыт говорит, что это не случайность, и на это можно полагаться. Однако начало всегда выглядит абсолютно безнадежным.
Интересное ощущение, короче. Особенно учитывая, что в программировании, например, я ничего не начинаю обычно, если не знаю, что и как делать.
А можно, оказывается, и наоборот. Trust the process.
Интересно, в чем феномен редактора Zed, конечно.
Нет, что от VS Code все устали, мне понятно.
Но просто рядом такой же Sublime Text лежит уже лет 15, и всем как-то пофиг.
А тут новый редактор вышел, и все как с цепи сорвались. Даже в личку мне про него несколько человек написало!
Хотя казалось бы:
- VC-funded, то есть потенциально сговнится и продаст пользователей,
- Уже требует заводить аккаунт,
- Уже есть встроенный AI,
- Уже есть нотификации,
- Ничего не работает (пока что — ожидаемо, но по факту ST можно для чего угодно использовать, а Zed только поиграться)
- Еще не вышел, а уже один раз переписали,
- Есть только под Мак.
Еще раз: я не утверждаю что Zed классный или стремный, меня интересует именно феномен хайпа. Откуда его столько?
Гипотезы такие:
- Хайп Раста перекинулся на Zed, хотя C++, например, ничем не хуже для конечного пользователя.
- Авторы с именем (делали Atom).
- Пункты про AI и VC многими рассматриваются не как минусы, а как плюсы?
- Потенциал ненаписанного продукта всегда соблазнительнее чем реальный продукт, потому что покупаешь как бы свои фантазии.
Что думаете?
UPD: Из комментов:
- Опен-сорсный
- Бесплатный
Для меня опен-сорсность пустой звук, потому что ну кто объективно слал патчи в свой редактор? Но людям нравится _думать_, что они потенциально могли бы
Платность тоже для меня плюс, потому что иначе откуда деньги? От продажи пользователей, вестимо. Но опять же, люди в массе так далеко не думают
UPD2: Из комментов
- Название Zed Industries (ИНДАСТРИС!) звучит мега круто
Тут согласен