Слушал космонавта Александра Хохлова на канале Основа про жизнь на МКС. Очень интересно, очень милый жаргон (например, он человека называет «организм». Надеть одежду на организм), но одна мысль взорвала мне мозг:
Говорит, космонавтам сильно управлять станцией не надо, это обычно делают с Земли. Но если понадобится/приспичит, то можно. Правда, рубки управления или капитанского мостика нет, и управлять можно с любого ноутбука в любом месте станции.
Столовых, значит, у них целых две, а кабины со штурвалом ни одной!
Конечно, если подумать, это логично. К чему этот пафос? Зачем вообще отдельное помещение, если технически оно ни за чем не нужно? И компьютеры/планшеты давно стали тем самым универсальным устройством из фантастики, через которое делается все что угодно и которое всегда с тобой. Функция больше не привязана к месту.
Но все равно как-то странно. Непривычно, что ли. Логично. Но странно.
Сразу представил, как в самолете тоже упразднят кабину, а пилот просто будет сидеть где-то в салоне с пассажирами и на планшете тыкать кнопки, переключаясь между центром управления и match 3. Почему нет? Или автомобиль, в котором нет руля, все пассажиры просто чиллят и выбирают на телефоне, куда поехать. Oh wait, это уже есть, Убер называется.
Дивный новый мир.
Я тут сходил на курсы стендапа и вот что узнал: комики постоянно тестируют новые шутки в безопасных условиях (открытые микрофоны), потому что нифига не понятно, что смешно, а что нет. Реально, в моем выступлении (кстати, есть на Ютубе) есть пара мест, которые мне не то чтобы совсем не нравятся, а кажутся мелкой саркастической ремаркой, не достойной особого внимания.
А люди смеются. Как по часам. И если бы я из головы все это придумывал, я бы их давно выкинул. Но поскольку ты читаешь все что есть, вот, эксперимент показал, что это работает.
И это даже пост-фактум не объяснишь! То есть я уже знаю, что это работает, но почему — для меня до сих пор загадка.
Очень такой опыт, учит смирению. Я-то всегда думал, что умнее всех, и что может чего-то не знаю, но уж понять-то смогу, если захочу. Но нет, люди другие, и работают по-другому, и нужно им совершенно другое.
Так Никита узнал, что другие люди принципиально не похожи на него, и это не их ошибка. 39 годиков.
На компьютерные интерфейсы выводы уже сами распространите.
Кстати в том же треде про гит кто-то слишком умный пришел и сказал: а зачем кандидата про гит вообще что-то спрашивать? Понадобится — загуглит.
Но это же очевидно не так! Во-первых, пойди эти однобуквенные ключи загугли (привет башу вообще). Во-вторых, если твой репозиторий раскорячило, то как ты объяснишь гуглу, что ты делал и как пришел к такой жизни? Reflog же ему не покажешь. Ровно как и ЧатуГПТ. Надо именно тыкать палочкой и разбираться в конкретном случае, а роботы пока так не умеют. Гит кажется вообще один из самых показательных примеров штуки, которая не гуглится.
Ну и сама идея, что надо будет — загуглю, или мем про «программисты только и занимаются тем, что ищут, как сделать простейшие вещи в гугле» — они настолько далеки от реальности, что я даже не знаю. Очевидно, прежде чем искать, надо понимать, а что ты ищещь. Иначе сейчас бы каждый желающий программистом работал.
Так что можете пока спать спокойно. Роботы вашу работу не отберут.
Ладно, в честь пятницы давайте выберем тему попроще и поспокойнее. Нужно ли включать камеру на рабочих созвонах?
Я думаю, что ДА.
Разумеется, ситуации всяких форс-мажоров типа «диарея», «бабка на фоне голая» или «подавился, когда пытался проглотить банан целиком» сразу отбрасываем — они разовые и никто на вас за три минуты без камеры косо не посмотрит. Речь именно о регулярном общении, состоянии по дефолту.
Собственно, аргумент у меня один — так приятнее. Приятнее видеть собеседника, его мимику, реакцию, невербально коммуницировать. Просто без камеры ты сидишь как дебил и смотришь в этот черный квадрат, ну максимально тупо же.
Противники скажут — лишнее это, достаточно голоса, чтобы решить любую задачу. Ну а почему голоса тогда? Достаточно текста в чате. А если продолжить, то и вовсе достаточно пулл-реквеста. А если еще продолжить, то достаточно просто чтобы деньги упали на карточку в начале месяца молча, вот идеальная коммуникация, да?
Зачем вы вообще по телефону звоните? Потому что голосом передаются дополнительные оттенки, которых нет в тексте. Удивление, возражение, хмыкание, неуверенное согласие, уверенная приязнь. Ну тупо признавать, что эти оттенки для вас важны, а те, что в видео, где их еще больше — уже нет. В каком-то произвольном месте у вас черта проходит, получается.
Аргумент — ну это же надо одеваться, краситься — ну так да. А что вы, целый день работаете в трусах и с немытой головой? Вам самим-то себя не жалко?
Аргумент, что вы на созвонах чем-то другим занимаетесь, ну это вообще бред. Зачем находиться на звонке, в котором вы не участвуете? Выходите тогда, или, если нет, то тогда уж не отвлекайтесь.
Нет, если вы работу свою ненавидите, коллег в гробу видали, и вообще ничего не слушаете, то тогда конечно, камера вас будет раздражать. Вы хотели скрыть свой похуизм, а тут люди хотят, чтобы его было видно. Но это другая проблема уже, вам жизнь ваша не нравится, и тем, что вы камеру выключите, она не решается.
В общем, коллеги, не могли бы вы включить камеру?
Ппц, написал в Твиттере что часто вставляю английские слова в русскую речь и поел говна на лопате. «Надо стараться так не делать», «всегда есть альтернатива», «забыл свои корни», «русский язык богаче», «нужно прилагать усилия».
Но ведь нет! Я использую английские слова не потому, что не знаю русских, а потому что английские — в данном случае, для данной задачи — короче, точнее, звонче.
Я не воспринимаю это как «потерял язык». Я воспринимаю это как «обрел второй», «расширил свой словарный запас». Многие слова просто не существовали в русском, потому что образ жизни другой, окружение другое, мысль по-другому строится, и мы просто поэтому не знаем и не умеем говорить об этом по-русски. А зная английский, я могу говорить и об этом тоже, причем не в ущерб русскому ни разу. Блять, я за границей узнал о продуктах, который в России тупо нет, и что мне теперь, пальцем на них показывать в магазине и потом молча жрать?
Все началось со слова attitude, но в комментах накидали: и cohesion, и privacy, и loneliness/solitude, и landlord, и sibling. Не то чтобы по-русски про это совсем не скажешь, но покружить, объясняя, придется. «Эй, тимлид, чего молчишь?» — «Ща, погодите, пытаюсь фразу „Когда тикет закончишь, сервера простаивают, тебя еще три пулл-реквеста ждут, выкатывай сборку на продакшн“ на русский перевести. Минут пять еще дайте мне».
Позабавили два комментатора особо. Один: «Я думаю за пару месяцев в родной среде это все возвращается к норме». Притом что в России все англицизмами говорят направо и налево, сплошные митболы и воркауты давно. Вот бы сейчас вернуться и впитать все эти кейсы, митинги, боулы и ситуэйшншипы, а не вот это вот все.
И второй: «Пушкин с Толстым наверно бы сильно охуели от такой предъявы». При том что один мог на полстраницы перейти на французский без проблем, а другой специально угарал над любителями блюсти чистоту русского языка и сам себе придумал литературный язык наперекор всем устоям.
«Вообще мне казалось, к вашему возрасту люди уже понимают преимущества умения хорошо говорить».
Конечно понимают, моя дорогая. Причем сразу на нескольких языках.
Забавная ситуация произошла пару постов назад, в посте про Гришку. Мне написали: ууу, вконтактщики/телеграмщики, они же программировать не умеют, смотри, вот у них класс ChatActivity на 40 тысяч строк, его даже Гитхаб показывать отказывается.
Что смешно! Потому что это очевидно аргумент в другую сторону: как раз в гитхабе-то и не умеют программировать. Файл два мегабайта показать, ну камон. Браузеру не тяжело, если ты сам не усложнишь его работу.
Тот же комментатор (Denis) пишет:
> Дядь, а дядь, а чем ты предлагаешь парсить 37к строк чтобы оно еще синтаксис осиляло подсвечивать?
> [...] вот то, что он не может запарсить 2мб сорцов в 1 файле - ну тут сложно их в этом обвинять
Что вдвойне смешно! Можно взять любой редактор, вот вообще любой, и они откроют этот файл без проблем за долю секунды. Даже Идея с ВСКодом кряхтят, но за пару секунд открывают. С подсветкой, навигацией, всем, что делает Гитхаб и даже может больше.
И это на том же компьютере! Ну сколько можно делать скидку на «это же браузер, он маленький, ничего не умеет и ему все тяжело дается?». Этот бразуер запущен на том же ЦПУ, имеет доступ к той же памяти, сфига ли для него вдруг два мегабайта — это неподъемный вес? Он блин в кеш процессора помещается целиком, алло!
В общем, компьютеры быстрые, давайте пожалуйста про это не забывать. Медленные компьютеры это skill issue в основном. Зато в гитхабе наверняка миллионы долларов потратили на то, чтобы показать исходники, и их код написан по лучшим методологиям и вылизан линтерами вдоль и поперек. Но не работает, такой нюанс. Зато написан хорошо.
Блин, отличный тут (это как твит, только в Мастодоне) показали сегодня.
Короче, чел нашел реализацию Pokedex от нашего Гришки (это не панибратство, ник у него такой), которая на чистой джаве и андроидных API и работает в сто раз быстрее версии на Композе и весит в 10 раз меньше.
А дальше его немножко заклинило, потому что он видимо свято верит в то, что писать код надо так как все, а не как хочется. Пишет:
> Someone posts an extremely spicy implementation of a basic app on r/androiddev that essentially says, "All recommended best practices for Android dev are trash, just use Java and ditch all of Google's compat APIs"
> Everyone laughs at this person for being a crank
> Turns out: They are the author of mastodon-android!
> It would be nice if Mastodon's Android client weren't written and maintained by a crank who is unable to collaborate effectively or distinguish between good and bad dependencies.
То есть видите, да? С одной стороны, Гришкина реализация существует и работает гораздо лучше. Это как бы факт.
С другой стороны, челу ну очень хочется верить, что вот это все что происходит в индустрии — библиотеки, фреймворки, языки, что все меняется постоянно, что за всем этим надо следить, бежать, учить — что это все не зря, что в этом есть какой-то смысл.
И даже списать под шумок пример с Pokedex — ха-ха, это все очень мило, но пример-то игрушечный, no way это смаштабируется на реальное приложение — тоже не получается, потому что есть Mastodon for Android.
Ну и у человека кризис веры. Он обзывается, высмеивает, торгуется (хотел бы я, чтобы этих проектов не существовало), но сделать ничего не может.
Грустная история, но полезная. Жить с ощущением, что если Композ и Котлин существуют, то значит для этого есть хорошая причина — можно, но до первого столкновения с реальностью.
Я не говорю, что прям весь прогресс это треш, но и просто верить в пользу чего-то просто потому, что его сделала какая-то большая компания — это хороший путь к психическому срыву.
Ну а людей, которые хоть что-то сделали и запустили, любым вообще способом, надо уважать хотя бы за этот факт. Собственно, реакция создателя Мастодона на тред того чувака:
> he said he wouldn't tolerate anyone "insulting" grishka, and then he blocked me, so...
Но это понимаешь, только когда сам что-то попробуешь сделать.
Как популярный блоггер на своем сайте "This message is not supported in your version of Telegram. Please update to the latest version" (ой, кажется ссылка не вставилась, скажите там Карлсону, путь Дурову передаст).
Так вот, как популярный блоггер, я читаю много отзывов о своем сайте. И часто люди обсуждают визуал: почему, говорят, фон желтый? Зачем, говорят, курсоры? О, есть темный режим! Ой, не работает, а нет, ха-ха, смешно (на это уже почти не жалуются, слава богу).
Ответ простой, но их несколько. Вот один: потому что могу. Это мой сайт, алло.
Еще один ответ: потому что я не хочу, чтобы люди относились к нему слишком серьезно. Это не книга же, это просто еще одна страничка в интернете, вы чего. Какая разница, какого она цвета. Не нравится — ну пойди найди другую. Если вас всех таких серьезных послушать, то мне вообще надо пейперы в ЛаТеХе публиковать пойти. Но только кому от этого хорошо будет?
Иногда люди рассуждают: ты вроде про юзабилити пишешь, а у самого сайт читать неудобно. Так вот, ребята, вы забываете, что тут главное, а что второстепенное. Главное это то, что написано, а как и где — уже совсем не так важно. Юзабилити хорошо, если ты все остальные вопросики уже порешал. Не надо ставить телегу впереди лошади.
Тут недавно опять была драма с Humane Ai Pin, много слов было вылито во все стороны, а по-моему все сводится к очень простой схеме: если сделать говно, то никакое количество маркетинга и денег не поможет. А если сделать что-то хорошее, то хоть из гаража продавай и заказы по вотсаппу принимай. Главное что ты делаешь, а не как.
И еще один ответ: потому что мне скучно. Ну вот сделаю я еще один сайт с черным текстом на белом фоне. И чего? Мир даже не заметит.
И еще один: потому что я хочу вызывать эмоции. Удивление в основном, но это тоже эмоция. Давно вы удивлялись, заходя на веб-сайт?
И еще: потому что желтый это тепло, солнце, радость. А черный это гроб, кладбище, могила. Куда вы пойдете с большим удовольствием?
В общем, совет тебе, человек, который думает о том, чтобы открыть в интернете свой сайт: будь странным. Нормальных и так хватает.
Чел дакдакгочит: how to import font in css. Выкладывает скриншот с комментарием: i am a senior engineer btw. Типа, юмор в том, что даже мы, эксперты, до сих пор ищем банальные вещи.
А знаете что? Может быть проблема не в этом. Может быть проблема в том, что если бы синтаксис был нормальный, то ничего искать бы и не пришлось. Просто CSS это такая помойка, что даже профи запомнить все эти идиотские комбинации трудно.
Серьезно, что вот это такое?
@font-face {
font-family: 'EntezareZohoor2';
src: url('fonts/EntezareZohoor2.eot'), url('fonts/EntezareZohoor2.ttf') format('truetype'), url('fonts/EntezareZohoor2.svg') format('svg');
font-weight: normal;
font-style: normal;
}
font-family: San Francisco, Arial, sans-serif
. Потому что это просто, логично и легко запомнить. Или там padding: 10px 10px 10px 10px
;
@import-font fonts/EntezareZohoor2.ttf;
Пока мы далеко не ушли, есть еще такое вот мнение: вы думали Линукс это операционная система, а это среда разработки, сборки и запуска C-программ. Если это понять, многие странности встанут на свое место.
Ну то есть с одной стороны Линукс вроде бы рад любому языку и может запускать что угодно, а с другой все эти папки, пути, пакетные менеджеры, поиск зависимостей, линковка, маны, дефолты, куча всего организовано так, чтобы было удобно собирать и исполнять именно С-код. Не просто «код на любом языке», а именно что C.
Все остальное по остаточному принципу получилось, т.к. другие языки написаны на С, то получается что их тоже исполнять можно, но не то чтобы для них там что-то специальное создавалось или подкручивалось.
Если подумать, это самый сложный, запутанный и обросший уже не то что мхом, а целым лесом случай протекания абстракций из языка в ОС и из ОС в язык.
Но вы, конечно, не согласитесь.
Ходил не так уже и недавно на митап, и там был пятиминутный рассказ про Nix. Как я себе Nix представлял: фиксируешь каждую версию каждой зависимости. Ставишь разные версии в разные папки. Потом, когда поработать нужно, говоришь: дай мне то такой-то версии, а это такой-то. И он тебе из этих папок что нужно собирает.
Ну вот. Прихожу на доклад. А там какой-то уже свой язык программирования придумали, внутри циклы, ветвления, короче прям полноценная программа, и чел что-то обещает из серии что «не так уж это и больно, когда привыкнешь» и «скоро это все заработает».
Если честно, в сравнении с этим даже Докер кажется хорошей идеей. А вы знаете как я не люблю Докер.
Откуда вообще там сложность берется-то? И разве возможность программировать и что-то там настраивать не ломает идею иммутабельности всего?
Мне нравится как многие современные тренды это по сути «просто не делай хуйни».
Например, движение local-first. Просто храни свои данные локально, а не фетчи их каждый раз сервера. Казалось бы, ну какой идиот будет делать миллион запросов на то, что и так уже локально есть. Однако же целое движение понадобилось, чтобы людей образумить. И то, оно еще контр-культурным считается.
Или server-side рендеринг. Ну типа нахуя передавать JSON, а потом его рендерить, если можно сразу отрендерить? Зачем придумывать еще один промежуточный формат? Однако тоже целое движение, и люди даже спорят о плюсах и минусах.
Или reproducible builds. Для меня это попадает в категорию «работающие программы». Как он может быть не-reproducible-то? Давайте движение за «программа должна запускаться и работать» организуем еще.
Какой-то чел в твиттере гуглил оленя для референса, а ему вывалило сгенерированное AI говно с очень странно устроенными, как водится, ногами (были бы у оленей руки — он бы и руки испортил).
Я сам недавно гуглил «креативная типографика», чтобы что-то там доказать в споре, и из 30 результатов как минимум 10 были сгенерированным говном (не надо притворяться, что его не видно. Еще как видно).
То есть мы УЖЕ живем в мире, где нормальные результаты надо фильтровать от говна, которое обучено на когда-то нормальных результатах, а теперь ими прикидывается. Новые поколения нейросетей, понятно, пойдут обучаться на своем же выхлопе и вот пожалуйста, замкнутый feedback loop и цифровая сингулярность.
Роботы будут общаться с роботами, генерить контент, сами же его пожирать, строить по нему индексы и искать. Лет через 50 все уже забудут, как выглядят настоящие олени или там озера, забудут, сколько ног у птицы и как крыло прикреплено к самолету. Люди, понятно, уйдут в подполье, будут писать тексты и рисовать картинки на настоящей бумаге, а в интернет ходить будут только сумасшедшие. Настоящий, ручной контент будет цениться на вес золота, его надо будет добывать особо сложными путями, а в сеть его принципиально пускать не будут, чтобы нейросети его не переврали.
И вот тогда-то наконец заживем!
В последние годы в глобальной сети интернет набирает популярность такое явление как ховер.
И ладно еще когда элементы подсвечиваются под мышкой, это я еще хотя бы могу понять — мы променяли визуальные аффордансы на такое вот «ощупывание» интерфейса на интерактивность.
Чуть менее приятно, когда элементы по ховеру появляются. У меня есть поговорка: юзер не может нажать на контрол, если он этот контрол не видит. Казалось бы. Но тем не менее. Целиться в невидимые контролы тоже такое себе удовольствие.
Но самая жопа — это когда по ховеру вообще все нахуй меняется. Меню вываливается, картинка разворачивается, описание рисуется поверх и так далее.
Очень любят такое интернет-магазины. Называется «быстрый просмотр». Типа, наши страницы грузятся так долго и так медленно, что вот мы способ по-быстрее придумали. А почему они грузятся медленно, га?
В принципе, когда тебе правда интересен товар, оно работает. Проблема в том, что когда не интересен, оно работает тоже! Ну и начинается история, что ты не можешь спокойно ни пролистать, ни до товара мышку довести, не триггернув при этом с десяток ненужных ховеров по пути. Вот кому это удобно, а?
Даже Эпл, когда-то эталон хорошего дизайна и вкуса, влепил себе на сайте меню по ховеру. То есть едешь ты мышкой сверху вниз — хуяк, меню развернулось на пол-экрана. Веди теперь в самый дальний край, чтобы эта хуйня пропала. И так раз двадацть, пока сидишь на сайте. Причем оно специально сделано горизонтальной полосой поперек экрана, чтобы путей обхода не было совсем. Хочешь не хочешь а пересечешь.
Алло, ребят, уберите правую руку со стола и посмотрите на свою мышь. Там спереди у нее, где провод, есть два прямоугольника. Вот если пальчиком на левый нажать, придавить слегка, то меню вылезет. А если не нажать — не вылезет. Клево придумано же, а? Почему не пользуетесь? Готовятся к безкнопочной мыши, не иначе.
Короче, право водить мышкой туда-сюда по всему сайту спокойно и без страха — базовое человеческое право. Как право на жизнь и на достоинство. Нехуй ваши ховеры везде пихать.
Произошел эксплойт xz, хорошее описание есть в канале Авва. Если коротко, чел два года мейнтейнил пакет, ждал возможности, засунул экплойт через autoconf, который давал доступ к удаленным машинам, а сотрудник микрософта заметил, что логин в систему по ssh стал занимать 800 мс вместо 300 мс и докопался до причин.
Это я все к чему? Учитесь программировать, ребят. Обидно, два года трудов на смарку только из-за того, что чел вовремя не заботал алгоритмы и/или многопоточку и не смог написать нормальный бэкдор.
Алгоритмы нужны, получается
Есть у Маков такая функция: handoff. Типа, делал че-то на телефоне, а потом пришел за компьютер и можешь продолжить.
Выглядит это так: сидишь в телефоне в условном Сафари. И у тебя в доке появляется на секунду иконка «Сафари, но с мобилы». Если тыкнуть, что-то произойдет. Если не тыкнуть, то она исчезнет. Происходит абсолютно рандомно, так что я ни разу и не узнал толком, что это и зачем. Просто смотрю, как периодически появляются и исчезают иконки в доке.
Недавно вообще до смешного дошло: решил я поставить себе будильник. Мак такой: о, кажется ты хочешь передать управление на ноутбук? Вот тебе иконка. Я думаю: надо узнать, что ж это за зверь такой. Нажал. На ноуте открылось приложение «часы». В нем ни одного будильника. Удобно, че. Главное, полезно.
Ну а собственно интересный вопрос: как так получилось?
Очень просто: кто-то придумал тЕхНоЛоГиЮ, что если у тебя два одинаковых приложения, они будут тут и там выскакивать парой. И дальше эта технология автоматически применилась ко всему: там где надо и там где не надо. Хорошо это? Вряд ли? Глупо? Довольно глупо. А все потому, что технологии победили программиста.
Такие же у меня впечатления от всяких «волшебных» фреймворков типа Swift UI или кросс-платформенных типа Flutter/Compose для мобилок/десктопа/веба. «Напиши один раз и оно заработает везде». Никто не уточняет, что это скорее всего будет очень плохо. Но формально-то заработало!
Все-таки смысл должен идти впереди технологий.
К вопросу о том, почему люди просто не напишут нормальных клонов условного Notion или Figma. Многими возрастными программистами принято с теплотой вспоминать революционные технологии их юности: Флеш и как легко в него было вкатиться, Гиперкард, Смолтолк, Дельфи. Обычно это идет вместе с ворчанием на технологии современные: фу ужас какой, вот во Флеше-то было нормально!
Ну а теперь собственно вопрос: если условный Флеш был настолько охуенным, ну пойди сделай опен-сорс версию или даже коммерческую версию, прям все идеи стырь один-в-один, только код новый напиши и название придумай. И все, весь мир твой.
Однако же этого не происходит. Или, если происходит, то такие клоны прозябают где-то на задворках SourceForge.
Почему?
Опять же, с точки зрения условного Василия Ивановича, возрастного программиста, это потому что люди неправильные. Не понимают, что для них самих лучше, не видят, что теряют.
Но мне кажется тут интересно посмотреть именно почему конкретно всякие Дельфи сегодня даром никому не нужны, хотя казалось бы, бери и пользуйся. То есть я не считаю, что люди тупые, я считаю, что люди как раз неплохо понимают, что им нужно и какие задачи они решают.
Василию Ивановичу эта часть, скорее всего, не нравится — что они смотрят давно в другую сторону, пока он все свои Button1 на форму таскает. Типа, на смену Флешу пришли другие технлогии, которые решают другую задачу, потому что исходная уже никому не нужна.
Но это все общие рассуждения. Конкретных ответов у меня нет, конечно. В принципе было бы интересно поговорить, что именно поменялось в мире, что привело к закату таких гигантов. Что не так с Флешем? Почему Смолтолк никому не нужен? Где современный Гиперкард?
Но боюсь это все скатится опять к обсуждению уровня «современные программы тормозят, потому что им надо обрабатывать Юникод» и «Флеш умер потому что его Джобс убил». Так что моя рука заранее снимает с предохранителя браунинг. Но можно попробовать.
Ну что, кот вылез из мешка (сорян, вы же хотели, чтобы я русский не забывал?), вышел подкаст Бирмана, в котором я рассказываю про Гит. Вообще идите послушайте, а я тут коротенько наброшу.
Я шутил в твиттере, что «люди которые пользуются консольным Гитом, кажется, не слишком хорошо его понимают и это повод копнуть поглубже» что было переделыванием аналогичной фразы про гуевый Гит.
Так вот, я считаю, что консольный Гит это конечно крутое кун-фу, но это сложность ради сложности (смотрите, я собрал корабль в бутылке, причем обе руки были завязаны за спиной), но какого-то особого «глубокого» понимания он не дает. Я офигенно знаю Гит (ну, я так думаю) и пользуюсь исключительно гуем, потому что — ну а нафига страдать?
Беда всех консольных интерфейсов — что они работают в парадигме запрос-ответ, «ты сначала спроси, а мы потом покажем». Это плохая парадигма, хорошая — вот смотри все что есть, если нужно, уточняй.
Вторая беда — они всегда показывают прошлое. То есть я ветку уже удалил, но если на экране есть вывод предыдущей git branch -a
, то он не обновится. Вот ты и сидишь и спрашиваешь постоянно: где я? кто я? какой сейчас статус? Закоммитить не в ту ветку — одна из самых частых ошибок, потому что ветка нигде не написана.
(мне сейчас скажут, что у них условный oh-my-zsh запрашивает и печатает ветку после каждого нажатия enter, на что я скажу: вы что, ебанутые? ^W^W^W вот мы и начали делать gui колхозными средствами)
Ну и в целом многие вещи исходно требуют графического представления (diff-ы, лог), которое консольному интерфейсу приходится как-то колхозить. Для чего, для кого? Зачем вы страдаете, мистер Андерсон?
Вторая часть моих претензий связана с ебанутостью конкретно git-ового cli.
- Например, команды, которые и не существительные, и не глаголы (`git checkout`/`git branch`).
- Команды, которые полностью меняют свой смысл в зависимости от ключа (`git branch`, git branch -l
, git branch -d
, `git checkout --merge`).
- Команды, которые полностью меняют свой смысл от аргумента (`git checkout`).
- Неконсистентный словарь (staging, index, cache — это все одно и то же).
- Команды, которые очевидно создавались заплаткой поверх других команд. Попробуйте понять логически, что с чем сравнивает команда git diff --cached
- Git status, который пишет «You are up to date», даже не сходив в интернет и ничего не проверив! Распределенная система контроля версий боится ходить в сеть!
- Просто идиосинкразия удаления файла через git add
- То, что стеш автоматически не стешится (правда, это во многих gui тоже так)
- Отсутствует анду. А это, между прочим, столп вообще любого человеко-компьютерного взаимодействия.
Короче, если ты все это запомнил, то молодец! У тебя большая память, высокий болевой порог и ты любишь хранить бессмыслицу на своем чердаке. Ты наверное и всех американских президентов можешь перечислить по порядку?
В общем, you do you, конечно, но меня раздражает, что эта вот пытка считается чем-то вроде badge of honor, чем-то, чем люди прям гордятся. А на деле самый обычный стокгольмский синдром.
Конечно, это не отменяет того, что какой-то конкретный GUI для гита тоже может быть плохим! Условный VS Code, в котором одна кнопка sync, которая делает и пуш и пулл и черт знает что еще, да, действительно, с такой каши не сваришь.
Но бывают и хорошие ведь! Условный Sublime Merge снимает почти все головняки консоли и при этом не идет против правды и показывает вещи как есть. И это просто хорошо сделанная обертка, даже не переосмысление самой работы с DVCS.
Короче, дискурс «нАдО сИдЕтЬ в КоНсОлЕ» вредит и развитию инструментов, и доступности профессии для новичков. Да и вам самим было бы легче, просто кто-то фильмов про хакеров насмотрелся с зелеными буквами. На терминале свет клином не сошелся, алло!
Не понимаю, как вы это делаете: я специально пишу посты, в которых рассматриваю проблему максимально объективно и заранее (заранее!) предвижу все возможные ответы и тоже их разбираю. Я ожидаю ноль комментов, потому что ну что там обсуждать, кода я уже в посте все обсудил? И каждый раз ошибаюсь.
Сегодня тема попроще, так как нам всем надо отдохнуть. Так называемые «минускульные», или «строчные», или «по старому стилю» цифры, то есть цифры, которые притворяются маленькими буквами с выносными элементами, а не большими. Типа, ноль как маленькая о, шестерка с хвостом, который торчит вверх как ascender, девятка со свисающим со строки хвостом.
Я вообще этого не понимаю.
Ну то есть я понимаю, что так было когда-то в прошлом. Но это было тупо!
Сама идея еще норм: как известно, строчные буквы различать легче за счет того, что они торчат то туда, то сюда, создавая уникальный рисунок. Почему бы не иметь этого в цифрах?
Но вот исполнение прихрамывает. 6 и 9 еще куда не шли, можно притвориться, что это строчные буквы с хвостиком. Можно даже притвориться, что у четверки нога свисает, как у условной q.
Но когда дело доходит до 3, 5 и 8 начинаются жесткие натяжки. У тройки свисает не хвост, а как бы пол-буквы. То есть она не делится четко на часть, которая стоит в строке, и часть, которая свисает. Это выглядит как целая цифра, просто сдвинутая вниз, причем на довольно произвольное расстояние. То же самое с 5.
Но самая жесть — 8. Восьмерка, понятно, не входит в строку ну вообще никак. Но и считать одно из колец основным, а другое — выносным элементом, не получается. Вот не получается и все. Хорошая идея, мы попробовали, не получилось. Закапывайте.
В целом читать старостильные цифры тоже тяжеловато. Подозреваю, да, может быть, вопрос привычки. Но выглядит так, что типограф был пьяный и цифры просто скачут, причем почти рандомно. Лучше всего выглядят числа, состоящие из шестерок и девяток. Да, 1996 выглядит стильно в минускульных цифрах. А 1998 уже нет. Так что даже как выебон история довольно сомнительная.
Но идея хорошая.
Так а что за претензии к файлу на 37 тысяч строк-то? Какая разница сколько строк в файле вообще?
Ну вот допустим вы разбили его на 37 маленьких файлов, по 1000 строк. И чего? Код-то никуда не делся. На него все равно надо смотреть, читать, искать в нем.
Или наоборот: никто ни в какой ситуации не просит вас все 37 тысяч читать, да и вообще, вы всегда, в любом файле читаете только то что вам нужно, но никогда целиком, от начала до конца.
На один экран ни 37 тысяч, ни одна тысяча не поместятся все равно. Сначала мы все дружно смеемся над дядей Бобом и его функциями по 10 строк, а потом сами такие: не ну файл на 37 тысяч это многовато конечно.
Вот если бы вы топили за файлы, которые помещаются на экран целиком, строчек по 40-50, я бы понял. Но если не помещается все равно, то какая уже разница?
Или если бы вы топили за то, чтобы кода в целом было поменьше. Не файл на 37000, а файл на 10000 при том же наборе функций. Не кодбаза на полмиллиона строк, а кодбаза на сто тыщ. Но что-то никто за такое не топит, потому что у каждого на работе у самого свой миллиончик-другой в ИДЕ открыт. А до размера файла легко доебаться, потому что правда не так сильно колет.
Так что, в чем претензия-то?
Пользователь социальной сети Икс Dany Wander написал, как современные tools for thoughts, наши лучшие кандидаты на велосипеды для ума, очень не ценят внимание пользователя. Проще говоря, у них у всех интерфейс очень шумит.
И я согласен! Да, шумит, ппц как. Абсолютно нет ощущения главного и второстепенного, часто на экран вывалены контролы, которые нужны раз в году, так что ты на них нет-нет да все равно смотришь. И даже у тех элементов, которые формально нужны, все равно — цвета, обводочки, плашки, иконки, шрифты разные по размеру и по толщине.
Чтобы не быть голословным, возьмем условный VS Code, который мне ближе. Ты открываешь только что установленную студию, и сразу десяток иконок в левой панели, включая экстеншны, настройки и логин — нахуя мне это перед глазами ВСЕ время? В правом верхнем углу какие-то иконки, статус-бар вообще цветом выделен и там тоже хлама хватает. И у каждого иконка. И это мы еще в редактор даже не заглянули!
То ли дело Саблайм — ни одной иконки in sight, шрифт везде одинаковый, цвета нет. Была бы моя воля — я бы и из дерева файлов иконки убрал, хотя кто-то может быть скажет что это too much.
И в общем ты открываешь проект — вот код (главное), вот файлы если нужно, они тоже твои, и в общем-то все. Нет кнопок для управления окном. Нет кнопок для установки расширений. Нет поиска, пока он не нужен. Нет, прости господи, нотификаций. Ничто не ест твое внимание, не перетягивает его, не размазывает. Остальное не приглушено — его именно что нет. Фокусируйся не хочу.
Это сложно объяснить, наверное, если не чувствуешь, но я вот подсознательно чувствовал, и теперь знаю, что это действительно существует и как об этом говорить.
Похожий эффект когда-то произвел редактор iA Writer. Это такая печатная машинка, у которой вообще нет интерфейса, нет настроек (ну, тогда, в прошлом), просто пустой лист — садись, пиши. Даже покрутить-попрокрастинировать негде. И люди, которые его пробовали, очень удивлялись: садишься писать и на самом деле пишешь! Причем довольно легко и естественно это получалось. Кто бы мог подумать, если человека не отвлекать, он не будет отвлекаться!
Учитывая, что альтернативой был условный Ворд, где параллельно с собственно писательством можно хоть верстку с предпечатной подготовкой делать, разница была колоссальна.
Но мы как-то дружно это все забыли! И всякие Notion с Linear, при всей кажущейся вылизанности их интерфейса — это те же самые Word и Jira, только сделанные людьми с визуальным вкусом. Но они все так же больше озабочены тем, чтобы хорошо выглядеть на скриншотах, чем чтобы принести пользователям peace of mind.
Знаете эти статьи/видосы, где чел: «я сделал процессор из блоков в майнкрафте». Или «я запустил Дум на чистом CSS». Или «я сделал фабрику, которая производит слово ХУЙ в Факторио». Ну и языки всякие странные, brainfuck или тот где надо пиксели цветами красить.
Ну то есть людям не сильно-то нужно удобство. Нужен челленж, да, но и сам факт программирования, что ты что-то сделал, а оно дальше само, тоже что-то делает, получается само программирование нравится. Причем в любых, даже самых неподходящих условиях, иногда даже чем хуже тем лучше. Лишь бы компьютер делал буп-буп.
Не у всех, конечно, большинство людей нормальные. Но получается, что программирование это тоже некая базовая потребность, что люди нет-нет да и ищут возможности что-нибудь превратить в вычислительную машину.
То есть дело не в результате, не в удобстве, не в пользе, не в бизнес-метриках, прости господи. Дело вообще ни в чем.
Кайф в самом программировании, получается.
Такая стартап идея: а что если пойти делать нормальные версии всего?
Типа, взять Ноушн, все под копирку слямзить, но сделать быстрый, с нормальным выделением текста и local-first? Или Слак, но быстрый и с нормальным UI каналов и нормальным логином?
Что будет? Дадут по башке? Придут вообще или не придут? Если нет, то почему никто не делает?
Я уже писал, что мне нравятся кросс-платформенные приложения, и это до сих пор так, по крайней мере идея нравится.
Но во всем нужно знать меру. Пока я писал 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 лбов без дела, то они могут лендинг хоть раз в неделю перерисовывать, но в конечном итоге это и мертвого заебет. А общий редизайн проект долгий, и дизайнеры устанут, и юзеры не сильно взвоют. Отсюда и рекомендуемая частота.
Мне нравится что чел в посте сам пишет: логически оправдать редизайн очень сложно. Плюсов никто никогда не видел и не мерял. Да-да, в посте про важность редизайнов, так и пишет. Но потом такой: но все-таки надо. Надо. Поверьте мне, надо. Ну поверьте. Ну пожалуйста. Ну что вам жалко что ли?
Ну то есть понимаете, да? Если бы хорошая причина делать редизайн была, он бы ее привел. А он не привел. То есть, как бы... Того. Этого.
Лукавит, получается.