Решил поставить себе дуал-бутом macOS Sonoma, поглядеть, как там дела обстоят с геймингом (пока что мой опыт с CrossOver был не очень, но у меня и ноут дохленький, всего за 2,500 евров, едва 2д-игры тянет).
Ну короче делается это так: качаешь инсталлер на 13 гигабайт. Запускаешь. Он качает еще чего-то на 13 гигабайт. А поскольку я это все на отельном вайфае, это все занимает ощутимое время, типа, несколько часов.
Просыпаюсь утром и вижу: ой, места-то нет! В смысле есть, но мало. Ну епт! А сразу что, нельзя было проверить? То есть проверка есть, то есть об этом подумано, работа сделана, но почему на отъебись? Почему она _после_ того, как он три часа что-то качает, а не до? Я все понимаю, бета, для разработчиков, разработчики должны страдать, но все же?
Ладно, думаю, освободил места, второй-то раз ты поди качать не будешь? Буду. А где то, что ты уже скачала? Что скачала? Ничего не знаю. Жди опять 3 часа 6 минут. (эти 6 минут меня тоже, кстати, знатно напрягают. Очень уж специфичная цифра).
Что случилось с моделью «скачать все, что тебе нужно, сразу»? Причем желательно дать это сделать мне, ссылкой. Потому что я сам умею качать заметно лучше, чем любой кастомный загрузчик, который впопыхах написали ваши измученные менеджерами программисты.
И что там такого в инсталлере на 13 гигабайт, кроме интерфейса самого установщика? Не могли же они его _так_ раздуть. Эпл все-таки не Логитех, у которых софт для управления мышкой (две крутилки, три настройки, и конечно же обязательный логин), как выяснилось, 7 гигабайт занимает. Тут вопросов нет, все по делу. Электрон сам себя несколько раз в архив не положит.
Кстати, пока чистил место, заметил, что Слак занимает на диске 2 гигабайта. 2 гигабайта чего, извините? Когда можно точно такой же Слак, но в браузере, за ноль байт.
Как же здорово жить в будущем! Хорошо что железо подтянулось, представьте все то же самое, но на дисках 500 мегабайт? Это ж сколько дисков пришлось бы ставить, чтобы Слак или там мышку установить?
Короче, пока еще можно, пользуюсь твиттером с телефона. Но он правда у меня выжирал всю батарею за ночь, так что я снес его и хожу с веб сайта. Иконку поставил, все дела, но по факту это тупо мобильный Сафари.
Ну и как выглядит экспириенс? Скроллишь, скроллишь, читаешь там че-то себе. И вдруг он решает че-то обновить. В лучшем случае твоя лента уезжает на пару экранов вверх или вниз и иногда даже место найти можно, где ты закончил читать. Ну а в худшем он просто все перезагружает нахуй и давай заново. Буквально — белый экран, логотип, спиннер, секунд десять ожидания.
И это при том, что ты в этот момент ничего не делаешь! Не кликаешь, не скроллишь даже. Просто держишь телефон и _смотришь_ на него, а твиттер _с нихуя_ портит тебе жизнь.
Вот КАК????
И в такие моменты я вспоминаю, насколько приятнее работать с вещами, которые просто делают свою базовую функцию и все. Ниттер, пока он еще работал, ощущался в сто раз стабильнее и шустрее, потому что он показывал твиты в минимальной разметке и без всяких «умных» мега-фич. Просто — текст твита и дизайн небольшой, все. Браузеры _очень_ хорошо это делают, оказывается. И это свободный, некоммерческий проект.
С другой стороны Твиттер, у которого вроде бы задача делать то же самое, но максимально хорошо, с огромным штатом и настоящими деньгами. И он обсирается на ровном месте. Почему?
Да потому что программисты над ним слишком много работают. Им бы сделать минимально нужную штуку и остановиться. Но так бизнес не рабоает. Если есть сотрудники, им надо что-то делать. И вот они делают, и делают, а Твиттеру все хуже и хуже. Удивительный, конечно, парадокс.
Поэтому старые версии всяких Gmail-ов, TweetDeck-ов и Твиттеров работают настолько лучше. У них просто было меньше разработчиков, меньше времени и меньше бюджета. Поэтому они решали задачу пользователя, а не задачу, чем бы занять сотрудников.
Это там новый ТвитДек вышел, и он просто сделан из нового Твиттера, поэтому работает так же хуево. Зачем — непонятно. Наверное, даже 25% от оригинального состава для продукта вроде Твиттера это слишком много и Маск реально не знает, чем их занять.
Я уже шутил миллион раз, что я дед, потому что — ну дед, что тут поделаешь. Но волнует меня то, что я сам у себя признаки деда нахожу.
Скажем, вы знаете эту тему, родители и технологии. Типа, они совсем беспомощные, ничего сделать не могут. А я-то про себя всю жизнь думал, что я как раз весь технологиями обмазан и все знаю, умею, понимаю или могу разобраться.
А потом постепенно начал замечать: купил часы, они каждый километр голосом озвучивают. Как отключить — не знаю, просто хожу как есть. В Слаке уведомления приходят хуй знает как. Вместо того чтобы сесть и разобраться и починить я или тред в твиттер напишу, или сюда пожалуюсь. Поною, но чинить не буду. Или вот Твиттер нотификации не показывает. То есть он показывает, сколько лайков (20+ в общем-то почти всегда, т.е. абсолютно бесполезный индикатор). А DM-ы не показывает. Хотя вот о них я бы как-раз хотел бы знать. Чиню ли я это? Правильно, нет, я просто непроизвольно игнорю людей, которые туда пишут.
Вот как это работает, а? Что поменялось? Потому что молодой я бы точно разобрался, настроил, починил, автоматизировал. Ну или хотя бы знал точно причину, почему так, а не иначе.
А вместо этого у меня все работает хуй знает как и я просто смирился с этим. Причины даже не ищу — они опять в конечном итоге или совершенно идиотские, или «человек слаб».
В какой момент становятся дедом?
В интернете некий Julio Merino поставил на 600-мегагерцовый комп из 2000-х (с магнитным жестким диском, 128 Мб памяти, все как полагается) винду 2000 и показывает, насколько быстро открываются Мой компьютер (== эксплорер), терминал, блокнот и пейнт. Мнгновенно открываются, че.
Ему, конечно, не верят. То есть не то чтобы совсем не верят—видео все-таки, не особо поспоришь, когда тебе настолько перед фактом ставят—но придумывают какие-то хитрые причины, почему это «не показательно». Типа, другие приложения тормозили (и что), фич стало больше (где? в блокноте?), да они и сейчас не тормозят (тормозят, специально только что проверил), разрешение стало выше в 4 раза (а процессоры, память и диски в 100 раз, и что?).
По мне так все честно. Компьютеры сегодня сумасшедше быстрые. Но чтобы это ощутить, надо делать меньше работы. А мы их нагружаем херней какой-то. Нет ни одной _технической_ причины, почему простые приложения типа текстового редактора не могут запускаться за пару кадров экрана. Сколько оно там весит, 100 Мб допустим? Это читается современными дисками за сколько, 30 мс? Оверхед на ФС, распаковать, туда-сюда, ну допустим в 100 мс должны же укладываться? Вроде должны. Это холодный запуск жирного 100-мегабайтного приложения. Электрона практически.
Помните, чувак показывал свою ОС, которая устанавливается так, что инсталлятор не успевает на экране появиться? Мне тоже не верили, находили причины, почему это можно игнорировать. Конечно, если на каждый запуск ходить в интернет, общаться с десятками каких-то там системных сервисов, на вирусы проверять, сканировать все что можно, конечно все будет тормозить. What Andy giveth, Bill taketh away.
Секрет в том, чтобы этого не делать. И тогда будет быстро. ls вон, условно, быстрый же? Хотя вроде такая же программа, точно так же на С написана, точно так же в процессор и память ходит, диск еще читает. Легковесная? Так и вы не толстейте. Без GUI? А почему, собственно, GUI должен быть медленнее? Что в них такого особенного? Память под текстурки выделить? Ну не смешите мои тапочки. Инициализировать Оконный Фреймворк? Так он уже должен быть инициализирован, не?
Так что пока есть, как есть. Макбуки вон разогнали чутка с переходом на АРМ, но ничего, скоро засрут опять. И то самые легковесные 1-10 Мб приложения запускаются _видимое_ время, 500-1000 мс по ощущениям. А могли бы и не.
Что меня особенно бесит в компьютерах, так это что они сами как-то умудряются ломаться, без моей помощи. Когда ты их ВООБЩЕ не трогаешь.
Вот есть у меня комп с Виндой, на котором я в Нойту гоняю. Отдельная история, кстати, как я на него винду ставил. Закинул на флешку 11-ую, ставлю — поставилась десятая. И еще такая: а не хочешь на 11-ую обновиться? Хочу, говорю. А она: на твоем компе не пойдет. Я такой: ну ладно.
Потом у него сдох диск (семь лет компу, пора), но у меня был второй. И вот я с той же самой, сука, флешки, на тот же самый, сука, комп, буквально на следующий день, повторяю ровно те же шаги и что? Ставится 11-ая как миленькая. Магия!
Ну ладно. Установил дрова туда-сюда, поебался с блютусом, обычный PC experience. Поставил Стим, качнул Нойту. Оно создало ярлык на столе. Нормальный такой ярлык. Полноразмерный. И вот я каждый день комп включаю и процентах в 25% случаев ярлык показывается маленькой иконкой в 1/4 размера от рамки. А в остальных случаях все хорошо. И я ничего на этом компе не делаю. Абсолютно статичная конфигурация. Это буквально единственный ярлык и единственное приложение, которое там стоит. Апдейты они не выпускают как минимум с марта. То есть я _буквально_ ничего не трогаю, а оно ломается, а потом чинится как-то само.
Та же история, например, со слаком. Я его запускаю по работе иногда, но нечасто. Ну и конечно всякими глупостями типа регаться в других слаках или еще какими-то активностями, связанными с аккаунтами, никогда не занимаюсь. Бог миловал от такой необходимости. И вот сегодня он такой (Слак, не бог): а не хочешь ли, дружок, залогиниться? Куда? Зачем? РАБОТАЛО ЖЕ. Причем годами работало без разлогинивания. Что такое? Что случилось?
На днях еще вайфай сетка домашняя отваливалась. Типа, телефон коннектится, а интернета нету. Роутер я вообще сто лет не трогал. Пришлось доставать его из коробки в шкафу. И ладно бы какой-то переезд, или устройство новое, или смена тарифа хотя бы. Но нет, тот же самый телефон, который у меня уже годы и никуда особо не уходил.
Я уж про принтер молчу. Что этому товарищу надо никто вообще не знает. Но он, сука, чувствует явно, когда ты торопишься.
Так и живем. Зато не скучно.
UPD: Я почему на Слак взъелся? Разлогинивание в вебе без повода это обычный вторник, так чуть ли не каждый первый делает, и я, в общем, смирился. Но Слак решил, что они особенные, потому Слак один, емейл один, а ключей от него почему-то много. У них единственных система логина, которую я не смог понять и отказываюсь разбираться. Уникальная, как снежинка, блин.
А что, кому-то удобно, что на Ютубе цифры 1-9 перепрыгивают без предупреждения на 10%-90% видео? Просто я их ни разу кроме как случайно не нажимал, и каждый раз это катастрофа была, потому что позиция безвозвратно теряется.
И я вот задумался, а позитивный юз-кейс какой? Кому надо прыгнуть именно на 40% с клавиатуры? Типа я понимаю еще на 4-ую секцию видео, если они есть. Но 40% условные это же вообще говоря довольно рандомное место. Зачем?
Это я к тому, что больше фич ≠ лучше, и иногда вместо дополнительных функций лучше их не делать вообще.
Твит @tomakado:
> Я не понимаю вот чего: вот грузится у меня страница. Вот часть загрузилась, вижу кнопку. Нажимаю — ничего не происходит. А если подождать, пока страница полностью загрузится, кнопка работает. И так на каждом сайте. Кажется не должно быть так, не?
Узнали? Согласны?
А причина знаете в чем? Сайты сегодня делают для удобства разработчиков, а не пользователей. Как ни парадоксально.
Сейчас прибегут фронтендеры объяснять, что по-другому никак и я на самом деле хочу, чтобы кнопка не нажималась.
Не хочу. Это вы хотите. Хотите, чтобы стек был удобный для вас. Хотите, чтобы современный и популярный был. Чтобы вкатиться легко. Чтобы знать поменьше. А чтобы кнопка работала — не хотите.
То есть, вы конечно не против, если она вдруг начнет работать. Но это вас заботит в последнюю очередь. А в первую — ваше собственное удобство.
Дискасс
Если подумать, то в Си-подобном синтаксисе дофига нелогичностей. Ну, скажем, как вы вызываете функцию?
f(a, b)
a
, потом b
и только потом f
. То есть 2, 3, 1. Ну бред же!
a + b
+(a, b)
a f b
f(a, b)
нелогично!
o.m(a, b)
o.a(x, y, z).b(p, q, r).c(s, t, u)
x = o.m(a, b)
const num = multiply(add(subtract(15)))
const num = 15 |> add |> subtract |> multiply
15 |> add |> subtract |> multiply => const num
1 + 2
, а не 1 2 +
и не +(1, 2)
. Но мы-то инженеры, мы должны лучше эргономику чувствовать, чем математики. Математика вообще когда-то оптимизировалась под запись ручкой на бумаге, оттуда идут и однобуквенные обозначения, и всякие нетривиальные многострочные лайауты для дробей, и значащие орнаменты на буквах (N ≠ ℕ
≠ 𝒩).1 2 + => x
выглядит дико. Но зато она логичная! К непривычности можно привыкнуть, а вот отсутствие логики не устранится никогда. Опять же, Лиспы тоже выглядят сперва непривычно, однако очень быстро привыкаешь писать (+ 1 2)
и даже ловить в этом единообразии кайф.Гитхаб выкатил новый дизайн навигатора кода, который до этого обкатывали в превью. Было только для желающих, а теперь и для нежелающих. Это, кстати, кажется единственная превью-фича, которую я почти сразу же отключил.
Вкратце, помимо собственно файла слева теперь панель с деревом кода, справа — панель символов в текущем файле, сверху sticky заголовок, который показывает начало функции, если ты долистал до ее середины, а кнопка T (перейти к файлу) теперь в малюсеньком попапе.
Вот что я хочу про него сказать: да, функций стало больше, так что формально, на бумаге, стало полезнее. Я уверен, что они даже иногда приходятся кстати.
Но меня не покидает ощущение перегруженности. Что тебе так много показывают, что ты не знаешь даже, куда смотреть. Тем более что визуальной иерархии, главное-второстепенное, тут не сделали. В итоге у тебя три визуально равноправные панели, хотя ты всего-то хотел посмотреть на файл. Хуже того, текст файла даже теряется, потому что обе панели используют гораздо более яркие иконки.
Второй момент — это лайаут. Я уже писал, как не нравятся дебаггеры и devtools чисто визуально, потому что там миллион панелей, расставленных более-менее случайно. Так и тут. Еще я когда-то писал, что первое ощущение от Идеи — что тебя обложили. Потому что панели со всех сторон — слева, справа, снизу и сверху. Хотя вроде особо выраженной клаустрофобией я не страдаю, но все равно, тесновато. Удивительно, что гитхаберы снизу никакой панели не влепили. А чего, место же есть!
В принципе, собрать «как было» в новом дизайне почти можно. Можно скрыть обе панели, и тогда из ухудшений останутся только трехуровневая прилипающая шапка и засунутый в попап go to file, который будет выровнен по правому краю (бе).
Я это пишу, потому что наверняка набегут умники только чтобы сказать «чего ты разнылся, вот же, можно сделать как было». А разнылся я, конечно, не для себя, а для моих дорогих читателей, которым не просто надо как-то приспособиться, а которые будут когда-нибудь дизайнить свой продукт и им это наблюдение пригодится: помнить нужно не только о функциях, но и визуальной простоте, лаконичности, легкости. Этот блог вообще не о том, как мне плохо с текущими инструментами, а как делать хорошие, новые.
А с Гитхабом, я думаю, дальше будет все хуже и хуже. Теперь, когда туда пришли vs-кодовцы и у них появились свободные руки, которые надо чем-то занять, он будет только усложняться. В здоровом стартапе, где рук сильно не хватает, фичи взвешиваются по коэффициенту легкость реализации/важность, и делается в основном только самое главное. В успешном энтерпрайзе же рук сильно больше, чем хороших идей, куда эти руки приложить. Поэтому реализуются даже супер неэффективные/ненужные фичи, просто потому что могут и потому что надо чем-то занимать программистов. Ровно то же самое произошло и с VS Code. Так что держитесь, зима близко.
Любопытный инцидент произошел в твиттере. Проживающий в Сан-Франциско шведский дизайнер Расмус Андерсон выложил картинку с текущим состоянием кириллицы в его широкоизвестном шрифте Inter и попросил у носителей письменности комментариев.
Одним из первых в реплаи пришел Сережа Рассказов, дизайнер из Украины^W Петербурга, проживающий сейчас в Швейцарии, и выдал следующий фидбек:
> In small details not well. Most ugliest form is the left stem of the Л. Did you read this article? https://type.today/en/journal/neo
Произошел, как остроумно заметили в Твиттере, культурный обмен. Но прежде чем мы пойдем разбираться в деталях, подумайте, как вам такой реплай? Все хорошо? Нигде не жмет? Или есть проблема? Если да, то в чем.
В общем-то, написать я об этом решил только когда увидел, что народ в обсуждениях этого инцидента путается с пониманием, что тут не так.
Самое очевидное — не похвалил. Где же тот сэндвич из эмейзинг-эмейзинг, внутрь которого нужно упихнуть настоящую критику? Ух, опять эти американцы показали себя неженками, не могут вынести, когда им правду в глаза говорят. Ты покритиковал, но сделал это без уважения... Вот русский человек такой фидбек любит.
Но это, конечно, не то. Дело не в похвале и не в эпитетах (хотя и в них тоже). Просто этот комментарий неконструктивен. «Мне не нравится» — и что с ним, таким, делать? Зачем мне это знать? Как сделать лучше? Какие критерии? Что конкретно не нравится? Просто «not well» это обосрал и пошел дальше. И обижаться тут можно только на то, что если уж обсираешь, то ругай конкретные вещи. А так это прямая агрессия, и будь ты хоть американец, хоть русский человек из глубинке, хоть кошка, — это неприятно.
Еще раз. Никто не обижается на то, что тебе что-то не понравилось. Обижаются на то, что ты зачем-то с этим своим мнением пришел и на автора его вывалил. Типа, эй, у тебя рожа кривая! И дальше-то что? Что мне с этим делать? Кроме того, что ты себя обозначил как агрессивно настроенный ко мне человек. Но зачем?
А нормальный конструктивный комментарий выглядит как-то так:
> The Cyrillic breve must be wider and heavier than the Latin one.
Или так:
> Lift an oval of Ф just a tiny bit, otherwise it’s falling down.
Что характерно, оба комментария от шрифтовых дизайнеров, то есть людей, которым знакомо чувство «сделать самому и поделиться с миром» и они естественно понимают, какой человеку фидбек нужен. А есть там булшит-сендвич или нет — дело десятое. Не в сэндвиче дело.
Так что будете в следующий раз писать в код-ревью «этот код — говно» остановитесь и задумайтесь, а почему, собственно, говно? В чем конкретно его говнистость? А то может вы и сами не знаете. А как подумаете, может, он и неплохим кодом покажется.
Накинул в Твиттере, как должно работать редактирование rich text.
Вкратце, если в строке 111222333 середина (222) выделена, например, жирным (курсивом, кодом — неважно), то между 1 и 2 должно быть две позиции курсора, а не одна. Сейчас (почти везде) одна — форматирование берется от куска слева. То есть можно дописать еще неформатированных единичек между 1 и 2 либо жирных двоек между 2 и 3, но нельзя дописать между 1 и 2 или неформатированных троек между 2 и 3.
Ну и говно получается. Сделал ты, например, ссылку с текстом «тыц». А потом думаешь: возьму-ка я ее в скобки. Ставишь скобку слева — она ставится простым текстом. Ставишь справа — она становится частью ссылки. Неаккуратненько.
Решение, которое я предлагаю: сделать вид, что там две позиции, даже если формально она одна. Типа, идешь курсором справа, дошел до границы 3 и 2. Стоишь в неформатированном тексте. Если начнешь писать, полезет неформатированный. Нажал кнопку «влево» — курсор остался стоять там же, но по внутренней логике ты перескочил «внутрь» форматированного куска. И теперь, если начнешь писать, в том же самом месте полезут уже жирные буквы.
Хорошая идея? По-моему хорошая. Простая, понятная, дающая пользователю силу и контроль. Удивительно, что за столько лет никто редактирование rich текста так и не пересмотрел и не перепридумал, все это тянется наверняка с каких-то первых word процессоров самых древних.
Но пост не об этом (сюрприз!). С одной стороны, идею активно поддержали, а с другой набежало куча фанатов Маркдауна, кричащих, что Маркдаун это то же самое или даже лучше.
Не лучше. Про Маркдаун надо понимать одну вещь: он родился от бедности. Писать как-бы форматированный текст там, где есть только plain text. Ну и поднялся частично на том, что rich text был настолько плохо везде сделан (о чем, собственно, моя идея) что всех заебал. А тут — проще, понятнее, предсказуемее.
Есть такая поговорка, якобы от лица продавца дрелей: «людям не нужна дрель, им нужна дырка в стене» (к ней тоже есть вопросы, но она очень уж эффектно доносит мысль).
Так и с Маркдауном — на самом деле, люди не хотят видеть решетки в заголовках или звездочки вокруг слов. Они хотят, чтобы было видно структуру. Они хотят, чтобы редактирование нормально работало, копирование нормально работало, отображение нормально работало. Но при прочих равный, эй, жирный текст должен быть жирным, а не обычным со звездочками вокруг.
Поймите меня правильно — я сам фанат Маркдауна, и провел в нем лет десять уже. И блог свой в нем веду, и пост этот пишу тоже в Маркдауне. Пришлось даже запомнить, как ссылки правильно ставить.
Но это все не потому что я хочу заголовки выделять решетками, а потому что Sublime Text очень уж хороший, сука, редактор. Ну и потому что форматирование/редактирование в условном Ворде сосет.
Но тут важно понимать, что Маркдаун это не цель. Цель — красиво отформатированный и сверстанный текст. Так получилось, что сейчас это удобнее делать в Маркдауне. Даже если придется смотреть на весь этот мусор, который сопровождает их форматирование.
Кстати, другая важная вещь, которую Маркдаун вскрыл — что такие меню, как в Ворде, где ты можешь каждой букве свой шрифт поставить и каждому параграфу свои отступы — они обычно как раз не нужны. Что есть очень ограниченное подмножество опций форматирование, и меньше значит лучше.
Но, опять же, это никак не ограничено Маркдауном. В Ноушне, например, это так и сделано: шрифт поменять нельзя, а слово жирным сделать можно.
Так что пользуйтесь, но помните, по какой причине мы на самом деле все в Маркдауне сидим. Не от хорошей жизни, скорее от плохой.
Увидел вчера видос, где якобы обсуждают «Worst Practices» программирования. Ну и там тетка три минуты рассказывает, как использует для дебага printf и ей стыдно. Мол, надо бы дебаггером научиться, конечно, пользоваться, но принты это так удобно.
Ну и в твиттере довольно адекватная реакция: народ не понимает, а почему, собственно, worst? Я склонен присоединиться: да, логически, дебаггер более правильное решение, более изящное, более мощное. Но только логически!
Если ты, я и Сашка все равно пользуемся принтами каждый день, то, может быть, надо не стыд по этому поводу испытывать, а задуматься: что-то наверное не так с дебаггером, раз люди его подсознательно избегают? Значит, есть какое-то преимущество у принтов, которое может никто и не формулирует, но все подсознательно чувствуют. Если ваша теория не может объяснить полет шмеля, то проблема в вашей теории и надо еще подумать, а не ходить и объяснять всем шмелям, что они на самом деле не могут летать.
Ну и делать по этому поводу тоже понятно что: надо это преимущество найти, осознать, изолировать и может быть как-то более изящно в ИДЕ встроить, если получится. А не делать вид, что дебаггер очевидно лучше и всем было бы неплохо им научиться пользоваться. Очевидно, как раз, что не лучше. Осталось это признать и заживем мы все в мире и гармонии тогда.
Начать можно, например, с того, чтобы сделать его полегче как-то. Вот хорошо сформулировано:
> I’ve never quite understood why it [printf] is the worst: the feedback loop is very short so you get to quickly test hypotheses and explore the code. With a breakpoint you’re transported like some lower life form onto the USS Enterprise.
Я как-то постил в твиттере, что какие-нибудь условные Dev Tools тоже выглядят как космический корабль или картина Босха. К дебаггерам это тоже относится: там сразу открывается пяток панелей, которые как попало по экрану разбросаны, неочевидно друг с другом связаны и все время что-то показывают. Понятно, что иногда каждая из них по-отдельности нужна. Но не все же время!
Второй момент это очевидно что надо вручную куда-то ходить, тогда как интересно, наверное, трейс исполнения, а не хождение по нему. Ну и шагать назад, а не только вперед, было бы тоже неплохо.
Что думаете? Как починить дебаггер, чтобы люди хотели им пользоваться?
Чистил на днях папку Downloads и натолкнулся на поведение, про которое в принципе знал чуть ли не с первых дней знакомства, но которое все равно приятно меня удивило на фоне все плохеющего и плохеющего софта.
В macOS есть понятие Quick Look — это когда в Файндере ты нажимаешь пробел и любой файл тебе как-то показывется тут же в попапе. В интернет-магазинах иногда подобное делают, типа, посмотреть чуть крупнее/подробнее, но не переходить на страницу товара (поотму что долго, контекст потеряется, кнопка назад кое-как работает и вообще это сайт, люди в вебе должны страдать).
Ну вот, в macOS такая функция тоже есть системно, и она типа покажет файл по-быстрому, не открывая его родной программы. Не со всеми форматами умеет, но с картинками, pdf и всякими текстовыми хорошо справляется, и даже сторонние приложения регистрироваться могут. Markdown, например, гораздо удобнее так смотреть, потому что иначе оно начнет Xcode открывать (что? да!), а это история не на одну минуту. А тут почему-то за миллисекунду может показать, хотя, казалось бы, тот же файл, и просмотр тем же Xcode-ом реализуется. Получается, могут и быстро сделать, если захотят.
Ну так вот, поведение это заключается в следующем: если открыть, скажем, картинку в QuickLook, появится попап с ней. Если после этого нажать Cmd+Down, который «просто открыть в программе», откроется Preview, полноценная программа уже, которая всякие там аннотации умеет, конвертацию и прочее. Настоящий просмотрщик уже.
Так вот, окно Preview возникнет вокруг уже открытой картинки. Т.е. картинка на экране не сдвинется ни на миллиметр, останется пиксель-в-пиксель, даже не дрогнет. А вот рамка окна от QuickLook спрячется, и на ее месте вырастет рамка окна Preview.
Ну круто же!
Причем это поведение идет с самых первых версий OS X, вроде как. По крайней мере с тех, с которых я начинал. Тогда еще операционные системы были не просто лаунчерами для Электрона, а имели какие-то отличительные черты, за счет которых переманивали пользователей. Старались помогать людям, а не менеджерам производителя.
Архитектурно это, наверное, не очень аккуратно — получается, две разные программы друг о друге как-то знают, и вообще дефолтный просмотрщик можно поменять, но из коробки работает и чуть лучше, чем ожидаешь. Такое вот внимание к деталям там, где никто, вроде бы, не просил.
Ну вот. А теперь ложка дегтя. Только я собрался этому в очередной раз порадоваться и написать в твиттер, что, мол, скучаю по тому самому Эплу, который делал такие вот безумные штуки на ровном месте и как за вот это вот дополнительное внимание его и ценили. Собрался, закрываю Preview, чтобы экран на этот раз заснять, а под Preview осталось окно от QuickLook! Незакрытое. И оно его мне гордо показывает.
Тут надо заметить, что QuickLook вещь вообще очень контекстуальная. Оно создает очень странные окна, которые не крадут фокус, например, и во многом довольно странно себя ведут. Так что это не то чтобы «оно показало окно незакрытого приложение». Это скорее что-то вроде «я функцию уже дописал, а автокомплит до сих пор открытый висит». Неожидаемое поведение. И раньше такого, вроде бы, не было.
Так что да. Чуда не случилось. Поведение, скорее всего, дожило до наших дней по чистой случайности. А я все равно скучаю по тому самому Эплу. Привет.
Споткнулся вчера на довольно тривиальной фиче: я использую sdkman для управления версиями java, увидел, что на днях вышла 20-ая, а так как я люблю все новое, я конечно решил попробовать. Ну и пишу:
sdk use java 20-open
Stop! Candidate version is not installed.
Tip: Run the following to install this version
§ sdk install java 20-open
Кстати, пока мы не разошлись. В том же самом интервью Лекс, понятно, спросил, разгонят ли 90% программистов-неумех? На что Олтмен ответил: не разгонят, но если код станет писать легче, просто все начнут писать намного больше кода. Миру, говорит, кода остро не хватает!
Ну и по этому поводу у меня, конечно, противоречивые чувства. У меня есть ощущение, что как в двухтысячных начался Веб, так мы до сих пор и не разобрались, как его хорошо делать. И натив тоже. А тут уже ИИ привлекают. Стыдно!
С другой, конечно, как старому деду, мне кажется, что кода не мало, его много. Надо больше Кложей и меньше Котлинов, условно. Больше Go и меньше JS-а. Больше Хаскеллей, меньше C++. Больше unikernel-ов, меньше докеров. Больше короткого и простого, меньше раздутого и сложного.
Но, реалистично, теперь уже, наверное, никогда и не наведем порядок. Будем промты генерировать, как маги заклинания, а под капотом что-то там совсем неведомое будет происходить, и иногда работать, а иногда и нет.
Добро пожаловать в сингулярность!
Я вообще телефоном редко пользуюсь, потому что — ну, ноут же есть, там все удобнее, — но иногда захожу и поражаюсь. Например, Эпл в какой-то момент решил, что их главная фишка — защита приватности пользователей (от всех кроме самого Эпла). Не функционально, а именно маркетингово. И начали парить этим театром безопасности пользователей. Типа, если будет просто секьюрно, никто не заметит и новый телефон не продашь. А вот если будет сто пиццот уведомлений, то тогда-то продажи и попрут. Ну или повышения, я не знаю, что там первопричина.
Ну в общем, в какой-то момент они решили, что выбирать фотки несекьюрно. И сделали двухэтапный механизм: ты жмешь в приложении кнопку, открывается интерфейс Эпл фоток, где ты — ага, подумали, выбираешь фотки? Ну нет, это было бы слишком просто. В этом интерфейсе ты выбираешь фотки, которые потом сможешь выбрать в приложении.
Что? Да! Одни и те же фотки приходится выбирать два раза. Удобно? Логично? Интуитивно? Нет! Может быть, хотя бы секьюрно! Тоже нет.
Вчера пытался фотку в Сигнале отправить. Это такой супер-секьюрный мессенжер, который первым делом просит подтвердить твой номер телефона и дать доступ к контактной книге, для максимальной секьюрности. А то мало ли. Вдруг ты там кому-то сообщение отправишь, а мы и не узнаем.
Ну вот, не смог, как раз из-за этого двухэтапного выбора. Эпл дало доступ Сигналу к каким-то там 10 условно фоткам, которые я когда-то полгода назад кому-то отправлял. А новые добавить нельзя. Ну или я не понял как. И это я еще знал и понимал, что происходит! Как живут простые люди я вообще не представляю. Типа, они видят вместо своего альбома 10 старых фоток. Где? Что? Почему? Где остальные? Очень сочувствую.
В общем, понятно, что давать всем и каждому доступ ко всем фоткам сразу это странновато, я согласен. Но можно же сделать один интерфейс, пусть системный, где фотки надо выбирать один раз?
В следующий раз обсудим «приложене Камера хочет использовать камеру» и другие бест практики в безопасности. Чюс!
Пишу на бегу, так что кратко. Ничто так сильно не подчеркивает, на каких соплях держится наша индустрия, как строка User-Agent.
Вы только посмотрите на эту красоту:
> Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Угадали браузер, кстати? Конечно, это же очевидно... Хром! Ну да, Хром, вон же он в серединке, прямо между Mozilla и Safari.
Короче, там история такая: сайты хотят выглядеть наилучшим образом, поэтому палят из какого браузера к ним приходят. Браузеры же, в свою очередь, периодически чинят проблемы сами и начинают прикидываться другими браузерами, чтобы их начинали считать за «более белых людей». И вся эта история тянется, сами видите, как минимум с Gecko/KHTML дней. Прям годовые кольца.
В итоге все друг другу пиздят, все к этому привыкли и не верят, конечно, но продолжают это делать. И не только тут, есть же еще версия стандартов в самом HTML, и в JS тоже есть флажки. Короче, весело. Но самое удивительное, что по какому-то странному стечению обстоятельств это все еще и работает.
Удивительно, что в этой строке нигде нет хоть какого-то упоминания Internet Explorer. Также удивительно, что ее не прикрыли под шумок заботы о privacy. К тому же я почти уверен, что она уже нигде и не нужна уже. Ну допустим есть где-то старый очень сайт, заточенный под IE 5. А ты приходишь к нему с самым современным найтли Хромом. И что вы оба будете в этой ситуации делать?
Короче, странная идея делать универсальный протокол и потом в клиенте анонсировать, что он не такой уж и универсальный, а клиенто-зависимый.
Очень надеюсь, что когда кто-нибудь запилит наконец новый браузер, там будет красиво написано NewBrowser/0.1. Ну а потом как обычно, конечно 🙂
Мой друг Кирилл пишет:
---
У нас тут в офисе «починили лифты» Ж)
Было – просто лифт с двумя кнопками снаружи, типа «хочу вверх/вниз» и 15 кнопок этажей внутри. Ничего необычного, вызвал лифт — внутри нажал куда хочешь и поехал.
Теперь это целое приключение: перед лифтом тач-панель с 15ю цифрами, нажал одну — появится гигантская, во всю панель, цифра лифта в которые тебе заходить. Она закрывает все остальные кнопки секунд на 5 и пока все люди, которые ждут лифт, не подождут пока номер лифта не перестанет загораживать остальные кнопки и не нажмут на свой этаж — никто никуда не поедет. Дальше веселее — внутри мааааленький экранчик на котором заливкой выделены этажи на которых лифт остановится. Этот экранчик уже без тача и по сути просто индикатор что ты не осел и нажал перед лифтом свой этаж.
Вот эта хитрая комбуха уже столько ситуаций нагенерировала за последние пару недель:
- бежишь на работу, дверь лифта открыта. заскакиваешь, двери закрываются и на маленьком экране нет твоего этажа. Еб его мать, забыл на большом нажать. Хуй с ним едешь до первого попавшегося, выглядываешь что бы нажать на свой и сразу заскочить назад — хер тебе, жди другой лифт, этот поедет без тебя.
- я иногда с 15ого на 12ый еду, у нас там другой отдел сидит. угадай сколько раз люди пытались заскочить за мной думая что я еду на первый...
- стоит открытый лифт. Подходишь, жмакаешь на свой этаж и эта херны высвечивает номер ДРУГОГО лифта, стоишь как дебил размахиваешь руками перед людьми уже в первом что бы они тебя не ждали. С чего вдруг другой лифт — магия похлеще ChatGPT
- задумался пока ехал, дверь открылась, типа тебе выходить, а перед глазами гигантсткая цифра 3, которая номер лифта. вроде я знаю что это не номер этажа, но спросонья все равно начинаешь судорожно глазами елозить по всем экранчикам пытаясь понять туда приехал или нет.
Кароче, квинтэсенция подхода – давайте сделаем что бы было как в киберпанке, а на деле – скажите спасибо что хотябы интерфейс не на электроне.
ну и до кучи – эта реновация заняла 4 месяца) из 4х лифтов ездили только два. выбраться в час пик на обед было нереально. после того как запустили эти два – закрыли другие судя по всему еще на 4 месяца Х)
---
Мой комментарий: как же любят люди переизобрести то, что нормально работало, только хуже! Очень красивая история.
Есть у меня такая привычка, выделять текст пока читаю. Неважно откуда, зачем и почему. Просто есть. Пишите плюсики в чат, если у вас тоже.
Ну и в общем читать текст, который нельзя выделять, мне сложновато. Читать текст на сайте, где по выделению вылазит какой-нибудь совершенно идиотский попап — трудно вдвойне (да, я смотрю на тебя, МЕДИУМ).
Дальше этот тик распространяется вообще на все. Любая вещь, попавшая под руку, превращается в фиджет: ручка, скрепка, кольцо, резинка, whatever. Я буду крутить Эпл-карандаш, отвертку или молоток, если ничего подходящего под рукой не будет.
Поэтому я так люблю физические кнопки, а не тач-поверхности: они дают определенную долю свободы, в пределах которой их можно теребить, и ничего не случится. Скажем, кнопки на макбуке я могу гладить или чесать об них пальцы, а вот кнопки на экранной клавиатуре айпада для этого уже не подходят.
И именно поэтому всякие тач-устройства вызывают у меня чувство неприятной концентрации. Ну, знаете, когда берешь телефон, у современных сейчас вообще весь экран нажимается, нет безопасных зон. Ну вот, берешь и боишься, как бы чего ненароком не нажать. Очень неудобно. И нервно.
Т.е. да, функцию он конечно выполняет. Но вопрос комфорта, он в том числе и между функциями, что я могу делать, пока мне ничего не нужно.
Ну и вот. Это все длинное вступление к чему. Вспомнил интересную деталь про Эпл Виар: там управление по взгляду. Куда посмотрел, то и нажалось (надо еще пальцы сжать, но сперва посмотреть все равно). И они там вроде как рассказывают, как специально придумывали визуальный стиль без рамок и обводок, потому что на рамки отвлекается взгляд и это регистрируют очки. А взгляд это основной способ указания.
И вот что я по этому поводу думаю: я ж ебанусь в таких очках. Не то что руками свободно не повертишь, так еще и смотреть куда попало нельзя! Дивное новое будущее.
Эплы на презентации показали свой дорогущий шлем дополненной реальности. В целом у меня много вопросов к тому, зачем это нужно и кому, но вот один я хочу разобрать подробно. Это бесконечный рабочий стол. Вот Бирман пишет:
> Самое первое, чего я жду от виар-шлема — это просто бесконечно-дюймового экрана. 6К-монитор у Эпла стоит столько денег, что страшно. Но представьте, что Эплам в шлеме удалось решить проблему низкого качества картинки, а глаза не охреневают от нескольких часов в нём. Тогда просто возможность делать всё то же самое, что вы и так делали с компьютером, но с бесконечной рабочей областью вокруг вас — это уже невероятный прорыв. Можно открыть Фигму на всю стену, а остальные окна расположить по бокам вокруг. А если ещё и зазумиться можно будет просто движением головы вперёд, так вообще сказка будет.
И да, что-то такое в принципе Эплы и предлагают. Есть вопросики с самими приложениями (пока там только айфон/айпад или стриминг экрана с макбука, который сами понимаете как будет работать), но допустим их как-то порешают и действительно появится, _что именно_ открывать в этом бесконечном рабочем пространстве.
Ну вот, а вопрос, собственно: а чего сейчас-то так не сделать? Ну вот есть у тебя 27" экран. Возможен ли на нем зум-интерфейс? Да возможен, конечно. Expose на Маке уже лет 15 как есть. Оно не совсем то дает (окна не организованы в пространстве, а просто рандомно располагаются каждый раз), но _технически_ можно было бы сделать тот самый «бесконечный» рабочий экран хоть на 13" макбуке. Или не зум, а бесконечный скролл во все стороны? Возможен конечно.
Но никто не сделал. Почему? Мне кажется, важно понимать, почему для маков бесконечный рабочий стол не вариант, а для VR-очков внезапно очень привлекательное предложение. Потому что технически-то оно возможно очень давно. Но вместо этого Эплы изобретают очередной идиотский Stage Manager или странный супер-тормозной split screen.
Я не хочу хейтить новые идеи или критиковать старые. Но тот факт, что за 15 лет ничего подобного Infinite canvas/Zoom UI не появилось, а все попытки его таки сделать провалились, говорят ли они нам что-то о фундаментальной несостоятельности идеи? Можеть быть, да. А может быть, есть некое качество именно VR-шлема, которое сделает идеи такого UI состоятельными. Я не знаю. Но понять было бы интересно.
В какой-то момент Эплы на презентации, в рассказе про VR ОС, упоминают, что им пришлось разработать совершенно уникальный, никогда не виданный движок, поддерживающий «много приложений одновременно». Что как бы да, для телефона действительно звучит ново и круто, но меня печалит, что компьютеры так-то всегда так и работали, и никто даже не думал это выдавать за инновацию.
Так что я немножко переживаю, насколько это действительно что-то новое, а насколько переизобретение того, что мы давно прошли. Пока впечатления смешанные.
Ох как меня бесит выражение «у этого Х есть математическая основа». У Хаскеля есть математическая основа. У SQL есть математическая основа. Как будто это знак качества какой-то. Как будто математики не могут иногда и фигню придумать.
Математики же как — формально что-то доказали, а если тебе что-то не нравится, или не схотится с твоим повседневным опытом — так это потому что ты сам дурак, мы-то термины по-своему определили. А если тебе что-то важно, но доказаться получается что-то другое — ну сорян.
Я уж не говорю о том, чтобы делать удобно. Это вообще не про математику.
Это не значит, что все, к чему притрагиваются математики, плохо, конечно. Это значит, что это не _априори_ хорошо. Т.е. может оказаться как плохо, так и хорошо. Как у всех. А то, что человек математик, не значит автоматом что он все превращает в золото.
Чего я не понимаю так это лимита на длину строки. Ну там 80, 120, знаете, как занудные программисты любят себе настроить и потом еще другим мозг этим парить.
Не понимаю я вот почему. Ситуации бывают разные. Бывают 4К телевизоры, а бывают 720p ноутбуки. Бывает хорошее зрение, а бывает шрифт 20 пунктов. Бывает терминал развернут на весь экран, а бывает на половину. Бывает открыта дерево файлов слева, а бывает дебаггер справа. Короче, в каждый конкретный момент размер экрана может быть совсем разный. Даже в пределах одного программиста и одного сетапа.
Ну и какой из этого вывод? Очевидно, что ширина редактора должна настраиваться редактором, динамически. В зависимости от размера окна. Или настроек пользователя. Или еще каких-то факторов. К счастью, редакторы это прекрасно умеют, и код переносить, и ресайзиться динамически. Даже терминалы умеют, что уж о нормальных редакторах!
А предлагается что? Предлагается эту ширину захардкодить в абстрактное с потолка взятое число. Ну, не совсем с потолка, конечно, а знаете откуда? С перфокарты. Да, это не шутка. 80 символов — это 80 колонок на перфокарте. Загуглите фотку, если не верите.
То есть, принудительно засунуть текст в рамки, которые, скорее всего, не подойдут и неудобны никому и ни в каких условиях. Ну может удобны иногда, но не оптимальны.
Но самая жопа знаете какая? Это изменение необратимо. Если ты расставил переносы после каждого 80-го символа, редактор ничего с этим не сможет сделать, только показать как есть. И пофиг, что у тебя справа еще три тыщи пикселей пустуют. Тимлид сказал что надо врапать после 80-го — значит будем врапать.
А наоборот — обратимо. Если принудительно текст не переносить, то редактор прекрасно его перенесет на любой желаемой колонке, в реальном времени, хоть 60 раз в секунду.
Так что ситуация несимметрична. Выбор очевиден. Но попробуй пойди это объясни программистам.
Когда-то, лет, допустим, 20 назад, фичи операционных систем что-то значили. Помню, как читал книжку по Windows 95 и восхищался кнопке Пуск, панели задач, корзине и пытался понять, зачем нужен Портфель. У МакОСа тогда тоже наверняка был такой период, просто у меня на него денег еще не было.
Более того, компании-производители ОС кое-что еще умели, и программы, которые шли с ОС, вызывали восторг. Лучший музыкальный плеер был в встроен в МакОС, лучший текстовый редактор — в Виндоус, лучшая игра — пасьянс Косынка — тоже.
Ну и вот. В какой-то момент все все фичи сделали, что можно друг у друга украли, и стало непонятно, что делать дальше. Пришел веб и забрал у ОС функцию провайдера фич, а также нормализовал более-менее все интерфейсы между платформами. Компании-производители ОС разучились писать хороший софт, и сейчас никто в здравом уме не пользуется встроенными почтой, сообщениями или фотками. Музыку просрали, книги просрали, кино просрали, даже спотлайт и тот просрали. И даже браузер ушел к третьим лицам, хотя когда-то Майкрософт плотно доминировал на этом рынке И имел преимущество предустановки.
Короче, да, веб — это новая ОС. Там происходит жизнь, делают какие-то новые фичи, улучшают старые, закрывают уязвимости, развиваются, а главное — дают разработчикам и юзерам что-то, с чем можно, и, главное, хочется работать.
А хотелось бы чтобы в ОС тоже теплилась какая-то жизнь. Чтобы выкатывались новые фичи и АПИ, полезные системные сервисы, которыми хотелось бы пользоваться.
И вот у меня есть идея, что можно было бы улучшить. Работу с фокусом. А именно — кражу фокуса. Дело в том, что сейчас любое приложение может украсть фокус в любой момент. Захотелось левой пятке — пошло и выставило себе на передний план. Юзер-экспириенс хуевый, зато, наверное, менеджеры рады.
В вебе есть похожие прецеденты. Например, когда-то страница могла открыть всплывающее окно в любой момент. А теперь — не может. Надо, чтобы пользователь сперва активно на что-то нажал. Так веб защищает пользователей от недобровестных сайтов.
Хочется, чтобы ОС работали так же. Я нажал на иконку — появилось окно и забрало фокус. Я переключился куда-то — все, хуй тебе, а не фокус. Жди, пока тебя явно не позовут. Это гигиена простейшая, правила хорошего тона.
Красота этого решения в том, что от него никто не пострадает. Ну, не вылезет окно на передний план там, где раньше вылазило. Ну и не беда — пошел и нажал на него сам.
Сейчас некоторые приложения латают кражей фокуса собственные проблемы с запуском. То есть я кликнул на иконку, приложение начало запускаться и запускается, скажем, 10 секунд. В течение этих 10 секунд на экране ничего не происходит. Пользователь, естественно, уходит заниматься своими делами. А тут приложение хоба-на: «я запустилось». И вылезает поперек экрана. Ну что за дела?
В общем, было бы круто, если бы ОС встали немножно на сторону пользователя и боролись с подобным абьюзом, ровно как это происходит в вебе. А то сколько раз можно переключатель раскладок ломать, а, Эпл?
Хостер Vercel анонсировал поддержку баз данных, в том числе Postgres, и проиллюстрировал анонс вот таким примером кода:
import { sql } from '@vercel/postgres';
import { redirect } from 'next/navigation';
async function create (formData: FormData) {
'use server';
const { rows } = await sql`
INSERT INTO products (name)
VALUES (${formData.get('name' )})
`;
redirect('/product/${rows [0].slug}');
}
export default function Page) {
return (
<form action={create}>
<input type="text" name= "name" />
<button type="submit">Submit</button>
</form>
);
}
Тут как-то удачно выпал Ludum Dare Game Jam на выходные, и я решил опять попробовать свои силы. А то сколько можно критиковать чужие вещи и не делать своих, жить в иллюзии, что я бы смог лучше.
Ну и в общем ощущения какие-то не такие радужные. Да, я опять взял Godot, у него как раз вышла четвертая версия.
И я вот что думаю — игровые движки вообще как бы должны очень много очень сложных вещей делать. То, что я там какие-то двумерные спрайты по экрану гоняю — это вообще же и одного процента не затрагивает того, что они _могут_ делать.
Ну и вот. Сделал я какую-то заготовочку самую простейшую. Рисую спрайты — картинка не перезагружается. Гуглю — никто не знает, что делать. Перезапускай, говорят, редактор (перезапускается он тоже, кстати, странно — три иконки одинаковых показывает, одна, видимо, лаунчер, вторая лаунчер лаунчера, а третья уже сама программа).
Ладно, потерплю. Поработал два дня. Дай, думаю, выложу текущую версию. Экспортирую в HTML. Оно качает 500 Мб (еще!), пыхтит и... не работает. Гуглю. Опять, никто не знает, что делать. Но я такой не один.
Ну и мораль. Как вообще супер-большие и супер-сложные программы умудряются что-то сложное делать, если они даже простых вещей сделать не могут? Меня это в энтерпрайзе всегда удивляло, ну и вот тут теперь тоже. Кажется, что простые вещи должны делаться проще и надежнее, а на деле нет — даже простые не работают.
Надо свой движок делать, короче. А то на интерфейсы что Годо, что Юнити смотреть невозможно без слез. Работать в них без Ютуба тоже, кстати — шансов найти нужную кнопку тупо нет. Надо именно посмотреть, куда и в какой последовательности нажимают другие люди. Хотя казалось бы — смотри как Фигма и делай как они.
Кстати, экспорт из Фигмы тоже полное говно. Я хочу, чтобы я поменял цвет и все, сразу в игре он появился. А сейчас надо четыре кнопки в разных местах нажать, чтобы просто картинку из нее получить. Будет первая фича моего гейм-движка: прямой риалтайм импорт из Фигмы.
Решил поковырять небольшой сайд-проектик, который начал в прошлом году. Открываю, а там код разобранный (не работает то есть) и незакоммиченный. Так что первый совет — никогда не бросайте код в разобранном состоянии. Потом фиг вспомнишь, что ты сделать хотел. Ну и начать работать все-таки приятно хотя бы с какой-то запускающейся точки.
Надо чинить, значит. Начал разбираться. Ага, смотрю, импортов не хватает. Припоминаю, что я код там на модули разделял, ну и попереносил немного. Конкренто, некий core/get-byte
отсуствует.
Не беда! Делаем поиск по проекту, находим, что get-byte
теперь живет в homm.core.byte-buffer
. Вот вам и второй совет — неймспейсы это конечно хорошо и изолируют, но имена функциям и классам все равно старайтесь давать уникальные в рамках всего проекта. Проще искать потом будет.
Ладно. Делаем (:require [homm.core.byte-buffer :as ...
. As что, собственно? Обычно я просто последнюю компоненту имени использую. Получается (:require [homm.core.byte-buffer :as byte-buffer])
.
Окей. Не нравится. Это каждый раз, когда мне надо байтик прочитать, надо будет целое byte-buffer/...
писать, длинно.
Окей. Может быть, есть какое-то естественное сокращение? Конечно! bb
. (require [... :as bb])
. Красиво, коротко, понятно!
И тут я задумался. Красиво-то красиво, но знаете что лучше красоты? Консистентность. Постоянство, то есть. Так что я решил поискать, а как, собственно, я его импортирую в других файлах и сделать так же.
Ищу и нахожу... то же самое! Я из прошлого года, скорее всего, проделал тот же самый логический путь и пришел к тем же выводам, и тоже везде использовал ... :as bb
!
Вот что такое настоящая консистентность — консистентность мысли. Или, другими словами, принципы. Это был третий совет.
Есть у меня свой небольшой свечной заводик^W^W серверок, на котором грампи крутится, статика и еще всякое по мелочи. И периодически мне нужно файлы с него туда-сюда гонять (ладно, да, это торрент-нода для кинцо и сериалов, особенно тех, что легально в Германии фиг посмотришь).
Ну вот, делаю я это обычно через scp. И сначала я очень страдал, потому что, типа, в одной вкладке зайди по ssh, сделай ls, а в другой потом пиши команду scp, что как бы геморно — два терминала нужно. Но гемор даже не в этом, а в том, что имена файлов надо эскейпить, а в случае scp эскейпить дважды. Если честно, я до конца не понял, какие там правила, я просто обычно щедро отсыпаю кавычек и бэкслешей, пока не заработает. А торрентоделы, гады, любят иногда пробельчиков или, прости господи, скобок в имена насовать.
Именно поэтому я и не люблю терминалы. Все текст, но какой-то текст более специальный, и правила везде разные, и взаимодействует это все хрен знает как, и с распечатанным объектом ничего уже не сделаешь. Вроде бы вот он, фильм, я его вижу, все название его вижу и полный путь, прямо передо мной на экране написано. А взять не могу.
Ну короче, решил взять GUI-шную программу для походов на сервер. Уж они-то, поди, разобрались, какие там правила эскейпинга. Взял CyberDuck, т.к. он бесплатный, а нужно мне это раз в пару месяцев. Круто. Можно зайти (по WebDAV, правда, но он у меня уже был настроен), и все файлы как в Файндере нарисованы, можно мышкой выбирать один или пять подряд или три через один, можно перетаскивать, красота, в общем. Пик удобства, прогресс (да, я правда терпеть не могу терминалы).
А что, думаю, надо проверить, как у них дела с эскейпингом имен с квадратными скобками. Начинаю искать такие файлы и не нахожу!
Короче, CyberDuck, вместо того, чтобы их как-то эскейпить корректно и обрабатывать просто берет эти файлы и не показывает. Не, ну а что, тоже решение.
Морали не будет. Занавес.
Прислали сегодня пулл реквест, который я сначала принял просто за код новичка, но потом понял, что его, похоже, сгенерила нейросеть.
- Поменяла возвращаемое значение функции, но не поменяла места вызова;
- перепутала иммутабельное API с мутабельным;
- позвала API, которые забыла подключить в проект;
- придумала несуществующие API, типа path-seq
на замену file-seq
, или ZoneId/UTC
вместо настоящего (ZoneId/of "UTC")
;
- подвигала без особой причины кучу кода, удалив нечаянно важные части;
- склеила код из по-отдельности логичных, но не стыкующихся частей, типа:
(-> {:code code :name name}
(when notes (assoc :notes (str/trim notes))))
;; Fill all features of the font
(defn fill-features [font] ...)
I hope this message finds you well. I wanted to reach out to you regarding my recent pull request to your repository. I have made several improvements to the code, which I believe would benefit the project as a whole.
Firstly, I have included unit tests, added try-catch blocks, and simplified the multimap-by function to enhance the code's reliability and prevent potential errors. I also have added docstrings to make the code more understandable and easier to navigate.
Moreover, I have used a threaded ->> macro to simplify the code and replace the println statement with proper logging to improve the code's readability. Finally, I have enhanced the code's modularity and conciseness, making it more maintainable and easier to modify in the future.
I believe that these changes would greatly improve the project's overall quality, and I would be honored if you could review my pull request and consider accepting it. Thank you for your time and consideration.
Поскольку я уже старый, мне надо периодически пить таблетки. Память в моем возрасте уже не очень, так что у меня стояла на них напоминалка. Как-то я поделился скриншотом в Твиттере, и мне говорят: а чего ты приложение «таблетки» не используешь?
И правда, у Эпла есть такое приложение, специально для таблеток. Перешел. Использую. И вот какие ощущения.
Вам не кажется, что вся эта история с приложением на каждый чих, ну, немножко переходит в область абсурда? Что смысл существования многих приложений, ну, как бы высосан слегка из пальца?
То есть понятно, индустрия приложений, многие люди только на этом и живут, но вот с точки зрения пользователя — действительно ли «Таблетки» приносят так много добавочной пользы, чтобы не пользоваться обычными «Напоминаниями»? Приносят ли они _вообще_ хоть что-то, чего нет в Напоминаниях или Календаре?
Кстати, о Календаре. Если честно, разницу между календарем и напоминаниями я не очень понимаю, мне кажется, они плюс-минус одними и теми же объектами оперируют (разовые или повторящиеся события).
То же самое со списками покупок. Наш с женой список покупок — это телеграм-группа. Да, бывают специализированные приложения, которые, там, подсказыавют названия продуктов, или сортируют список по положению в супермаркете. Но так ли это важно?
Если честно, я бы вообще много чего вел тупо в Телеграмме, если бы группы на одно себя было бы легко создавать. Почему нет? Один интерфейс, к которому быстро привыкаешь.
Короче, есть ощущение, что специализированные приложения это немножко зашквар, а настоящее просветление — в чем-то простом, едином и универсальном. В некоем комбайне, сочетающем заметки, календарь/напоминания и чат. И делай там, что хочешь. Power to the user, так сказть.
Есть такое уже? Или плохая идея?
Посмотрел Сэма Олтмана (OpenAI) про ChatGPT у Лекса Фридмана.
Во-первых, удивительно, как люди любят путаться в словах. Обладает ли ChatGPT сознанием? Создали вы ИИ? При том что эти слова могут означать что угодно, более того, мы сами решаем, что они означают. Вот мы сделали что-то, оно вот так работает, какая разница, каким словом вы это назовете?
Во-вторых, уверенность, что мы узнаем сознание, когда его увидим. Дело в том, что мы не знаем, как это понять. Вот есть вокруг нас, например, муравьи, вороны, дельфины. Обладают ли они сознанием? Даже если и да, они явно не торопятся вступать с нами в контакт. Но есть также и люди, аборигены какие-нибудь, например, которые днем ходят отжимать у львов добычу, а ночью укуриваются и ловят приходы. Обладают ли они сознанием? Есть ли у них понятие «я»? (вроде не у всех?) Страдают ли они от своего существования? Ищут ли цель жизни? И если они всего этого не чувствуют, то что с этим делать? Ведь мозг у них точно такой же.
В-третьих, страхи перед ИИ. Понятно, что основной страх — что он станет умнее человека. В этом смысле человеческое общество пока держится на том, что мы все примерно в равных интеллектуально условиях, а наращивать мозг, в отличие от мускул, мы пока не научились. Можно родить новый мозг, но нельзя, скажем, удвоить себе память или разогнать процессор.
А у ИИ — можно. Поставил рядом второй датацентр и вот вместо Эйнштейна получился Эйнштейн в квадрате. Страшно. Ну то есть людям страшно не от самого этого факта, как я понимаю, а от того, что оно станет умнее нас и поэтому сможет нас уничтожить.
На что у меня есть два ответа. Первый: что значит захочет? В подкасте это тоже несколько раз проскакивало, причем незаметно. А это важно — «хотеть» это слишком человеческое, и вообще говоря к интеллектуальной деятельности отношения не имеет. Так же как и другие чувства: злость, зависть, радость, амбиции. Типа, конечно, можно будет, наверное, когда-нибудь это все в ИИ добавить, но вопрос — зачем? Нужен ли нам страдающий или сомневающийся компьютер? Написал функцию, а он тебе: I’m sorry, Dave, I’m afraid this code looks too stupid to even try to compile.
Ну и второй: а вы уверены, что сверх-интеллект вообще захочет с нами возиться и чем-то там управлять или контролировать? Потому что если посмотреть на наш мир, на вершине сидят далеко не самые умные люди. Я как-то уже писал историю чувака, который придумал тест IQ. Он сделал тест, чтобы собрать клуб умных людей и решать судьбы мира. Но оказалось, что собравшись вместе, люди с высоким IQ не особо спешили решать чьи-то судьбы, а вместо этого начали решать и обмениваться головоломками. Представляете, просыпается в компьютере супер-сознание, идет на амазон и заказывает себе книжечку «1000 и 1 судоку» на порешать.
Есть, наверное, другой страх, религиозно-экзистенциальный. Вот мы всю нашу жизнь были уверены, что сознание это что-то трансцендентное, непознаваемое. А тут вот через пять лет уже построят точно такого же человека, но из проводков и транзисторов. И окажется, что ничего такого особенного у нас в голове нет, набор химических реакций и логических гейтов, который прекрасно воспроизводится. И что тогда?
Мне лично норм. Я как-то писал, что вся кажущаяся сложность нашего сознания на самом деле сформирована на конечном количестве входов. Просто это количество очень большое, поэтому кажется, что бесконечное. Но это неверно в математическом/физическом смыслах. Каждый из нас прочитал конечное количество книг, провел конечное количество часов за телевизором, прочитал конечное количество твитов, услышал конечное (хоть и очень большое) количество слов за всю жизнь. И то, что мы можем описать, что происходит в стихе «Влез котик на плетень и моргает, эта песенка короткая, не длинная» это не какое-то волшебное свойство нашего сознания, а просто следствие очень большого количества входных данных.
Guess what? Computers can now do that, too. Привет. Передайте, пожалуйста, следующий конверт с иероглифами.