• Advent of Code

    Наступил декабрь, и программисты всего мира бросились решать Advent of code. Кто не знает, это цикл задач на алгоритмы. Каждый день появляется новая задача, а их сложность постепенно нарастает. Задачи обсуждают в интернете, сравнивают решения, спорят… словом, этакий сериал для программистов.

    Пару лет назад я тоже брался за AoC. Мне хватило часа, чтобы понять — никогда не буду этим заниматься, и вот почему.

    Во-первых, формулировка заданий. Когда я читаю про гномов, эльфов и магические камни, то хочется кричать. Неужели нельзя подобрать нормальные термины? У меня уходит сорок минут на то, чтобы понять, что от меня хотят. Мне грех жаловаться на английский, но порой я копирую задачу в гугло-переводчик, чтобы разгрести эту ахинею. Не хочу тратить столько времени на работу — сделать текст понятным, — которую должен был сделать автор.

    Далее, предположим, у вас и вправду зачесались руки что-то покодить. Неужели нет ничего под рукой? Написать библиотеку, какой-нибудь плагин, документацию? Это гораздо полезней, потому что послужит людям. А какая польза в решении задачи с волшебными камнями? Это одноразовый код, страшный и понятный только автору. Он пойдет на помойку.

    Хуже всего тот шум, что производит Advent of Code каждый декабрь. Напоминает бегунов в парке или веганов: они не могут бегать и веганить молча, нужно всем об этом рассказать. Блоги, твиттеры и другие площадки наводняются унылыми постами на тему “AoС day 5 in Rust”. Для меня это красный флаг: если вижу, что автор будет тридцать дней кормить меня “интересными задачками”, отписываюсь без раздумий.

    Advent of Code — это турнир, в котором вам никогда не выиграть. Как правило, все одиннадцать месяцев мы делаем рутину: читаем базу, Кафку и перекладываем данные туда-сюда. Дай бог раз в квартал обходим дерево. Но ни с того ни с сего в двенадцатый месяц надеемся преуспеть в решении нетривиальных задач. С какой стати? Это как новичку пойти в спортзал и каждый день заниматься по два часа. Чем это кончится? Организм не вынесет внезапной нагрузки, плюс добавьте духовное поражение. Так почему вы уверены, что быстренько решите этот бред с гномами и эльфами?

    Advent of Code построил специфическую тусовку. Ее завсегдатаи решают подобные задачи за три минуты. Вступить с ними в соревнование — гарантировано обречь себя на проигрыш. Это чужая среда, чужая повестка, и обычному, заурядному программисту (как мне, например) там делать нечего.

    Сказанное выше не значит, что я против Advent of Code. Ради бога, решайте, если вам нравится. Важно понимать: AoC не сделает вас лучше, если вы им занимаетесь. Ровно так же вы не станете хуже, если вам наплевать. Вы можете быть отличным программистом даже без репозитория advent_of_code_2021 на Гитхабе. А новогодний шум легко и перетерпеть.

  • FAANG не предлагать

    Не понимаю, почему люди так стремятся FAANG. В последнее время пена пошла через край: каждую неделю появляются статьи на тему “Как за полгода я устроился в условный Фейсбук/Гугл”, и конца этому не видно. Истерия достигла такого масштаба, что появились фирмы-нахлебники, которые за скромную сумму готовят к FAANG-у: переписывают резюме, разбирают задачки.

    Я бы не стал писать этот пост, если бы не видел похожие мысли у окружающих. Всем нужен Фаанг; взрослые люди на полном серьезе зубрят по ночам красно-черные деревья, обход графов и прочую муть, которая понадобится им раз в жизни.

    Для меня это своего рода унижение. С какой стати я должен готовиться к собеседованию? Вот он я, что умею, то умею. Расскажу то, что делаю регулярно. Если не знаю, как обойти граф, то быстро нагуглю. В чем проблема-то? Представьте, что программист условного Гугла забыл обход графа. Его что, сразу увольняют? Нет, он как и мы открывает Гугл и находит то, что нужно.

    Но поскольку очередь в гуглы-фейсбуки расписана на пару лет вперед, фирмы позволяют любое измывательство над соискателем. Не развернул связный список – гуляй, нам не нужны неудачники. Постепенно эта модель приходит в Россию. Условные яндексы-тиньковы переняли ту же дрочь на алгоритмы, которую должен выдержать новичок, как в худших традициях студенческих братств.

    Одержимость алгоритмами на собеседованиях переходит все границы. Как ни почитаешь статью какого-нибудь бедняги, которого пять часов мурыжили алгоритмами, так становится не по себе от этой лжи и лицемерия. Алё там: сложные алгоритмы нужны лишь изредка, а основное время программист проводит за рутиной: читает данные из файлов и сети и перекладывает в другое место.

    Зацикленность на алгоритмах говорит о том, что в фирме не понимают, как нанимать людей. Неважно, умеет ли соискатель обходить дерево. Важно, умеет ли он доводить задачу до конца, задавать вопросы, писать письма, общаться с руководством и начальством. Графы и деревья настолько незначительны по сравнению с этими навыками, что просто смешно говорить. Поищите людей, которые обещали к пятнице и сделали к пятнице. То есть не написали код, не открыли pull request, а выкатили, сто раз проверили, и в пятницу фича в бою. Найдёте в лучшем случае пару из ста.

    Фаанги — это инфантильная мечта, которой надо переболеть, вроде как сняться в порно или создать социальную сеть. Или как молодежная группа и толкинизм. В какой-то момент надо повзрослеть и взяться за что-то полезное.

    Удивляюсь, что кто-то питает романтические надежды в адрес этих огромных фирм. Все они давно прошли фазы стартапов и стали машинами по заколачиванию денег. Фейсбук отвратителен до тошноты: от одного вида хочется закрыть браузер. Сотрудникам, которые пилят его каждый день, я бы доплачивал за вредность. Гугл хорош только как поисковик, у других сервисов адский интерфейс. Обе фирмы живут за счет рекламы, которую показывают на базе собранных данных. Собранных самым лживым и обманным способом, с нарушением всех соглашений и норм.

    Загонять себя в FAANG — все равно что добровольно надевать кандалы. Первые несколько лет нужно рвать зад ради репутации. Затем будет трудно уйти, потому что высокая зарплата действует как наркотик.

    Интересно, что все, кого я спрашивал, идут в FAANG ради денег. Так и отвечают: там много платят, x2 по рынку. Это самый пошлый и банальный ответ, и мне даже стыдно его слышать. Но почему — расскажу отдельно, потому что это уже новая мысль.

  • Meet Soothe: a small Clojure library for better Spec error messages

    Note: this post is an adjusted copy of the Readme file from the GitHub repo.

    Soothe provides better error messages for Clojure.spec. It’s extremely simple and robust.

    API Documentation

    Installation

    • Leiningen/Boot
    [com.github.igrishaev/soothe "0.1.0"]
    
    • clojure CLI/deps.edn
    com.github.igrishaev/soothe {:mvn/version "0.1.0"}
    

    Concepts

    Clojure.spec is a piece of art yet misses some bits when dealing with error messages. The standard s/explain-data gives a raw machinery output that bearly can be shown to the end-user. This library is going to fix this.

    The idea of Soothe is extremely simple. The library keeps its private registry of spec/pred => message pairs. The key is either a keyword referencing a spec or a fully-qualified symbol meaning a predicate. The value of this map is either a plain string or a function that takes the problem map of the raw explain spec data.

    Read more →

  • Не смешивать языки

    Пришел к выводу из заголовка: не следует смешивать языки. Не должно быть такого, что эта часть на одном языке, а та на другой. Бек на Питоне, фронт на JS — отстой. Бек на Кложе, CLI на Golang — отстой. Сервис логики на Джаве, сервис авторизации на Расте — отстой.

    Этот языковой цирк усложняет и без того сложную реальность. Раньше я думал, что протоколы и схемы решают проблемы. Не все ли равно, что на том конце провода, если данные в JSON? Оказалось, не все равно.

    Даже если данные в JSON, некоторые языки не могут работать с ними так, как это делают другие. Например, Гоферы и прочие ребята со статической типизацией не могут просто распарсить JSON. Они объявляют три экрана вложенных структур и натягивают на них JSON. Малейшее расхождение, какое-то поле nil — и все упало. Опять созвон и новая задача.

    Когда читал исходники проекта на Golang, который забирает JSON от Кложи, сто раз удивился, зачем добровольно садиться на кактус. Совершенно разные языки и идиомы, подход к коллекциям и обработке данных. На ровном месте впендюрили проблему: случись беда, я не смогу поправить у гоферов, а они у меня.

    Два и более языков — это постоянное переключение контекста. Это свои погремушки: пакетные менеджеры, зависимости, подводные камни. Это разные идиомы. Это неполное погружение в каждую область. Это удел “фулстек-разработчика” — посредственности, который одинаково плохо знает обе среды.

    Стоит ли говорить, что с одним языком проще управлять командами? Удобней перекидывать людей, наполнять общую базу знаний. Вести библиотеки с контрибом.

    На стыке языков всегда будут трения. Вечно будут задачи в духе “этот словарь мы не распарсим, наши убер-классы не позволят, переделай”.

    Команда не может Кложу? Научите их. Несколько дней мастер-классов. Подсадной человек, который поведет за собой начинающих. Заготовка проекта, который будут дорабатывать. Учиться не так уж сложно, если знать как обучать, и в перспективе выгодней.

    Всячески сокращайте языковое многообразие.

  • Оружие

    Этот пост касается сложной темы: оружия и массовых расстрелов в школах. Я специально публикую его не по следам очередной трагедии, потому что считаю подобные вещи гнусной спекуляцией. Такого рода текст лучше писать в отрыве от истерии и информационной волны.

    В разное время мое отношение к оружию менялось. Если бы я писал этот пост лет пять назад, то залепил бы что-то в духе: оружие помогает защититься, вот случай А, вот случай Б, а кто не согласен, тот идиот. Именно так и протекают дискуссии на тему оружия (или сводятся к этому). К счастью, я уже отошел от подобной точки зрения.

    Написать этот пост меня побудило эссе Стивена Кинга “Оружие”. Да, тот самый Кинг, который про ужасы и зомби. После очередной стрельбы он написал текст страниц на двадцать, где затронул проблемы оружия и американского общества в целом.

    Эссе, что называется, зашло в массы, и теперь после каждой стрельбы на него кидают ссылку изо всех углов. Феномен дошел и до России: после недавних событий все чаты вскипели, и “Оружие” приводят по поводу и без.

    Я не поленился прочитал это эссе. Прочитайте и вы: вот ссылка на хороший русский перевод. Прочитали? Давайте обсудим.

    Первая часть описывает типичную и беспощадную информационную волну. Новостные источники наполняются дрожащими кадрами с бегущими людьми. Никто ничего не знает, начинаются спекуляции на тему числа убитых. Как только ясны события, высказываются политики обеих партий, используя стрельбу как повод пнуть друг друга. Несколько дней дебатов кончаются тем, что тема уходит с повестки, и все выдыхают.

    Далее Кинг опровергает миф о пристрастии американцев к насилию. Приводит аргументы, что несмотря на жестокие игры и фильмы, топ-чарты занимают симуляторы, гонки и сериалы про отношения. Доказательства длятся несколько страниц, и до конца не ясно, с чем спорит Кинг. Очевидно, что американцы — такие же люди как и все: любят айфоны, гаджеты, сериалы, никакого насилия в них нет.

    Ближе к середине Кинг подходит с сути проблемы: оружию и причинам, по которым оно оказалось в руках нападавшего. Он упоминает травлю и роман, что написал еще в старшей школе, где ученик творит резню. Роман называется “Ярость”, и он идет красной линией сквозь все эссе. Кинг постоянно возвращается к теме того, что добровольно изъял его из продажи, и это отвлекает от главной мысли.

    Вывод, к которому склоняется Кинг, показался мне крайне скудным. Если коротко, он умещается в тезис “запретить автоматическое оружие”. Кинг долго описывает, сколько людей способен убить человек, вооруженный автоматической винтовкой, и насколько труднее сделать это пистолетом. Сравнивает числа жертв, погибших от разных видов оружия; приводит случаи, когда ученик с автоматом убил тридцать человек, а с револьвером — двух или трех.

    Соглашусь, автоматическое оружие гораздо смертоносней обычного. Да, вооруженный им человек убьет больше людей. Очень странно, что столь мощное оружие можно купить для “самообороны” или коллекционирования. То, что оно должно быть запрещено в гражданском обществе, не вызывает вопросов.

    И на этом месте Кинг останавливается. Дальше идет лирика, опять роман “Ярость”, сатира над американскими политиками и шоу, понятная только американцам (кое-что разъясняют сноски в русском переводе). Эссе заканчивается, и в этот моменты вы должны над ним подумать.

    Но я не хочу над ним думать. Меня интересует другое.

    Когда очередной подросток стреляет в школе, нам сообщают, скольких людей он убил, были у него сообщники или нет и другие стандартные вещи. Я бы хотел бы узнать тот пусть, что привел его в школу с оружием в рюкзаке. Что именно побудило его стрелять в своих.

    Надо понимать, что даже без жертв стрельба — это событие из ряда вон. Такого быть не должно. Если убили двух человек из пистолета, мы не должны радоваться тому, что это был не автомат Калашникова и не тридцать жертв. Смерть даже одного человека — трагедия, и она вызывает такой же по силе стресс, что и гибель тридцати человек. Смертей должно быть ноль.

    Для примера сравните Бостонский марафон, где погибло три человека, и события 11 сентября. Число погибших отличаются тремя порядками, но информационный шлейф и всплеск стресса соизмеримы. Это естественно, потому что в мирное время люди не терпят смерть своих, хоть трех человек, хоть трех тысяч.

    Выражаясь айтишными терминами, стрельба в школе — это критичный баг в проде. В дрянных фирмах за это наказывают конкретного человека: админа, программиста, менеджера. Выговор и лишение премии, чтобы другим было неповадно. В правильных фирмах проводят то, что называется “постмортем”. Это когда досконально разбирают хронологию событий и их причины. При этом ставят цель не наказать человека, а организовать такой регламент, при котором ошибку допустить в принципе невозможно.

    Примеры громких постмортемов вы знаете. Когда взорвался тот самый шаттл, причину расследовали годами. Привлекали лучшие умы планеты — того же Фейнмана, вторая книга которого посвящена инциденту с шаттлом. Все документы по этому делу открыты, их может прочесть каждый.

    Надеюсь, вы поняли, куда я клоню. Вместо того, чтобы обсуждать вид оружия, из которого стрелял нападавший, надо выяснить, что вынудило его стрелять. Намеренное убийство своих — это очень серьезный рубеж в психике, и если он пройден, причины были столь же серьезны. Подобно случаю с шаттлом, каждую стрельбу и ее виновника нужно изучать годами. Собрать лучших экспертов, написать полки документов. И самое главное — сделать расследование достоянием общественности.

    Происходит ли что-либо подобное в России? Сомневаюсь, да и насчет других стран тоже. Как только новость уходит с главной, то же происходит и с расследованием. Допускаю, что с нападавшим работают следователь и психолог, но до широкой публики результаты их трудов не доходят. А значит, все зря.

    В расследовании стрельбищ кроется неприятный факт. Если изучить последние пару лет из жизни нападавшего, выяснится, что он отчаянно подавал знаки, которые общество отказалось слышать. В социальной сети были радикальные картинки, но их никто не заметил. Провайдер купил оборудование на миллион по закону Яровой; в соцсети тысяча модераторов, чтобы банить адептов Навального, а наш герой успешно миновал все это. Одноклассники не заступились в момент травли. Учитель предпочел не заметить конфликта. Участковый занят с наркоманами и алкашами. У родителей ипотека и кредиты, день и ночь на работе. Подростка никто не слышит.

    Другими словами, косвенно виноваты все. Это тяжело признать, и гораздо легче цепляться за жестокие игры и интернет. В широком плане стрельба не выгодна никому: ни обывателю, ни полиции, ни политиками всех партий. Полноценное расследование займет столько сил и вскроет столько проблем, что лучше не открывать этот ящик Пандоры.

    Популярные ток-шоу сводятся к популизму, крикам и оскорблениям. Сегодня в российском эфире нет тем кроме Украины, газа, и коронавируса. Любая стрельба быстро сходит на нет. Не пройдет и двух дней, как пьяный актер устроит ДТП или у чиновника найдут виллу в Альпах. Тема уйдет с новостных сайтов, и стрельбу забудут до следующего раза.

    Что касается “Оружия” Кинга, то оно оставило неприятный осадок. Кинг — мастер слова, замечательный писатель, это слышно даже в переводе. Его описания точны, текст бросает читателя то в одно чувство, то в другое. Кинг — плоть от плоти американского общества и понимает его как никто другой. Но он именно художественный писатель, а не ученый или психолог, вот что нужно помнить при чтении его эссе.

    Непонятно, как его главный его тезис — запретить автоматическое оружие — скажется на числе трагедий. И не только их числе, но и здоровье общества. В этом плане Кинг напоминает селебрити, которая выпускает миллионным тиражом книгу о том, как красить ногти. Эссе читают не потому, что он досконально понимает проблему, а потому что на обложке известное имя. В таком важном деле мы должны видеть разницу между красивыми словами и смыслом.

    Какие выводы можно сделать?

    Я считаю, частая стрельба говорит о неблагополучном фоне в обществе. Задача власти — искоренить этот фон. Это очень размытый тезис без четких контуров. Неясно, сколько времени займет этот процесс и будет ли на выходе польза. С точки зрения денег это однозначно убыток, поэтому вряд ли кто-то возьмется планомерно искоренять негативный фон.

    У населения должен быть образ будущего. Сейчас этого образа нет. В прошлом веке образы происходили от конкуренции СССР и США. Эти государства производили не только продукцию, но и образы будущего. Люди намеренно ехали и бежали из США в СССР и наоборот лишь потому, что считали те социальные принципы более правильными.

    Если говорить о России, то никакого образа будущего у подростков нет. Есть иностранные гаджеты и социальные сети, из которых льется сомнительный контент с рекламой. Приоритет нашей власти — геополитика, недружественный страны, газовый шантаж. По телевизору — Украина, короновирус, иностранные агенты.

    В муниципальных школах в лучшем случае один психолог, а чаще всего их нет. Их должно быть по числу классов и больше. Должно быть больше занятий, когда ученики свободно общаются с учителем и задают ему вопросы через записки. Должно быть больше наставничества. Но расписание забито религией, двумя историями (отечества и мира), дети перегружены: в лучшем случае шесть уроков, а иногда и семь.

    Продолжать можно долго, но я не вижу в этом смысла. Ясно одно: в масштабном плане никто не будет ничего делать. Все зависит от нас: как мы живем, на что обращаем внимание, насколько принципе мы считаем себя ответственными за происходящее.

    Мне ясно: запрет какого-то вида оружия, будь то автоматическое, нарезное или с красной рукояткой, не сделает нашу жизнь лучше. Ровно как и повсеместное его разрешение. Каждый резонансный случай должен быть рассмотрен так досконально, как только это возможно. Решение придет оттуда.

  • Тетрадь

    Иногда меня охватывают приступы продуктивности: я записываю задачи, ставлю помидоры и пишу в блог об эффективности.

    Это временно. Потом меня отпускает, и я веду дела как все: урывисто и ситуативно.

    Только одну вещь удалось сделать привычкой: вести тетрадь. Пишу в нее список дел, мелкие заметки, схемы. Одно время даже вел дневник. И должен сказать, тетрадь — великая вещь.

    Переключение с гаджета на бумагу работает так же, как и прогулка во время трудной задачи. Физически чувствуешь, как включается другой отдел мозга. С бумаги воспринимаешь по-другому. Мысль, записанная рукой, дольше остается в памяти. Раньше я считал это бредом, но оказалось правдой.

    С тетрадью можно отлично поработать в самолете, поезде или такси. Ей не нужна зарядка. Классно пролистать тетрадь назад: это своего рода ретроспектива.

    Особо важные страницы я фотографирую, но снимки до сих не пригодились. На обложке тетради пишу телефон и просьбу вернуть в случае утраты.

    В тетради можно записать список дел на месяц вперед, сделать одно и забить. А через месяц вернуться и продолжить, и дела рано или поздно будут сделаны. Прямо сейчас пролистал на двадцать страниц назад. Весь лист А4 занят списком дел в две колонки. Когда-то он казался мне адом, а сегодня в нем осталось два не зачеркнутых пункта. И таких страниц хватает.

    Не так уж много нужно для того, чтобы доводить дела до конца. Но обязательно — честность с собой и окружающими.

  • Книга в ДМК-Пресс

    Моя книга про Кложу выходит в издательстве ДМК-Пресс. Ожидаемая дата — середина ноября. Твердый переплет, формат B5 (165x235 мм).

    Внимание: на время предзаказа цена 799 рублей (вместо 999 рублей). С промокодом

    Grishaev_Clojure20
    

    она станет еще меньше. Если вы бываете в книжных магазинах, то знаете, что компьютерных книг дешевле тысячи почти не бывает. А тут такое предложение! Надо брать.

    Книга почти ничем не отличается от второго издания, что вышло в Ридеро. Исправил опечатки и неточности в коде, на которые указали читатели. Особая благодарность Алексею Иванцову, который не просто нашел ошибки, но и оформил их в виде PR к репозиторию книги. Мне оставалось только нажать кнопку, чтобы их принять.

    Кроме того, собрал и залил исправленные PDF на Gumroad. Если вы уже покупали там, зайдите и скачайте новые файлы. Если нет — самое время купить, цена всего пять долларов.

    Для меня выход книги в ДМК-Пресс — это событие. Во-первых, издание вышло на меня само. Когда заинтересован не ты, а в тебе, это меняет дело: значит, книга действительно кому-то нужна.

    Во-вторых, приятно, что ДМК-Пресс — издание с долгой историей и богатым списком выпущенных книг. Именно в ДМК девять лет назад вышло “Программирование на Clojure” — тот самый альманах на 800 страниц. Он кстати, почти не устарел, советую прочитать. Вдвойне приятно, что моя книга займет место рядом с ним.

    Что это значит для читателя? Главное — книгу в твердой обложке теперь можно купить не только у меня, а на сайте ДМК или в магазине. Это главная проблема Ридеро: у них нет массовой печати в твердой обложке, только разовый (и потому дорогой) тираж. Так что теперь не обязательно слать мне Яндекс.Деньги: заказывайте на сайте ДМК. Однако я всегда рад подписать книжку и отправить в любую страну.

  • Реляционные базы данных в Clojure

    Содержание

    Реляционные базы данных

    В этой главе мы поговорим о том, как работать с реляционными базами данных в Clojure. Бóльшую часть описания займет библиотека clojure.java.jdbc и дополнения к ней. Вы узнаете, какие проблемы встречаются в этой области и как их решают в Clojure.

    В бекенд-разработке базы данных занимают центральное место. Если говорить упрощенно, то любая программа сводится к обработке данных. Конечно, они поступают не только из баз, но и сети и файлов. Однако в целом за доступ к информации отвечают именно базы данных — специальные программы, сложные, но с богатыми возможностями.

    Базы данных, или сокращенно БД, бывают разных видов. Они различаются в архитектуре, способе хранения информации, типом связи с клиентом. Некоторые базы работают только на клиенте, то есть в рамках одного компьютера. Другие хранят только текст и оставляют типы на усмотрение клиента. Встречаются базы, где данные хранятся в оперативной памяти и пропадают после выключения.

    Мы не ставим цель охватить как можно больше баз и способов работы с ними. Наоборот, сфокусируем внимание на том, что встретит вас в реальном проекте. Скорей всего это будет классическая реляционная база данных вроде PostgreSQL или MySQL. О них мы и будем говорить.

    Реляционные базы данных называют так из за модели реляционной алгебры. Это изящная математическая модель с набором операций, например выборкой, проекцией, декартовым произведением и другими. Из модели следуют строгие правила о том, как работает та или иная операция. Поэтому базы данных работают не спонтанно, а по четким алгебраическим правилам. Из этих правил следуют нормальные формы (первая, вторая и третья), доказать которые можно аналитически, а не на глаз.

    Мы будем учить реляционную алгебру с самых азов. Обратитесь к статье в Википедии или книгам, где она описана без привязки к конкретной БД.

    Перейдем к понятиям, более привычным программисту. Базы хранят содержимое в таблицах. Запись в таблице называется кортежем и состоит из отдельных полей. Поля могут быть разного типа. Состав полей и их порядок одинаков в рамках таблицы. Не может быть так, что в первой записи два поля, а во второй три. Если нужно указать, что в поле нет значения, в него пишут специальное пустое, чаще всего NULL.

    Read more →

  • Мертвые программы

    Самые лучшие программы — те, что обыватели называют “мертвыми”. То есть те, что обновляются либо никогда, либо редко и по мелочам. Иной раз поражаюсь: собеседник вроде неглуп, но Sublime Editor у него считается мертвым. Видите ли, давно не обновлялся.

    Не обновлялся, и что? Это же прекрасно! Никаких неожиданностей с интерфейсом, дуракцих фич, синхронизации учетной записи, облачной подписки, что там еще… Как в старые добрые времена. Поставил Фотошоп версии пять, через год вышел шестой. А не через день, как сегодня. И нельзя запустить, пока не скачаешь.

    Желая обновлений, вы сами накликаете беду. Пусть будет софт, который не обновляется. Такой, чтобы из года в год мы получали ту же программу, что и раньше. Глупцы не понимают, что индустрия насыпет им обновлений сверх меры. Оно вам надо? Софт, который из года в год работает одинаково, – разве не будет он глотком воздуха в этом аду?

    Удивляюсь тем, кто отслеживает грядущие фичи и расстраивается, если их нет в релизе. Я всегда полагался только на то, что идет из коробки. Нахожу забавным обзоры релизов какой-нибудь IDE от Джетбрейнс. Тут заработал автокомплит! А здесь новое окошко! Прокрутка на 3.3 процента плавнее! Поддержка эмодзи, вы слышали! Смехота и только.

    Сердце моего окружения — это именно мертвые программы: Emacs, Git, Bash, утилиты GNU, LaTeX. В них я могу создать программу, сайт, книгу. Они обновляются, но это не играет роли: я использую только то, что в них уже много лет. Если завтра за их поддержку введут смертную казнь, мне хватит их на оставшуюся жизнь. Они не отвалятся из-за протухшей учетной записи, заблокированной кредитки или переезда в Крым-наш.

    Это очень круто и дает настоящую, неподдельную радость.

  • Принтеры

    Пожалуй, самая нелепая, не поддающаяся описанию вещь в нашем мире — это принтеры.

    Даже если принтер размером с холодильник и стоит как самолет, его экран будет как пейджер нулевых. То есть со спичечный коробок с четырьмя кнопками, у которых по десять функций в зависимости от контекста.

    У любого принтера ужасный драйвер и интерфейс опций. Типичный случай — восемь-девять табов с опциями, раскиданными без всякой логики.

    Принтеры ужасно выглядят: у них миллион каких-то щелей, фазок, выемок, лотков, которыми никто не пользуется. Все это скрипит и ходит, как потертое седло. Те же ощущения, что от ноутбуков HP десятилетней давности.

    Самая феерия — это дозаправка картриджа. Производитель считает, что ты должен купить новый у официалов, и если вставить заправленный картридж, система его не увидит. Для своего принтера нагуглил инструкцию (копирую как есть):

    • Включите аппарат и откройте крышку.
    • Теперь выключите принтер.
    • Зажмите клавишу «Go» на клавиатуре панели управления устройства и не отпускайте.
    • Снова включите принтер.
    • Дождитесь пока начнут гореть все индикаторы кроме «Ready».
    • После еще три секунды подержите и отпустите «Go».
    • Теперь 10 раз нажмите «Go» и следите, чтобы после каждого загорался индикатор «Ready» именно зеленым цветом.
    • После делаем небольшую паузу. В это время должны гореть три лампочки вверху.
    • И снова кнопку «Go» жмем 5 раз.
    • После этих мероприятий лампочки еще некоторое время помигают разными оттенками.
    • В конце лампочка «Ready» должна начать постоянно светится.

    Удивительно, но это дерьмо работает. Реально, если нажать, подержать, помигать, отпустить и так далее, то принтер подхватит заправленный картридж. Не знаю плакать или смеяться. Представьте, если после замены воздушного фильтра в машине надо зажать тормоз и газ, открыть все двери и перекреститься. А тут всерьез.

    Дополняет все беды то, что системный диалог печати в операционных системах убог до невозможности, а каждая программа предлагает свои уродские диалоги. В Ворде он ужасен. В Хроме — кастрирован. Для себя нашел спасение: любой документ сохраняю в PDF и печатаю из эпловского Preview. Единственная программа с нормальным диалогом печати.

    Интересно, что именно в компании Xerox начались изыскания в области интерфейса. Окна, кнопки, вырезать-вставить. Но в итоге печатная промышленность пришла куда-то не туда.

Страница 19 из 73