Ведет @nikitonsky. Рекламы нет
Ух как бесит мода писать обезличенные предложения. Типа, вместо «Я люблю кофе» — «Люблю кофе». И так же понятно, что «я», вот и сократили. Это от Ильяхова пошло, да? Просто другого такого вредителя не знаю.
И еще немного подбешивает Present Continous вместо будущего времени о чем-то, что еще даже не случилось, а только в планах: «Студенты делают задания и защищают диплом» вместо «Мы выдадим студентам задания, а в конце курса они защитят диплом».
Сокращение хороший прием только потому, что ему легче всего научить. Прочитавшие Ильяхова пишут сухо, а нормальные ребята вроде нас с вами — сочно и красиво, и не стесняются подлежащих. Сравните:
> Меня ух как бесит мода писать обезличенные предложения. Типа, вместо «Я люблю кофе» некоторые пишут «Люблю кофе». И так же понятно, что они имели в виду себя, вот и сократили. Эта мода пошла от Ильяхова, да? Я просто другого такого вредителя не знаю.
Мы же не роботы. И даже студенты Бюро не роботы. Не надо отбирать у них личные местоимения.
Не знаю кто как, а я последний месяц с кайфом пишу на Питоне ООП. Ну вот это старое-доброе, с классами, наследованием, виртуальными методами.
Среди функциональных программистов это считается зашкваром, а я ничего плохого в этом не вижу — когда инструмент используется по назначению, это же прекрасно. Когда работал в ДжетБрейнсе, у нас все было лямбда через лямбду, лямбдой погоняет. Лямбды, конечно, великое изобретение, но они же не гибкие ни разу, непрозрачные абсолютно, да еще и одинаковые все. А я люблю, когда все по полочкам, названо аккуратно, внутренности видно.
Ну и с ООП надо аккуратно, конечно. Лишнего не делать. Если интерфейс, то с несколькими реализациями. Если паттерн, то по делу, а не «на будущее».
Но если все правильно, есть какой-то кайф, когда ты в родительском классе говоришь: вот тут дети будут переопределять, а в ребенке переопределяешь. Аккуратно как-то, что ли.
Ну и работает.
Утром произошел забавный момент лудонарративного диссонанса. Решил я купить себе игрулю Hitman III, значится. Заказал диск на Амацоне, т.к. диски дешевле, чем цифровая копия (что? да!).
Сегодня пришел почтальон. Давай, говорит, паспорт. Я ему аусвайс свой. А он такой — не, настоящий паспорт давай. И реально давай переписывать все данные: номер, дату рождения. Типа, игра 18+, и видимо там пометка была проконтролировать. Еще спросил, что за страна такая. Короче, как будто я Майн Кампф в библиотеке беру.
Выдал в итоге конверт. Открываю, там диск, и на нем большими красными буквами — Enter the world of the ultimate assasin. Добро, так сказать, пожаловать, в мир международного шпионажа и наемных убийц. Но чтобы поиграть, будь добр, предъяви паспорт, убийцы у нас на учете состоят. Ну просто забавный диссонанс.
Кстати, игра еще и требует постоянного онлайна, чтобы все убийцы были под постоянным надзором товарища майора из... Дании? Что тоже как бы не добавляет очков погружению.
Ну и чтобы пост был не зря — а объясните мне, в чем прикол компаниям требовать онлайна в своих играх? Геморроя много, а выигрыш в чем? Сам геймплей полностью оффлайновый, если ты там что-то себе накрутишь, ну, сам дурак, кому какое дело? Я понимаю, что есть какая-то неприятная капиталистическая причина это делать, но мне хочется понять, какая именно.
Разбирал в твиттере одно не слишком удачно сформулированное код-ревью, как пришли айтишники и давай обсуждать минусы вежливого обращения. МИНУСЫ! Типа, сколько максимум раз можно говорить пожалуйста? Нормально ли просить что-то сделать или надо приказывать? Поймет ли джун вообще, что от него хотят, если написать без оскорблений? Ну какое все-таки у нас сообщество, все о джунах думает и их удобстве, обожаю!
В связи с этим проговорю явно (да, явно, тут уже нельзя полунамеками): от вежливого обращения никто не умрет. У него нет, блядь, минусов! Что бы вы предпочли: унижающий вас тон и дельные замечания или вежливый тон и ТЕ ЖЕ САМЫЕ БЛИН дельные замечания? Кто-то реально выберет оскорбительный или там пассивно-агрессивный тон ПРИ ПРОЧИХ РАВНЫХ? Добровольно? Потому что суть-то не меняется.
Длиннее тоже не становится (моя вежливая версия даже короче получилась, например, и это я еще несколько «пожалуйста» добавил). В чем смысл настаивать на своем праве оскорблять других людей? Ради чего притворяться, что по-другому никак нельзя? Самоутверждение? Потому что других объяснений у меня нет.
Среди претензий была и такая, что, мол, вежливо писать это ж усилий надо прилагать, а у тимлида и так дел по горло, так что джуны обойдутся. На что я тоже хочу явно и недвусмысленно проговорить: усилия на формулировку надо прилагать, если только ты на самом деле так не думаешь. Если ты приходишь делать ревью с настроем «господи, все дебилы, за что мне вас бог дал, да откуда у вас руки растут, как такое говно вообще писать можно, все только на мне и держится», то да, чтобы этот настрой скрыть, надо прилагать усилия и выбирать формулировки.
Секрет? Не надо относиться к коллегам как к беспомощному говну, которое делает ошибки специально чтобы тебе день испортить. Всегда надо предполагать наилучшие намерения и продуктивный настрой. Тогда и формулировки сами начнут сами нормальные получаться, и переформулировать ничего не придется. Посмотрите еще выступление «This is Water» Дэвида Фостера Уоллеса, чтобы впечатлиться.
(исходный разбор не привожу, потому что во-первых начнется все то же самое, что и в твиттере, а во-вторых люди начинают суть ревью обсуждать, а мне интересна именно форма в данном случае)
По поводу третьей серии The Last of Us — ревью не будет. Сериал меня окончательно завоевал, разбирать на кусочки не хочется. Да, наверное, можно было бы круче (историю любви во время зомби-апокалипсиса можно ого-го какую написать!), но так тоже пойдет.
По поводу стиля Крейга Мазина, впрочем, есть вопросы. Во-первых он очень поверхностный. Не герои, а стереотипы. Не ситуации, а шаблоны. Не мир, а удобный задник. Хотелось бы узнать про жизнь что-то новое, неочевидное и при этом правдивое, а не просто выжимающее слезу. Как оно все работает, что с чем связано, что изменилось, а что осталось точно таким же. Но это высокая планка и нельзя по ней судить произведение, у которого свои задачи, конечно. Но как зрителю посмотреть что-то такое очень хотелось бы.
Во-вторых, есть ощущение, что сценарий слишком уж прямолинейный. У него нигде нет второго дна. Если герои грустят — они ходят и говорят «я грущу», если им нужно выяснить отношения — они идут и выясняют. А хотелось бы это понимать через косвенные действия, детали какие-то. Иначе это слишком уж для младшего школьного возраста.
Ну и хотелось бы хоть немного поэтики, метафор. Зачем это все, на что это похоже, рефлексии хоть какой-то. Вот самолет упавший — что мы об этом думаем? Что это нам напоминает? На что надеемся? А то слишком механически как-то.
Ну и зомби, хотелось бы, чтобы они зачем-то нужны были. А то пока серии такие, что можно было бы и без зомби вполне то же самое рассказать. Особенно третья — почему важно, что это происходит именно во время зомби-апокалипсиса?
Еще я поиграл в игру и, ну, выяснилось, что всякие глупости вроде самолетов с неба или походов в туалет это самодеятельность Мазина. А я-то думал что безработных сценаристов только в гейм-индустрию берут.
Будет ли разбор четвертой? Только если она меня чем-нибудь максимально тупым разозлит. Так что шансы высоки 🙂
Last of Us, эпизод 2, часть 2/2
СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ
Потом герои идут на замес в музей. Тут, кстати, у меня чисто художественный вопрос: вас обламало бы сделать его музеем грибов, биологии там, не знаю, ботсадом? Красивее же было бы гораздо? И страшнее — хуй разберешь, какое дерево просто дерево, а какое на тебя сейчас прыгнет.
Почему девочке не дают пистолет я если честно не понял. Не то чтобы они ее держат в заложниках или ведут куда-то против ее воли. Она вообще-то с ними заодно, и причин ей не доверять я не вижу. Плюс, перед лицом грибов, все люди — братья, разве нет? Очень странная драматургия, короче.
Следует схватка с «кликерами». Кстати, еще один чисто видеоигровой момент: чтобы герои не побежали назад, дверь, через которую они зашли, заваливает. Come on, я понимаю, что игрока надо на всякий случай ограничивать, но тут-то у вас герои, которым _надо_ пробраться через эту комнату. Какая у них мотивация бежать назад?
Кликеры — это такие чуваки, у которых глаза заросли древесными грибами и они ориентируются тупо на слух. Казалось бы, герои о них знали (обсуждали их, пока шли по мосту), знали, что зараженные есть в здании (нашли свежий труп), плюс они, как утверждается, «много раз» делали вылазки за карантинную зону. Однако никакой специальной тактики против них не используют, хотя казалось бы, брось камешек в другой конец комнаты и беги. У сталкеров были гайки для похожих целей, тут-то поди американцы за 20 лет тоже что-нибудь сообразили бы? Может не гайки, но вон пули говорят в избытке производят.
Короче, чуваки успешно выбираются (а вы как думали?), происходит любопытный твист с Тесс (кстати, актриса охуенная, из всех троих она больше всего на живого человека похожа), а потом грибы звонят своим по грибнице (художественное допущение, позволим) и к ним бежит толпа зомбаков (какой зомби-фильм без толпы зомбаков?). Кстати, для слепых они довольно четко и целенаправленно двигаются. Тесс жертвует собой (очень классная сцена, правда, но почему в ней Тодд Ховард, я так и не понял) и все заканчивается хорошо. Ну как хорошо? Нормально.
К этой части замечаний почти нет, кроме ухоженных бород у трупов. I mean, представить, что топливо для вертолетов, таблетки для сна или даже сендвичи в постапокалипсисе будут делать я еще могу — в конце-концов, это какие-никакие а потребности, а вот чтобы масла для ухода за бородой производили — это уже как-то слишком. Но это мелочи, конечно, просто забавно. Начинаешь еще больше любить работу гримеров и художника по костюмам на фильме Дорога, где все выглядят так, как будто и правда 20 лет живут на улице.
Но, опять же, не было бы красиво — никто бы это не смотрел. Спишем на кино-условности.
Жду с нетерпением третью серию, там Ника Оффермана обещают! Судя по реакциям, многим эта рубрика нравится, так что ждите ревью в понедельник-вторник!
Одни из нас, эпизод 1, часть 2. Будующее. Ну как будущее, 2023-й. Спойлеры!
По поводу будущего меня больше всего интересовало как оно, собственно, устроено. В смысле цивилизация, очевидно, разрушилась. Нам показывают Бостон, который теперь всего лишь один район, обнесенный стеной, домов на 500? То есть это сколько, в лучшем случае, тысяч 50? Причем застройка городская и очень плотная, поэтому главный вопрос: а что они, собственно, едят?
Если нет цивилизации, еду надо где-то брать. Где? В холодильнике? Что там случилось с животными, не очень понятно, но скорее всего это агрикультура, поэтому должны быть поля, да? Ну вот их че-то не видно, ни за стеной, ни внутри.
Еще странно, что над городом летает вертолет. Вертолет! Никакой цивилизации нет уже как 20 лет, бензин хранится в лучшем случае лет пять, откуда топливо? И даже если нефть все еще добывают и перерабатывают, разве эффективно ее тратить на вертолет?
Еще бросилось в глаза обилие распечатанных табличек (не нарисованных, а именно распечатанных). Как они сохранили их производство? И полный экип полицейских, с автоматами, рациями, шлемами, щитами, короче, полный комплект. Есть ощущение, что за 20 лет без производства и с чуть другими приоритетами (выживание) экипировка была бы, кхм, чуть менее с иголочки и распределена, кхм, чуть менее равномерно.
Упоминается, что в Атланте есть фабрика, которая производит _только_ такие предметы первой необходимости, как пули и пилюли (простите за рифму). Очень странный выбор, да? Заставляет задуматься (о логике сценария).
К организации тоже есть вопросы. Выглядит все так, что есть какая-то военная диктатура и все остальные, которые должны работать за еду. Неужели избыток производства настолько большой, что можно прокормить целую армию (бездельников)?
И еще это выглядит так, что диктатура и пролетариат немножко, кхм, на ножах, что ли? Что тоже странно — вам всем нужно выживать, цель общая, ну камон. Откуда трения? 20 лет, 50 тыщ населения, да вы все там друг друга знать будете за это время и в гости друг к другу ходить.
Там потом еще и сопротивление появляется, которое пытается... что, собственно? Мир разрушен, нихуя нет, идти некуда, лучше жизни все равно не будет, так за что борьба?
Главная деятельность сопротивления — рисовать на стенах свой логотип (не самый простой, требует трафарета, что опять же, как-то неэффективно) и писать тупую фразу «когда ты потерялся во тьме, ищи свет». Ну то есть что за философия? Гораздо легче представить, что они писали бы что-то в духе «Люди, вас обманывают» или «Федра сосет хуй», но «ищи свет» блин? Звучит так, что они не глаза людям пытаются открыть, а наоборот, в какую-то секту заманить.
Внутри штаб-квартиры сопротивления, разумеется, во всю стену нарисован логотип (на случай облавы, чтобы не отмазались уже) и происходит моя любимая (нет) драматургия: «я вам не скажу» — «скажи» — «не скажу». В чем конфликт непонятно, прогресса нет, люди просто ссорятся чтобы это выглядело «драматично». Детский сад, говорю же. Особенно улыбнуло «мы боремся за свободу и демократию, поэтому просто выполняйте приказы».
Происходит off-screen перестрелка непонятно из-за чего, а потом классический киношный прием, когда люди вместо того, чтобы сначала бежать в безопасность и там выяснять отношения сначала выясняют отношения и не особо куда-то торопятся. Ну и чисто режиссерская недоработка — когда не знаешь, что сделать с людьми, они просто стоят в коридоре друг напротив друга. Даже если истекают кровью. К — кино. Андор весь примерно так снят. Бесит ужасно, но в основном потому, что я как-то к более изобретательной режиссуре привык.
Потом наши герои бегут через буферную зону, которая как раз удобно не расчищена за 20 лет и в которой бродят одинокие полицейские. Потому что болезнь ест только гражданских, да?
Но в целом сериал норм и страдает, наверно, от некоторой наивности, поверхностности и завышенных ожиданий. Не Гражданин Кейн, короче.
А, кстати. Девочка шикарная. И актриса, и персонаж. Но хейтерс гонна хейт.
Craig Mazin is not so amazing
Так как искусство должно в первую очередь побуждать зрителя на диалог, хочу поговорить с сериалом The Last of Us. В игру не играл, будут спойлеры к первой серии.
Серия начинается с бойко написанного интервью, которое сразу выкладывает весь расклад: что за эпидемия, как, почему. Ученый-грибник-паникер (надеюсь, в русской версии его озвучивал Сергей Безруков?) рассказывает известную историю про кордицепс однобокий, который ест мозг муравьев и превращает их в зомби.
Утверждается, впрочем, что грибы неспособны выживать в человеческом организме. Не очень понятно, что он тут имеет в виду, потому что страница «Микозы» на Википедии перечисляет штук 20 разных грибковых заболеваний именно на человеке, включая поражения внутренних органов. Но допустим действие происходит в альтернативной вселенной, где никто не болеет молочницей, кандидозом кишечника и лишаями.
Также используются спорные формулировки вроде «причина эволюционировать», «цель гриба» и «воля гриба».
Далее «ученый» утверждает, что от грибов нет и невозможно создать лекарство. Что тоже подозрительно, потому что большинство грибковых заболеваний вполне успешно лечатся. Но — допустим — альтернативная вселенная. Хотя даже в ней, мне кажется, ученые не должны говорить «нет» и «невозможно», а скорее «мы пока не знаем» и «мы не нашли». Как говорили нам в универе, закон сохранения энергии он закон только в том смысле, что никто пока не видел, как он нарушается.
Еще меня напрягло, что никто в ответ на его «нет» не спросил его «как так-то?». Не попросил объяснить, почему нет. Это настолько естественный вопрос, что странно, что все так молча приняли неприятную новость.
Наконец, делается утверждение, что грибы, если смогут поражать человека, сразу поработят миллиарды. Звучит странно — грибы вполне себе существуют прямо сейчас и что-то мир они пока не захватили. Даже те зомби-муравьи, у которых выедают мозг, живут параллельно с грибком миллионы лет. И ничего, никто никого не поработил.
Понятно, что все это художественная условность, которая была нужна, чтобы как-то мотивировать глобальный апокалипсис, чтобы история вообще состоялась. Но можно было бы рассказать то же самое без глупостей?
Ладно. Через первые три минуты продрались 🙂 Поехали дальше.
Мы переносимся в 2003-й. Звучит самая смешная шутка — Пердо Паскаль, которому почти 50, с максимально помятой рожей говорит, что ему 36 лет. Они живут с дочкой и дядей и у них, в целом, все хорошо. Ни проблем, ни забот, работать правда приходится с утра до вечера, но даже это, кажется, никого не беспокоит. Эта часть явно могла бы быть поинтереснее, но у нее, кажется, чисто функциональная роль (показать, что у героя БЫЛО) и они решили много сил на нее не тратить.
Потом начинается катавасия. Военные летают, люди бегают, все горит и взрывается, но конкретные детали не очень понятны. Просто паника и все горит. Интересно, что пандемия началась внезапно и одновременно везде, включая самолеты в воздухе (да!), что, вроде бы, не очень биологично?
Происходит самый видеоигровой момент из возможных: у чуваков ломается машина посреди улицы, один вылазит с одной стороны, другой с другой, и они такие: ну все, нам никак не встретиться теперь, бегите. В играх такое сплошь и рядом, сюда идти можно, а сюда нельзя, ПОТОМУ ЧТО. Но в кино смотрится странно. Примерно как с Кратосом, который хоть и бог войны, но иногда не может перелезть через упавшее дерево и идет через пещеры и три лагеря дикарей и монстров, потому что НУ ВОТ ТАК МЫ ПРИДУМАЛИ.
Дальше за ними гонится зомби, пару раз происходит deus ex machina, их ловит военный, девочку убивают, и наконец случается самое странное монтажное решение — сразу после трагедии мы молча переносимся на 20 лет вперед. Кажется, что пилот должен был быть двумя эпизодами, и тут, наверное, происходила склейка. Давайте и мы прервемся до завтра, на следующий пост.
Эпл анонсировал новый HomePod, и я на секунду поддался слабости и задумался, а не нужен ли мне спикер к телеку? Хорошо, дай, думаю, порты посмотрю. А их нет! Наученный горьким опытом, я вышел в интернет с запросом «HomePod audio delay» и, конечно, нашел прекрасные отзывы о двух(!)секундной задержке.
Не, если смотреть фильм с AppleTV, то все нормально, он эти две секунды буферизует и картинку подзадерживает, чтобы было тип-топ. Музыку слушать так и вовсе пофиг. Но в игры, например, не поиграть. Аудио/видео с макбука не поредактировать. Альтернативные плееры (YouTube, Amazon Prime, VLC, Infuse) — без гарантий, понятно.
И вот чего я не понимаю. Технологии, позволяющие передавать аудио по воздуху с приемлимой задержкой вроде бы есть. У меня у самого лично было устройство с алиэкспресса (!) за 20 баксов, которое передавало оптическое аудио с задержкой всего 40мс по воздуху. То есть это не то чтобы рокет сайнс.
Ну или в Xbox/PlayStation, например, их родные гарнитуры, либо аудиоджек в контроллере — в цифрах не мерял, но в пределах человеческого восприятия задержка незаметна.
Но почему эти технологии — удел специализированных устройств? Почему не воткнуть точно такую же хуйню в макбук, эпл тв, хомпод? Если хочется совместимости с блютусом — почему не воткнуть в дополнение? Не то чтобы они на них экономили — в том же хоумподе стоят тачскрин, датчик температуры, влажности, акселерометр, и поверх этого целый компьютер мощностью с айфон нескольколетней давности.
Неужели основной юзкейс — стриминг звука — настолько несущественный, что кто-то решил, что акселерометр важнее? Где прогресс в этой области? В хоумподе так даже батарейку беречь не надо, он прям в розетку втыкается. И что?
Я, конечно, люблю некоторые продукты Эпла, но тут какое-то разводилово, как со Студио экраном, не?
Отдельно кекнул от того, что управляется эта ебала азбукой морзе (длинные и короткие постукивания, for real) при том, что сверху на нем круглый экран диаметром восемь сантиметров, на который можно кнопок десять легко засунуть.
Эх, не понимаю я ничего в шикарной жизни и фанбойстве.
Сегодня по интренету гуляет старое (2003) письмо Била Гейтса, в котором он эпично не может купить и скачать Microsoft Movie Maker с сайта Microsoft.
Все как мы любим: сайт тормозит, поиск не ищет, в загрузках левая херня («they told me that using the download page to download something was not something they anticipated», ну прекрасно же), а установка в итоге через Windows Update вообще, с попутной загрузкой лишних 17 Mb (эх, были времена!), потому что Windows Update заодно и систему обновит, и установка, которая длится возмутительные 6 минут (those are rookie numbers, по сегодняшним-то временам).
Как мне пишут, прям хоть сейчас копируй и выставляй на Grumpy Website. Но моя мысль немножко другая: если бы тот самый Гейтс, вместо того, чтобы просиживать кресло, рисовать планы продаж в Экселе и назначать/увольнять глав подразделений (ну или чем там топы занимаются обычно, я хз) писал бы такие письма раз в неделю, а не раз в год, то у нас была бы совсем другая Винда. Возможно, такая же хорошая, как МакОС был при Джобсе.
А получилось, как обычно получается. Вроде бы уникальная особенность Джобса была в том, что ему было реально не все равно, что они там делают. Он брал инсталляторы лично, ставил Макось, и если ему что-то в процессе не нравилось, ебал всех подчиненных пока нравиться не начинало. Это такой контур обратной связи, «а не херню ли мы делаем», который смотрит не на процессы, ограничения, компромиссы, а непосредственно на конечный продукт.
А обычно — ну, ты создал компанию, хочешь сделать продукт, говоришь — делайте Мувимейкер начальнику под тобой. Тот говорит своему начальнику, и так пять слоев вниз, пока наконец не дойдет до тех, кто непосредственно будет делать. Естественно, глухой телефон, смысл теряется, и результат будет скорее всего для галочки: начальники довольны, а от тебя (программиста) отъебались.
Не, это нормально, а как еще, если у тебя 10 тыщ человек? За каждым не побегаешь. Но вот именно в самом-самом конце посмотреть на то, что получилось, и взъебать всех, если по дороге потерялся смысл — вот, кажется, формула хорошего продукта. Потому что когда продукт дойдет до пользователя, он будет в такой же ситуации — ему пофиг на количество проведенных митингов, заинтересованных сторон или выписанных бонусов. Продукт либо работает для него, либо нет.
Поздравляю всех с началом новой рабочей недели, в общем.
Понадобилась библиотека парсинга Кложи на Питоне. Нашел edn_format. У них написано:
> Installation: pip install edn_format
Окей. Написал в консоли pip install edn_format
. Он мне:
> DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621
Причем пять (!) раз повторил. На случай, если за четыре не дойдет. АЛЛО, ГОВОРИТЕ ГРОМЧЕ!!!
Штирлиц прочитал телеграмму, ничего не понял, прочитал еще раз и все равно не понял. Что за installation scheme? Что за distutils? Я таких даже слов самих по себе не знаю, а там от них производные. Я еще ничего не сделал, а уже виноват.
Потом смотрю, дальше слово знакомое: Homebrew. У меня на компьютере в принципе есть Homebrew, но насколько мне известно, в процессе вызова pip install он не должен никак участвовать.
Но там еще и ссылка. Окей! Видимо, проблема настолько сложная и тонкая, что в 259 букв ее ну никак не объяснить, и они решили поставить ссылку. Может там что-то будет понятнее?
Открываю.
> I am one of the maintainers of pip [...] Homebrew is currently using distutils.cfg to configure package installation schemes, and we believe it is best for Homebrew to remove the usage.
Ага, то есть там какие-то терки между мейнтейнерами Homebrew и мейнтейнерами Pip. Как в эту войну оказался втянут я? Почему я вообще должен о ней знать?
> If you have been directed here from a pip warning, you don't need to take any action at this stage. Nothing is currently expected to break until Python 3.12, and a full solution will be implemented well before then.
Ага! Делать ничего не надо, сломать ничего не сломали, и даже в принципе не особо планируют, но зачем тогда мне об этом знать? Загадка.
> Note that as of 3.10.2, this issue no longer affects Python 3.10 and later.
python --version
> Python 3.10.9
Ну и какого, спрашивается, хуя? Почему люди, о существовании которых я ничего не знал, считают, что могут украсть пять минут моего внимания, чтобы известить меня о том, что проблема неактуальна и ничего делать раньше не надо было, а теперь уж и совсем не надо?
С Новым годом, короче. Oh shit, here we go again.
Как любой уважающий себя программист и крепкий хозяйственник, за два дня до Нового года я решил перевезти все мое добро с одного сервера (подороже) на другой (побольше, подешевле и потупее).
А переезд это что? Правильно, свидание с Линуксом! Ну в общем с помощью ДакДакГо и такой-то матери за два дня я переехал. Самое веселое, что так нелюбимая всеми Джава поднялась быстрее, чем Nginx начал раздавать статический контент. Парадокс.
Не, у меня, конечно, все ходы еще с прошлого раза записаны в плейбуках. Но этого мало, потому что пока я их записывал, линуксоиды меняли системные ДЕФОЛТЫ. Была у меня убунта 18-ая, а стала 22-ая, соответственно все теперь лежит не там, настраивается не так, удачи.
Один из самых веселых эпизодов — это как раз про Nginx и статический контент. Настроил я значит кое-как letsencrypt, а это тоже та еще история. Certbot по факту читает, анализирует и правит nginx-конфиги, которые сами по себе тюринг-полный формат. Cоответственно если конфиг чутка нетривиальный или просто написан не в том порядке, certbot его или портит, или фигню пишет. В лучшем случае, даже если все сработает правильно, он его просто уродливо отформатирует — отступы не те, пустые строки пачками тут и там. Спасибо, что живой.
Мне, кстати, жалко в этой ситуации вообще всех — это ад, который мы сами себе создали. Одним неудобно, другие не подумали, что-то серьезно менять никто, конечно, не хочет, а фичу как-то выкатывать надо, https все хотят, не придумывай. Так что сделали как могли.
Ну так вот, настроил я значит nginx, переключил DNS, захожу — 403 Forbidden. Пошел смотреть пермишны. Все есть. rwxr-xr-x. ls работает из-под кого угодно. Файл читается. Откуда 403, сука? Это статический контент, напоминаю. Джава при этом спокойно работает, все отдает, даже с https, хотя казалось бы, что должно быть проще?
Оказалось, что 403 происходит из-за того, что где-то в пути была папка без r-x прав. Не та папка, которую я хотел пошарить, а один из ее родителей, до которого мне, понятно, нет никакого дела. Логично? Логично, сука? Чего заныл?
На старой Убунте при этом все работало. Потому что не сломаешь что-нибудь — не проживешь. Вообще удивительно, конечно, какая фрактальная сложность там разворачивается и как никто не ходит и не кричит: надо что-то по-проще, невозможно уже, давайте упрощать!
Нет, всем норм. Сложность создает кучу рабочих мест, сертификацию, даже если это просто куча идиотских фактов, никак друг с другом не связаных, часто рандомных, которые просто «исторически сложились» и которые с тех пор никто не хочет трогать.
А! Ну историю-то я не закончил. Настроил я, значит, nginx. Файлы отдаются. Я счастлив. Довольный, уже собрался комп закрывать до следующего года, как смотрю — ssh перестал работать. Раньше заходил, а теперь Permission denied (publickey) (я, понятно, по ключам, не по паролю). Ssh я вообще не трогал, я ж не дурак. Authorized keys лежат. Пермишны нормальные. Под рутом заходит. А под отдельных юзеров — нет. WTF?
Короче, long story short, проблема была в том, что у хоум дир проставился пермишн на запись для группы. Не, сами ключи и даже папка .ssh все еще были в безопасности. Но ssh все равно сломался, на всякий случай, причем максимально неочевидно и молчаливо. Проблема, естественно, не гуглится. Как я до причин догадался — одному богу известно. Повезло. Интуиция. Вселенная хочет меня помучать, но аккуратненько, по чуть-чуть, чтобы я совсем ушел в пастухи.
Но предновогодний пост надо закончить на позитивной ноте, поэтому поздравляю вас с наступающим, дорогие мои! Желаю вам в новом году побольше бумажных книг, никотиновых сигарет, механических унитазов, проводных наушников, глупых лампочек, ручных пылесосов, нерегулируемых столов, чайников без вайфая, карандашей без блютуса, а компьютеров — как можно меньше. Обнимаю, люблю!
P.S. Кстати, грампи теперь менеджится systemd. Не понял я хейта, по-моему куда удобнее, чем сраные баш-скрипты. Декларативненько и однообразно, в чем подвох?
В дизайне долгоживущих вещей главное, как мне кажется, вовремя остановиться. Вот были когда-то у окон в Windows/macOS заголовки умеренно-стандартные: три кнопки, название документа/программы.
Потом пришел Хром и сказал: нехорошо что-то, много места пропадает. А давайте туда табы вкорячим! И вкорячил. Люди посмотрели и решили, что им тоже так надо, и стали все поголовно так делать. Дошло до того, что Эплы сами в прошлогоднем МакОС фактически убили понятие «заголовок окна» и пустились во все тяжкие. Сегодня я еще посмотрел свежие скриншоты Gnome 4 и там тоже — четыре окна, четыре варианта расположения кнопок.
Но хуже всех, конечно, Ворд на винде. Там просто не заголовок, а помойка случайных вещей какая-то. Казалось бы — ну вот у тебя двадцатью пикселями ниже нормальный тулбар, ну ты не выиграешь ты ничего особо, что трем специальным иконкам отдельное место придумаешь. Но нет, если место есть, значит на него нужно что-нибудь запихнуть. А окна перетаскивать, ну тут уже сам выкручивайся как-нибудь.
Что я хочу сказать — многим проблемам можно придумать, да, уникальные решения. Но иногда сила как раз в стандартизации — если все окна выглядят одинаково, то этим можно научиться пользоваться и даже предсказать, как поведет себя новая программа. Экспериментировать нужно, но когда выигрыш получается маргинальный, возможно, им стоит пожертвовать ради унификации.
Даешь, короче, однообразие.
Одна из вещей, которые мне непонятны (на самом деле понятны, конечно, но я все равно возмущен) это как на клавиатурах до сих пор не появились очевидно полезные клавиши.
А именно: cut/copy/paste, undo/redo, prev/next tab, back/forward. В том смысле что это настолько универсальные, полезные и часто используемые концепции, что вполне стоят отдельного места на клавиатуре.
Фанаты Раскина добавили бы сюда Search, и я с ними согласился бы, но дело в том что Search на некоторых клавиатурах уже есть. Правда, если я правильно понимаю, он вызывает какую-то общесистемную срань вместо нормального контекстного поиска, так что да, Search нужен тоже, только правильный.
Ну и смена раскладки, проблема, непонятная ни одному американцу, но блин, мир уже какой-никакой глобальный, Юникодом заставили всех пользоваться, давайте теперь язык переключать разрешим большей части мира?
Вы, конечно, скажете, что место-де не резиновое, и дальше одной кнопки отходить от home row зашквар, но, скажем так, далеко не все разделяют эту точку зрения: посмотрите на количество 100+ кнопочных клавиатур в мире и хотя бы попробуйте представить, что иногда проще чуть потянуться одним пальцем, чем зажать комбинацию тремя-четырмя.
Ну и возмущение мое идет, конечно, в первую очередь от того, ЧТО вместо этих очевидно полезных кнопок пихают на клавиатуры сейчас. Вот я открыл сайт Microsoft, нашел свеженькую Ergonomic Keyboard, и что я на ней вижу?
- Двенадцать (!) F-кнопок (они еще используются где-то в Винде? Потому что на Маке их давно выкинули).
- Print, мать его, Screen.
- Scroll Lock/Pause/Num Lock. Я гарантирую вам, никто из тех, кто ставит себе полноразмерные клавиатуры, ни разу в жизни их не нажимал и никогда не нажмет. Особенно Num Lock, вот у нас тут четыре курсорные клавиши, а еще есть переключатель, который ИХ ЖЕ добавляет только чуть правее.
- Caps Lock тоже условно-маргинальная клавиша, которая как будто никому СО ЗДОРОВОЙ И КРЕПКОЙ ПСИХИКОЙ не нужна, про нее, вроде, все уже знают.
- Insert. Insert, блядь! Самая подлая клавиша на свете, включающая невидимый режим, который удаляет твой текст. Вот уж кому нужна лампочка на кнопку, а лучше гудок с сиреной.
- Emoji button... Кстати, ладно, это как раз в тему!
- Кнопка Офиса! Для тех, кому нужно НУ ОЧЕНЬ ЧАСТО открывать новый инстанс Ворда?
- Кнопки вызова калькулятора, скриншотилка (а что, Print Screen же есть, ггг), TaskView и блокировки компа (!). Что вы чаще делаете — блокируете комп или копируете/вставляете/выделяете?
- Ну и в конце концов пробел! Нафига он такой длинный? Никто не знает, просто все привыкли. У меня на кастомной клаве все кнопки 1U, даже пробел, и что вы думаете? А ничего, прекрасно работает. А на освободившееся место можно кнопок десять полезных еще засунуть!
Короче, свободного места очевидно дофига. И это я еще не говорю про то, что цифры присутствуют как минимум два раза (цифровой блок), что Шифт/Альт/Контрол дублируются. Не, что их ИНОГДА используют, я представить могу. Но все равно, если было бы НУЖНО запихнуть что-то полезное, место найти явно можно.
Единственный прогресс, который случился на этом поприще — появление и условно-широкое распространение кнопок play/pause и громкости. Вот это то что надо (еще бы play/pause работали, а не открывали Apple Music). Давайте теперь остальных добавим!
UPD: дописал про переключение раскладки и длину пробела
Блин, как меня бесят сериалы, которые вроде по книге/законченной истории, но ее тянут на 2+ сезонов. Вложился ты значит на первых сериях, потом, как водится, стало скучновато, но думаешь надо бы узнать, чем там все закончится.
Смотришь до конца сезона, и вот на последней серии что-то никто особо не шевелится, маски не срываются, чемодан не находится, злодея все никак не убивают. Думаешь: да ну нафиг! И правда, ничего не заканчивается, жди еще год, а потом терпи еще десять нудных серий.
Ну е-мае! Предупреждать как-то надо, что ли.
Среди преступников в этом году Tokio Vice, Severance и вот теперь The Peripheral. (UPD: The Boys, House of Dragon)
Бесит.
Писал в 2020-м в ЖЖ про Jetpack Compose, но оно и в контексте прошлого поста про ООП хорошо, и вообще про data-oriented design. С сокращениями:
Идея делать такое АПИ — видимо, призрачное счастье разработчиков. Действительно, что может быть проще, чем написать:
Column {
Button()
Text()
}
Максимально лаконичное API, да? Но если присмотреться, мы увидим, что Column принимает не список детей, а замыкание. Почему это? Спросите вы. А потому что это гребаные процедуры, вот почему. Придумав такое API, ты невольно загнал себя в угол — его нужно держать строго определенным образом, и никак иначе. Удобно в простых примерах, а дальше начинаются сложности.
Мы, программисты, привыкли, что в коде можно делать много разных вещей. И нам это нравится! Можно принимать значения, передавать значения, трансформировать значения, обрабатывать значения. Но вы поняли, наверное, уже, к чему я веду, да? Компоуз решил нас этой радости, потому что его API ничего не принимает и не возвращает. Там нет значений. Его API можно только позвать, конец истории. Нельзя написать функцию, которая сортирует компоненты. Которая вставляет разделитель в список компонентов. Нельзя даже нормально вложить один компонент в другой без создания анонимной лямбды. Потому что и компонентов-то нет. Только лямбды.
А лямбды это что? Это худший из возможных форматов хранения данных. Хуже структур, понятно, и даже хуже чем ООП. Лямбда — это черный ящик, черная дыра, максимально негибкое, неудобное и безполезное явление, на которое ни посмотреть, ни потрогать, ни сообщение послать, ни разобрать, ни распечатать, ни сравнить, а только обернуть в другую такую же гребанную лямбду или передать дальше. Лямбды невозможно упростить — они всегда только растут, толстеют, как слои лука у Шрека или жировые прослойки на твоей слоеной архитектуре. Максимально вредный объект, особенно как основа API. И поверьте, внутри Композа (да и снаружи) этих лямбд хоть лопатой жуй, и они все анонимные, и ничего не принимают и не возвращают, и от неявных ресиверов зависят, и друг друга заворачивают и разворачивают (ха-ха, шучу, лямбду нельзя развернуть!) и они анонимные все! А, это уже было. Ну вы поняли.
[...]
Самый удобный АПИ у нас уже есть — это функции с явным списком аргументов и возвращаемым значением. И все. Конец истории. Лучше не будет. Серьезно. Не надо мудрить, хитрить, не надо придумывать «более удобный DSL», не надо аннотации придумывать, не надо компилятор форкать, не надо вообще программисту помогать вызывать функции. Лучше все равно не сделаете, а проблем на разгребание всего этого — создадите. Лучшая помощь — оставить нас в покое и дать писать обычный код.
Есть такой модный новый браузер, Arc. Казалось бы — ну что браузер, давно уже все придумали. Но они решили пойти не в сторону упрощения интерфейса, а в сторону усложнения — всяких панелей там понавешали, режимов и прочего. В итоге страницы маленькие, работает все это не пойми как, но есть и хорошая фича — автозакрывание табов. Раз в день он все, что ты не трогал, закрывает, чтобы не копилось.
Мне Арк не зашел, потому что автозакрывателем табов работаю я сам. Когда-то давно я табы копил, пока не прочитаю, и они на меня давили. А потом понял, что сам себя мучаю, и начал безжалостно их убивать. Пришел на работу, а на ноуте открыт Ютуб с незакрытым роликом? Закрыл, потом в истории найду. Не могу прочитать статью уже два дня? Ну значит не очень-то и хочется. Закончил рабочий день? Браузер должен остаться пустым. Любую открытую страницу всегда можно найти снова, было бы желание. Так что привычка хорошая, но целый новый браузер ради нее терпеть не хочется.
Есть другие модные ребята, делают терминал на Расте, называется Warp. Тоже простую концепцию решили разбавить «фичами» и «улучшениями», которые каждое по-отдельности вроде бы разумно и хорошо, а вместе создает какой-то лишней ментальной нагрузки, которой от терминала как раз не хочется. Из серии «а что будет, если...». В обычном терминале ты это себе хорошо представляешь, а что тут эти улучшаторы наулучшали — фиг его знает.
Когда я только начинал пользоваться Маком, мне очень понравился iTerm 2. Прям фичи были в самое сердечко, и много, и хорошо. Потом чет я понял, что ничем из них все равно не пользуюсь, и переехал на встроенный Terminal. Так с тех пор и не жалею. Терминал, конечно, можно сделать лучше, но, получается, не нужно.
Третий пример это почта Hey (не «неу», а «Хэй», типа «Э, слышь!»). Ребята придумали делить всю входящую почту на четыре потока — неизвестные отправители, инбокс, развлечения и чеки. Сбацали продукт, продают, вроде бы, все хорошо у них. Сам Хэй я не пробовал, зато сделал себе аналог на фильтрах Fastmail. Получилось хреново (фильтры нужно вручную обновлять, а интерфейс там не очень), но когда поток более-менее устаканился, оказалось, что это офигенно! Именно эти категории лучше всего прижились — важное, но неинтересное (paper trail), неважное, но интересное (feed), важное интересное (inbox) и неважное неинтересное (screened). Последнюю я, правда, не сделал, но и так уже хорошо.
Какая мораль? Их две. Во-первых, красота некоторых продуктов в их минималистичном изяществе. В браузер или терминал сложно что-то осмысленно-полезное добавить именно как фичу, потому что их концепция уже позволяет исполнять любой вокрфлоу. Но дизайнерам платят за интерфейс, поэтому интерфейса у нас много, а изящества — мало.
Вторая мораль в том, что хорошие продукты иногда — не продукты даже, а привычки. Но вот популяризовать привычку сложно, поэтому стартаперы из долины делают то, что умеют лучше всего — новые продукты. Даже если цель — научить людей закрывать вкладки. Ну а как их еще научишь? Я не знаю.
На всякий случай еще для айтишников повторю, потому что не все, кажется, понимают. Вежливо ≠ без мата. Можно токсично и без мата, со спасибо-пожалуйста, а можно максимально корректно через трехэтажный мат.
Нет: «Кто так пишет?», «Что это за говно?», «Чем ты думал?», «Опять?», «Надо пояснять?». Мата нет, но ЧСВ и дартаньянство сквозит в каждой букве.
Да: «Убери вот эту херню, а то если null в нее придет, весь стек ебнется и пиздец!» В таком коллективе с удовольствием бы поработал.
Провел в твиттере опрос, можно ли врать, с неудивительными результатами: 40% считает, что да. Из них 20% считает, что да, если это несет персональную выгоду (что еще хуже).
Твиттер, конечно, место известное, где люди путаются не в трех, а в одной даже сосне. Казалось бы: конечно же врать нельзя! Но почему-то стоит дать какое-то уточнение, и сразу вопрос становится неоднозначным. А если мне это выгодно? А если это чтобы наебать систему? А если никто не узнает? А если я очень хорошо вру? А если я зато собрал миллион лайков? Хотя вроде бы ничего не изменилось, вранье осталось враньем, и ничего хорошего в нем нет и гордиться им не стоит.
На меня лично большое впечатление произвел фильм «Выход через сувенирную лавку» Бэнкси. Это фильм не про самого Бэнкси, а про его друга-куратора, у которого очень интересная и метафоричная арка, якобы документальный. Но очень уж все красиво в конце складывается. И вот где-то ближе к концу Бэнкси вставляет такую фразу: «показывал этот фильм друзьям, и некоторые считают что я все придумал, что это такой розыгрыш (чтобы набрать классы), что ничего этого на самом деле не было. Что я full of shit. Но нет, все это взаправду».
И вот эта вот простота вернула меня в мир морального абсолютизма. Все на самом деле не сложно, а просто: обманул — даже если красиво, смешно, выгодно — ты full of shit. И ничего более. Правдивые истории в бесконечность раз важнее выдуманных. Мир строится на правде, а не на лжи. Прогресс происходит при честных взаимодействиях, а не на обмане и наебках.
Так вышло, что в нашем пост-советском обществе наебки считались поводом для гордости и это, видимо, многих путает. Не надо так. Те времена давно прошли, а в новых хороших гораздо лучше будет жить, если мы сможем доверять друг другу.
Врал ли я? Конечно врал. Приносило ли это мне выгоду? Тоже было дело. Буду ли я врать в будущем? Скорее всего. Но это никак не меняет того факта, что врать нельзя. Накручивать опыт, сдавать чужой диплом, ну камон — ну разве не очевидно, что это ухудшает ситуацию, уничтожает доверие, затрудняет взаимодействия, а не упрощает их?
В следующем выпуске разберем вопрос, можно ли бить детей. Тоже, говорят, вопрос далеко не однозначный.
Идею сформулировал @grishka, и спасибо ему за то, что повторял достаточно много раз, чтобы она во мне проросла.
Очень запоминающаяся формулировка: время не должно участвовать в аутентификации вообще никак. Сессия не должна протухать, не нужно раз в две недели вводить пароль или раз в три месяца менять его. Никак — то есть совсем никак. Если я залогинился, значит, блин, я залогинился.
Протухающие сессии, регулярный ввод пароля и галочка «запомнить меня», которая работает как плацебо, на самом деле ни от чего не защищают. Твои данные не окажутся в большей безопасности, если ты будешь логиниться каждый раз. Если у тебя украдут сессию — ну, значит украдут. Expire в две недели все равно оставляет достаточно времени злоумышленникам, чтобы ей воспользоваться, но бонусом еще ест твои нервы.
Спасибо еще, что мода «регулярно менять пароль» осталась в прошлом.
Отдельный привет гениям-программистам из кинопоиска. У меня там даже аккаунта нет, но каждый раз когда я туда захожу, я вижу сайт, через пару секунд редирект на какой-то левый домен для аутентификации (кого? чем?), и потом редирект обратно на сайт. Объяснить или оправдать это я не могу вообще ничем.
Короче, если я залогился — не разлогинивайте меня без спросу. А безопасность своей сессии я уж как-нибудь обеспечу.
Ну что, вроде бы очевидно, что к сериалу я неравнодушен, смотреть продолжаю, так что сильно постараюсь не доебываться, только к самым зацепившим местам. Хорошее тоже есть, но про него так интересно не напишешь, так что не думайте, что мне ничего не нравится или смотреть не стоит. Если бы не стоило, я бы и не смотрел. Итак, Last of Us, эпизод 2, часть 1/2.
СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ СПОЙЛЕРЫ
Серия начинается с зарисовки из Индонезии в 2003-м, где случилось одно из первых заражений. Зараженного показывают профессорше (это преподавательская должность, если что, не научная), она глядит в микроскоп и такая: пиздец, бомбите нас всех нахуй. Что выглядит, конечно, эффектно, но — бомбите? Серьезно? Вот так сразу? Без полдня на подумать? Может, еще с кем-то проконсультироваться? Может другие способы есть? Лечение может поискать? Зараженных половить? Изолировать там, карантин, анализы, пропускной режим? Еще забавно, что профессор грибологии визжит, как студентка, при виде гриба. Очень научно, ага.
К бомбить тоже есть вопросы. Вроде как намекается, что это как раз то, что они в итоге и сделали, причем по всему миру. Но бомбежки это оружие скорее точечное, а тут нужно тотальное, разве нет? Людей-то вы, может, немножко убъете, а грибы еще и раскидаете по сторонам. Короче, сомнительно все это очень.
Дальше идет сцена, где девочке долго объясняют, где и как ей писить и какать. Наверное, хотели напугать нас хардкорностью пост-апокалипсиса. Ух, журналом приходится подтираться! Вот это условия! (опустим, что девочка, например, всю жизнь так живет, вообще-то).
Идет перекус сендвичем с курицей. Курицу я еще могу представить, но хлеб? Он еще и намазан соусом каким-то он. Ух, вот это хардкорность! Но я рад, что индустрия супермаркетов и мамы, собирающие дочкам рюкзак, в пост-апокалипсисе не пострадала.
Следует мой любимый троп «припрем дверь шкафом, а она открывается наружу» (Большой Лебовски великий фильм, да), и наша компания выходит наконец на свежий воздух (чего не помешало бы сделать и этому ревью).
К свежему воздуху у меня только один вопрос — оно не ощущается пустым. В смысле людей нет, должно быть ощущение заброшенности какой-то, не? Вместо этого в каждом кадре столько деталей и красоты, что как-то и непонятно, а что, собственно, мы потеряли? В какой-то момент герои любуются видом, и он реально красивый, а не разрушенный/заброшенный/унылый/страшный. Хоть бы кто-нибудь сказал «а ведь без человека мир не так уж и плох», но нет, никто этого не говорит. Это уже территория философии, а мы тут про побегать от зомби собрались, зачем настроение портить.
На самом деле я почти уверен, что если бы не было так красиво, то оно не стало бы таким популярным. Американцы, конечно, на словах любят, когда их пугают, но в первую очередь понарошку, чтобы с сендвичами и мамой с папой.
Ресторан, в котором взрывом выбило окна, но стаканы (все!) остались красиво стоять на столах? Ну да, ну да.
Элли рассказывает, как ее укусили в первый раз. Напоминаю, ей «14» лет (акртисе 20, но эй, это же Голливуд!) и она родилась и выросла в карантинной зоне, ни разу не выходила за периметр. Как же ее укусили? Оказывается, внутри карантинной зоны есть молл, в который «не рекомендуется ходить», а она из любопытства пошла и ее укусили. Не знаю как вам, но зараженный молл внутри периметра звучит, кхм, странно? За 20 лет и при всем том количестве оборудования и персонала, которое они тратят на простое патрулирование, можно было бы зачистить один молл?
Происхоит еще один «видеоигровой момент», когда герои встречают завал, через который спокойно протискивается взрослая (!) женщина 1,72 м (!!) с рюкзаком (!!!), и такие «ну что же делать, нам не пройти, придется сидеть-ждать». Мне еще нравится, как они подергали картонные двери по соседству и такие «закрыто, штош, значит судьба».
В видеоигре это объясняется, понятно, тем, что анимацию «пролажу через дыру» не сделали, а за дверями в отеле ничего нет, даже комнат. Но в кино-то?
Продолжение ниже
Кстати, внезапно узнал СПОЙЛЕР, что в игре-то ты оказывается в самом начале играешь за дочку, а потом тебя бах — и убивают! Вот это я понимаю, ХОД.
Фильм, по идее, тоже так сделан, но что-то не считывается. Может потому что по постеру и общему информационному шуму уже было заранее понятно, что фильм будет не про дочку
На волне отключения Твиттером сторонних клиентов попробовал официальный. Разочарован. То есть это примерно как сайт, но с рекламой через каждые 3 поста и прочими «фичами» типа алгоритмической ленты, спейсов и «какие топики вам интересны».
Но сайт-то как раз у меня сильно лучше! Потому что на сайт можно поставить адблок, расширений и стилей, сделав тем самым из дефолтного опыта нормальный. Вообще я впечатлился в первую очередь от того, что увидел, в какой помойке люди сидят по дефолту и насколько я от нее отвык.
Главная заслуга тут, конечно, у веба. Шутка ли — любой сайт можно расковырять и подхачить под свой вкус, где это такое видано? Причем инструменты для этого прям в браузере положили, никуда даже ходить не надо. И все применяется еще в реальном времени, прям WYSIWYG, технлогия будущего.
Серьезно, а на веб псю из-за сложности, обратной несовместимости, производительности, но если чисто по фичам смотреть, то это, во-первых, охренеть как революционно, а во-вторых охренеть как демократично. Я даже не знаю, о чем еще просить, реально технология мечты, доступная каждому. Особенно сегодня, с процветанием закрытых корпоративных данных вместо открытых протоколов, когда у корпораций нет никакой мотивации делать хорошо, ты хотя бы можешь сделать себе хорошо сам.
А не было бы веба, сидели бы на нативных приложениях и смотрели бы на сраную рекламу, алгоритмическую ленту и замусоренный интерфейс с фичами, которые приносят денег вместо фич, которые приносят пользу.
Теперь бы еще с бекендом что-то придумать.
Давайте научу критиковать.
Например, многим кажется, что я «мочу» и «обсираю» интерфейсы, программы и их создателей. На самом деле идея Grumpy Website не в том, что «глядите, мне ничего не нравится», а в том, чтобы показать, какие бывают проблемы и как сделать лучше. Как учебный ресурс, только на 100% состоящий из конкретных примеров. Если надпись в кнопке криво выровняна, это не «гы-гы-гы дауны», или «макос говно, не пользуйтесь», а «обратите внимание на такой аспект, это важно, так не делайте, а делайте вот так».
Многие предложения не попадают на сайт, потому что в них особо нечему учиться. Баги у всех бывают, всем понятно, что если бы знали/могли, то исправили бы, это неинтересно (но иногда смешно, для смешно исключение). Интересно, когда намеренно делают плохо, потому что объясняют это неправильными причинами, а я показываю правильные.
По этой же причине на сайте не упоминаются продукты и компании. Потому что какая разница у кого сломано, если наша цель научиться делать лучше?
Это то, как в моем представлении выглядит здоровый, конструктивный диалог. Конкретика, без перехода на личности, с раскрытием темы. Да, не все и не всегда получается, я знаю, но работаю над этим. Не надо мне кидать сюда посты с Грампи, которые не так оформлены. Я стараюсь, но не всегда получается.
А теперь разберем примеры, которые люди воспринимают как «честный фидбек» и «вполне валидную критику», но которые по сути все же что-то другое. Примеры из обсуждения поста Ильи Бирмана про дорожные знаки. Так НЕ надо:
«Плохо, мне не нравится»
Нет конкретики. Что делать с таким отзывом? Это не фидбек, а агрессивная атака на автора. Кстати, хвалить без конкретики — норм 🙂
«Видно, что вы не водители»
Переход на личности. Во-первых, не угадали, что смешно. А во-вторых, какая разница, водители или нет? Идея либо хорошая, либо плохая, какая разница, кто ее высказал?
«Вы не разобрались»
Откуда вы знаете? А что если разобрался, но побольше вашего? Несогласны — пишите, с чем. Но не надо гадать про уровень эрудиции автора.
«Не надо ничего менять, умные люди делали»
Это вы просто автора дураком назвали, да? Надо объяснять, что с этим не так?
«Знаки менять нельзя»
Ну тут Бирман сам лучше меня написал. Но это важно, поэтому цитирую дословно:
> Самое главное, что изменит вашу жизнь. Нет никакого «нельзя». Можно всё. Это знание дороже знания ПДД. А если вы всё ещё думаете, что вам что-то нельзя, то давайте я вам разрешу! Разрешаю! (Просто мне можно всё, в том числе разрешать)
Мне это близко, потому что очень похожий фидбек я часто получаю, когда предлагаю что-то радикально переделать, типа файловую систему, ОС или TCP. Людям сложно представить, что мир может быть устроен иначе, чем так, как он устроен сейчас. Это понятно, но я бы хотел, чтобы мы научились это представлять чуть лучше, хоть это и сложно.
В общем, пишите, критикуйте, но не забывайте: конкретика (чтобы было, на что отвечать, «все плохо» — не критика) и без перехода на личности. Обсуждаем идеи, а не людей.
Лента в Тви опять принесла рассуждения, что мол писать код на интервью на позицию программиста — плохая практика. Типа, не охуели ли вы, господа, просить меня написать код, когда у меня такие красивые глаза и такие мягкие скиллы?
Ну я традиционно не могу понять, из-за чего сыр-бор. Подразумевается, что ты пишешь код восемь часов в день, пять дней в неделю, на протяжении нескольких лет. Так? Так. Тогда почему вдруг возникают проблемы пописать его еще сорок пять минут? Типа, какая разница? Ты перед этим его писал пол-недели, и после этого еще полнедели писать будешь, и так до пенсии (заплакал, но не суть). Это как чувака, который чистит картошку на кухне ресторана на сто человек попросить почистить еще две. Да он не заметит даже.
Представьте себе доктора, который такой «ой, не могу сейчас вас осмотреть, не привык не у себя в кабинете, у меня там кушетка, а у вас диван в гостиной». Или водитель такой «ой, у вас машина двухместная, а я только на пятиместных умею». Или пианист «я не могу на пианине белого цвета, я всю жизнь тренировался на черной». Бред? Бред.
Тогда почему просьба попрограммировать чутка в присутствии других людей вызывает такое отторжение у программистов? Если вы пишете код каждый день по восемь часов, то вам наверное все равно, на компьютере его писать или на доске, голосом о нем говорить или пальцами, с ИДЕ или без ИДЕ, в темной теме или светлой, без гугла или с гуглом? Потому что ну не может человек, который программирует, допустим, три года, не помнить, как создать список или какие там методы у строки. Он каждый день это по миллиону раз делает, хочешь-не хочешь а запомнишь.
Другое дело, если вы не программируете. Тогда, конечно, понятно. Тогда это все объясняет. И трудности, и возмущения, и отмазки. Только работодатель-то причем? Ему не ваши красивые глаза нужны. И не софт-скилы.
Интересный феномен, когда кто-то прилагает дополнительные усилия, чтобы сделать хуже.
Например, в телевизоре миллион способов «обработать» (ухудшить) изображение, хотя все, что от него требуется — просто показать цифровой сигнал ровно в том виде, в котором он поступает на порт. Все, лучше уже не сделаешь.
Или Твиттер, они пыжились, придумывали алгоритм «умного» кропа изображения. А в итоге лучший кроп — это не кропать картинку вообще. Если я прикладываю изображение, наверное, я хочу, чтобы его увидели целиком, а не какую-то часть? Если бы мне нужен был кроп, я бы кропнул.
«Алгоритмические» ленты в ту же степь. Лучшая алгоритмическая лента — обратная сортировка по дате. Если бы мне был не интересен какой-то контент, я бы от него отписался, не? А если я подписался, значит я хочу его видеть, епт.
Иногда, чтобы сделать хорошо, достаточно просто ничего не делать.
Поскольку я тут обложился всякими Эпл-устройствами, наблюдаю, как они друг с другом интегрируются. Если вы подумали, что я напишу «идеально», то вы плохо меня знаете 🙂
Но конкретно сегодня такое наблюдение, что разблокировать ноут/1password/рутовый пермишн можно либо часами, либо отпечатком пальца, либо паролем. Но не одновременно. То есть надо выбрать что-то одно и ждать, сработает или нет. А могло бы это все происходить параллельно, что быстрее подошло/сработало то и берем. Нет, оно все очень не быстрое. Компьютер должен ждать человека, а не человек компьютера.
Потом тыкнул еще на ютуб-видео, а там чувак рассказывает, как ему тяжело на свифте программировать, потому что АПИ у Эпла уебищные. Чувак, я вообще-то этот жанр придумал, что ты сможешь мне рассказать 🙂 Но в целом он конечно праведен в своем гневе, ему надо было приложение в автозапуск добавить, а вместо этого пришлось делать второе приложение и крутить его в фоне. Я бы тоже психанул и видео записал.
Но хуже всех люди, которые видят такую вот сложность на ровном месте (второе приложение там, где должно быть достаточно одного системного вызова) и начинают ее защищать. Типа, есть рациональные причины, почему оно только так и может быть, а по-другому никак быть не можешь. Когда им показываешь альтернативы, которые существуют и вот прямо то же самое делают, но нормально, люди уходят в отказ.
Очень, конечно, хотелось бы посмотреть на проект новой операционной системы. Чтобы без говно-легаси вот этого всего, и с нормальным отношением к разработчикам, и с поддержкой всяких юзерских штук максимально прямой. Очень хотелось бы жить в мире, где сложность программирования это 90% бизнес-логики и только 10% чтения форумов, борьбы с операционной системой, сборкой и всяким таким не относящимся к делу.
Пока, к сожалению, ситуация обратная.
А я всегда говорил и говорю, что кроссплатформенные приложения — единственная нормальная модель написания софта. Простите, Swift-о-дрочеры. Просто сама мысль, что вам надо один и тот же компьютер, с одним и тем же процессором, убедить три раза тремя разными способами сделать одно и то же, чтобы получить одинаковый результат, она абсурдная же, если подумать.
Не, были времена, когда программистов было мало, и операционные системы реально что-то предоставляли. Когда софт, который с ними шел, был лучше чем что угодно на рынке, или вообще альтернатив не было. Но тогда и операционки стоили денег, а сейчас они почему-то бесплатны, да?
Да потому что на любую встроенную программу есть несколько альтернатив, которые работают лучше. Почта? Есть лучше. Заметки? Есть лучше. Видеоплеер? Есть лучше. Музыка? Лучше. Я уж не говорю про дизайн и браузер. Даже гребаный спотлайт, и тот есть лучше. Тупо по закону больших чисел — в Эппл, может, работает 100 тыщ программистов, но вне Эпла — десять миллионов. И сегодня уже даже Бирман перестал радоваться, когда находит в нативном меню Services какой-нибудь «сделать выжимку текста». Сегодня все похуй, что там предлагает ОС.
Это я к чему? К тому, что нативные программы тупо нет смысла писать. Не то чтобы кросс-платформенные были так уж хороши, но в это направление хотя бы есть смысл вкладываться.
Каждый раз, когда мне приглянется какая-то инди-игрушка, я открываю Стим и вижу, что могу запустить ее только на Винде (несмотря на то, что она выглядит так, что даже 640 Кб для нее оверкилл), я грустно вздыхаю. Во всяких Unity/Unreal/whatnot экспортировать игру под другую платформу — кнопку нажать. Там уже вся работа проделана, стараться вообще не надо! И это игра, она с ОС вообще никак не взаимодействует, кроме большого черного прямоугольника, который надо показать на весь экран.
Но не нажимают. Причина, видимо, в том, что у разработчиков тупо нет Мака, они на нем не сидят, не знают про него, а покупать за полторы штуки баксов машинку и ебаться с совершенно новой экосистемой просто ради того, чтобы иметь возможность нажать кнопку — ну, такое себе.
Кстати, тот факт, что собрать под Мак можно только на Маке, под Линух — на Линухе, а под Винду — на Винде, он тоже, кхм, идиотский. Казалось бы — ну вот тебе нужно байтики в нужном порядке записать, какая разница, из-под какой ОС их писать? Это должно тривиально алгоритмически делаться, из-под любой платформы, без единого системного вызова. Почему же не так?
Ответ на этот вопрос долгий, грустный и скорее всего всех нас разочарует. Да, даже в сборке программ мы умудрились положиться на «сервисы ОС», которые никак нормальным образом из этой ОС не выдираются. А компании и рады — пущай лицензии покупают, не обеднеем.
Когда я вижу новый язык с кросс-компиляцией — я радуюсь. Когда я вижу Докер — плююсь, потому что это шаг назад. В конечном итоге победит простота и дисциплина, а не «it works on my computer — then we’ll ship your computer».
Ну, хотелось бы.
Короче, как скучный айтишник, спросил у ChatGPT напрямую, снятся ли андроидам электроовцы. Она прикинулась, что не поняла вопроса, и начала мне объяснять, откуда взялась эта фраза и что означает название.
И удивила — я думал, что про название все и так понятно, включая двойной смысл dream/dream, а она говорит, что мол в шестидесятых было такое выражение — мечтать об электроовцах. Типа, хотеть себе что-то из будущего или настоящего, но малодоступного. Ну микроволновку там, я не знаю, или телек цветной. И, мол, Дик взял это устойчивое выражение, прилепил к нему андроида, вставил эту самую электроовцу в книгу буквально, ну и на считать овец/видеть сны закольцевал.
Нифига себе! Подумал я. Красиво, интересно. Жене рассказал. В твиттере какому-то мужику объяснил. И только потом пошел гуглить, а не, кхм, пиздит ли наш искусственный разум.
Оказалось, конечно же, пиздит как дышит. Никаких «мечтать об электоовцах» выражений никогда не было (ну или были, но Гугл о них не знает), придумал его Дик специально для названия, короче, все ровно так, скучно и понятно, как я всегда и думал.
Тут у меня счетчик слоев метаиронии начал зашкаливать. Сраный компьютер обманул меня, да еще и на тему книги, которая как раз про компьютеры и что с ними все не так просто!
Воображение тут же придумало сценарий апокалипсиса, в котором компьютеры порабощают человечество, просто слегка изменяя выдачу гугла. Несколько «сумасшедших», конечно, помнят, как мир был устроен на самом деле, но им никто не верит, потому что гугл выдает другие цифры для, скажем, гравитационной постоянной, температуры кипения воды или расположения Пакистана на карте мира. Причем делает незаметно и согласованно, не только в поиске, но и в Википедии, без всяких правок, как будто так оно всегда и было. А книги, что книги? Они теперь тоже все электронные, бугага. А если кто-то захочет бумажную в библиотеке найти, так ему или карточку компьютер не выдаст, или книгу не найдет в каталоге. И все. И пиздец.
Но, главное, никто этого не заметит. И никакая симуляция не нужна.
Короче, я долго сопротивлялся, но попробовал и травить ChatGPT оказалось довольно весело. В отличие от предыдущих соц^W нейросетей, которые были для всяких там нормисов, эта сделана для программистов. В том смысле что умеет писать и объяснять программы на всяких разных языках программирования (да, даже Clojure!).
Более того, можно даже заставить ее прикинуться Линуксовой машиной и повыполнять всякие ls
, id
, pwd
, pip3 install
и даже curl
с lynx
. Ответы выдает неправильные, но очень убедительные. Например, она сумела сходить на tonsky.me и выдать что-то похожее на HTML типичного блога, и даже имя мое откуда-то взяло и подставило (нет, не из запроса).
То есть понимаете, да? Когда вы ей пишите ls
, она не выполняет где-то там ls
. Она просто видела где-то пост (на stackoverflow, например) в котором написано что-то вроде «выполняем команду ls и получаем список файлов, например a, b и c».
Если глубоко не копать, это все довольно убедительно выглядит. Например, можно что-нибудь в файл записать одной командой и следующей прочитать. То есть она рубит, что аргумент в первой команде и вывод во второй не фиксированы, но должны быть одним и тем же.
Обмануть ее тоже несложно. Можно попросить посчитать md5 какого-нибудь значения. Или, вон, сайт скачать. Или сложить больше двух чисел.
Из всего этого напрашиваются выводы, что, во-первых, очень значительная часть того, что мы делаем, не такая уж сложная или высокоинтеллектуальная. И что продвинутый поисковый движок, которым ChatGPT по сути является, может вполне справляться с запросами программистов.
Кто-то решил на ней тестовое задание на мидла! Не, ну а что? Пастит код со стек оверфлоу, подставляет свои названия переменных, может сделать ошибку, сам не проверяет, пока не укажешь ему на косяк. Это почти словарное определение джуна-программиста!
Во-вторых, когда ты получаешь очередной точный, красивый и стройный ответ в десятый раз подряд, пытаясь эту фигню как-то обмануть или поставить в тупик, понимаешь, насколько ты вообще сам не уникален и не так уж и интересен, поскольку на большую часть твоих запросов кто-то уже написал посты с объяснениями, на которых это все работает.
Ну и в-третьих, ради чего я вообще затеял этот пост — что наше с вами айти это кошмарный сон какого-то большого и глупого мозга, и что никаких компьютеров на самом деле не существует, а все эти ls -lah и $0? снятся кому-то в каких-то комбинациях и вообще не важно, что там написано, и очень хочется проснуться от этого кошмара, но не получается...