• Remus: a new RSS/Atom feed parser for Clojure

    Recently, I found plenty of code that I usually borrow from project to project without hosting it on GitHub. I think I may share some of that since it might be useful to anybody.

    The first library I’d like to start with is a feed parser. There are already some Clojure wrappers for ROME and they even solve default cases. But mine wrapper is special since it supports lots of additional options and tweaks. So if you play with RSS a lot, try Remus, the library I’m introducing in this post.

    It’s also built on top of ROME but uses clj-http for HTTP communication with all its features, e.g. redirects settings, connection pooling, conditional requests by Etag.

    Remus fetches all the possible data from a feed including non-standard tags for further processing. Some feeds (YouTube, for example) distribute useful data with custom XML tags, e.g video statistics or geographical coordinates.

    Start with including the library into a project:

    :dependencies [[remus "0.1.0"]]
    

    Import it:

    (ns your.project
      (:require [remus :refer [parse-url parse-file parse-stream]]))
    
    ;;;;
    ;; or
    ;;;;
    
    (require '[remus :refer [parse-url parse-file parse-stream]])
    

    Now parse a URL:

    (def result (parse-url "http://planet.clojure.in/atom.xml"))
    

    The result will be a map with :response and :feed keys. The first one holds an HTTP response. You’ll need it to save some of the headers for further HTTP communication. The :feed key contains a huge map representing a parsed feed:

    (def feed (:feed result))
    
    (println feed)
    
    ;;;;
    ;; a small subset of the origin feed
    ;;;;
    
    {:description nil,
     :feed-type "atom_1.0",
     :entries
     [{:description nil,
       :updated-date #inst "2018-08-13T10:00:00.000-00:00",
       :published-date nil,
       :title
       "PurelyFunctional.tv Newsletter 287: DataScript, GraphQL, CRDTs",
       :author "Eric Normand",
       :link
       "https://purelyfunctional.tv/issues/purelyfunctional-tv-newsletter-287-datascript-graphql-crdts/",
       :contributors (),
       :uri "https://purelyfunctional.tv/?p=28660",
       :contents
       ({:type "html",
         :mode nil,
         :value "long HTML here....."
         }),
     :extra {:tag :extra, :attrs nil, :content ()},
     :published-date #inst "2018-08-13T11:59:11.000-00:00",
     :entry-links
     ({:rel "alternate",
       :type nil,
       :href "http://planet.clojure.in/",
       :title nil,
       :length 0}
      {:rel "self",
       :type nil,
       :href "http://planet.clojure.in/atom.xml",
       :title nil,
       :length 0}),
     :title "Planet Clojure",
     :link "http://planet.clojure.in/",
     :webmaster nil,
     :uri "http://planet.clojure.in/atom.xml",
     :authors ()}
    

    To parse a file:

    (def feed (parse-file "/path/to/some/atom.xml"))
    

    This function returns just a feed data structure.

    Remus supports options to specify how to communicate via HTTP; how to deal with broken or wrong encoded feeds; how to prevent receiving data you’ve already processed. I described all of this in the readme file and do not want to clone that text here. Instead, please look through that file and examples. I hope you’ll find the library helpful and will use it one day.

  • Что делать с залитым Маком

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

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

    Итак, если вы опрокинули на Мак стакан воды, нужно его перевернуть и выключить. В перевернутом состоянии вода не будет стремиться вглубь корпуса, где самые важные детали: материнская плата и процессор. В отключенном состоянии меньше шанс, что случится замыкание.

    Забейте на несохраненные документы — вы их потом восстановите. На корректное завершение работы уйдет пара минут, что критично для системы.

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

    Сотрудники центра идут на такой способ приема техники, потому что знают: время критически важно. Даже если Мак был залит сурово, но доставлен через 20 минут, критических последствий можно избежать.

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

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

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

    Даже стыдно об этом вспоминать. Жаль, что не нашлось никого, кто бы спросил: Иван, зачем ты его разбираешь? Что хочешь там увидеть? Предположим, ты открыл его, а там вода. Значит, срочно ремонт. А теперь предположим, воды нет. Значит, все хорошо? Не факт. Если и правда обошлось, мастер его почистит от пыли и вернет через пару часов. Если нет, значит, вода вступила в реакцию, впиталась в батарею, и наступит жопа. Так что вариант один — в ремонт.

    Так и было в моем случае: открыл, а воды нет. Обрадовался. Пыль собрал, выправил полоски радиатора ножом. Собрал — не работает. Потерял 40 минут, пока ездил за специальными отвертками.

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

    Теперь этот долбаный фен. Им нельзя пользоваться, потому что фен ускоряет процесс впитывания воды. Представьте эксперимент: на плотный картон поместили каплю. Если ее не трогать, то часть воды впитается, а другая высохнет. Если фигачить феном, она высохнет быстрее, но и впитывание будет происходить быстрее. Фен ускоряет оба процесса. Цель ремонта не высушить воду, а не допустить реакции деталей с водой. В данном случае фен делает вредную работу — ускоряет впитывание влаги.

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

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

    Короче, езжайте в ремонт асап. Теперь о том, как защитить Мак от воды.

    Вытирайте руки. В первый раз я залил мак каплями воды, которые стекали с влажных рук. Кажется, что ерунда, а в итоге смерть материнки и три недели ожидания новой из Москвы.

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

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

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

    Купить подставку, которая держит Мак над поверхностью стола. Подойдет тем, у кого два внешний монитор и клавиатура.

    Надеюсь, что-то полезное я донес. Берегите технику Эпла. Иначе придется превозмогать на старенькой Ленове с Убунтой, но это тема отдельного рассказа.

  • Рост доллара

    У тех, кто живет в России, но работает за валюту, есть дурацкая черта — радоваться росту доллара. Прекратите это делать.

    Во-первых, это не доллар растет, а рубль падает.

    Во-вторых, доллар вырос на 10%, а цены скакнут треть. При этом доллар потом вернется на старый уровень, а цены нет. Так уже было много раз, но у людей память как у рыбки Дори. Попробуйте найдите сейчас нормальное молоко за 30 рублей.

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

    Не все работают за доллары. Если точнее, очень немногие. Врачи, учителя, госслужащие получают обычные рубли. От того, что ваш доход вырос на 10%, им не легче. Проседает вся страна.

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

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

  • Проверка русской орфографии в Emacs

    Неделю назад добавил в Emacs проверку русской орфографии. Теперь проверяю заметки прямо в редакторе. Расскажу, как подружить Emacs с русским текстом и заодно об орфографии в принципе.

    Emacs умеет проверять текст без установки сторонних модулей. Для этого служат команды с префиксом ispell-. Например, ispell-buffer проверит весь буфер, ispell-region – выделенный фрагмент.

    Для проверки Emacs вызывает системную утилиту. Он передает ей слово, контекст и дополнительные параметры. Программа ищет слово по внутреннему словарю. Если оно найдено, то переходит к следующему слову. Если точного совпадения нет, программа предлагает похожие варианты для замены.

    По умолчанию Emacs использует одноименную программу ispell. Это старая консольная утилита, заменившая spell – еще более древнюю программу. Префикс i означает international, то есть проверку на любом языке при наличии словаря.

    Установить русский пакет в ispell долгое время не получалось. Его нет в репозиториях brew, поддерживается только Линукс. Сборка под Мак валилась ошибками в кодировках.

    Emacs работает не только с ispell, но и другими spell-совместимыми программами. К ним относится, например, aspell, утилита из проекта GNU. Она реализует тот же протокол обмена данными, что и ispell, но более мощная и современная.

    Поставим ее из brew:

    brew install aspell --with-lang-ru
    

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

    Полный список флагов можно посмотреть в формуле на Гитхабе.

    Чтобы Emacs понял, что теперь у нас aspell вместо ispell, скажем ему об этом командой:

    (setq ispell-program-name "aspell")
    

    Добавьте это выражение в свой .emacs файл. Необязательно перезагружать редактор. Чтобы изменения вступили в силу мгновенно, скопируйте этот же код в буфер *scratch*, поставьте курсор за последней скобкой и нажмите C-j.

    Начнем проверку на английском. Откройте любой файл с латиницей. Из списка команд, вызванного по M-x, выберите ispell-buffer. Редактор переключится в режим проверки:

    Когда spell-программа находит незнакомое слово, проверка останавливается в ожидании пользователя. Цифры от 0 до 9 служат для выбора подходящего слова. Клавиша i означает принять слово как исключение. Пробел означает пропустить слово.

    По окончанию проверки Emacs предложит сохранить правила в локальный словарь. Например, у вас было слово Postgres, о котором aspell не знал. Если в процессе проверки вы нажали i и сохранили локальные правила, то в следующий раз Emacs воспримет его как словарное слово.

    Чтобы проверить русский текст, переключите словарь командой ispell-change-dictionary. Выберите из списка пункт ru. Откройте файл на русском и запустите ispell-region.

    Проверка русского текста ничем не отличается от английского. Работают те же клавиши и команды. Вот как выглядит проверка этой заметки на этапе написания:

    Иногда мы пишем текст, в котором есть и русские, и английские слова. Например, описание программы и ее код. Emacs не умеет проверять текст сразу на нескольких языках. Если запустить прогон всего буфера, то русскому словарю будут незнакомы все английские слова и наоборот. Чтобы не добавлять в каждый словарь иностранные исключения, проверяйте текст частями. Выделяйте нужные абзацы и вызывайте ispell-region.

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

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

    Мой полный конфиг Емакса лежит на Гитхабе.

    А как дела с русским языком в вашем редакторе?

  • Мнение

    Иногда я слышу упреки, что пишу в блоге одно, а делаю другое. Что странно, ведь здесь нет логической связи.

    Если автор о чем-то пишет, он не клянется следовать этому всю жизнь. Запись в блоге – это только мнение. Оно привязано ко времени, душевному состоянию, отношениям в проекте и семье. А еще недавним разговорам и миллиону других мелочей, которых не видно в тексте.

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

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

    Но если вы действительно радеете за правду, и все ваши помыслы лишь о том, чтобы слова не расходились с делом, то послушайте вот что.

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

    Высказывания были порой самые безумные. Что через полгода технология Х станет лидирующей на рынке. Что курс биткоина пробьет шестизначное число. Что все станут православными. И прочий апофеоз.

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

    Дело в другом. С таким подходом ты начинаешь выглядеть маньяком и мудаком одновременно. Люди очень болезненно реагируют, когда припоминаешь их ошибки. Расцветает весь спектр эмоций. Если и есть способ угробить отношения, то вот он: ловить на слове.

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

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

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

    Перечитываешь пост, комментарий, и понимаешь – да, на сегодняшний день мысль из коммента мне ближе, чем собственное мнение год назад. Такие вот прыжки во времени. Но не надо обманывать время, писать дополнения, оправдываться. Для меня привязка ко времени стала фишкой по умолчанию. Если читатель этого не понимает, то что теперь? Это меня не заботит.

    Я тоже раньше так поступал – находил старые записи в чьих-то блогах и доказывал, что автор не прав. Например, насмехался над диванными аналитиками, сулившими рост биткоина до миллиона долларов. Или нашел доклад от 2012 года, где автор сулит Кложе скорую смерть.

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

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

    Подытожим. Блог – это мнение. Оно не лучше и не хуже вашего. Просто оно записано и потому займет больше внимания, чем высказанное в пустоту.

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

  • Зачем нужна Кложа

    Когда спрашивают, зачем изучать Кложу, мы слышим что-то неубедительное. Репл, функциональный подход, неизменяемость. Это слабые аргументы. Их нет в мире тех, кто годами сидит в императивных языках. Слушатель не понимает, о чем речь, ему и так нормально. Еще прилепят Рича Хикки, и это уже не смешно. Его имя так затаскали, что один фанатизм.

    Как же ответить, зачем нужна Кложа? Чем подкрепить точку зрения? Примерами из жизни.

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

    Сидели в офисе, работали, устали. Захотели почесать языком. Коллега пожаловался на функцию map в Питоне, и пошло-поехало. В итоге мы вышли на функциональное программирование и работу с данными в ФП-стиле. Заспорили, как лучше обходить коллекции.

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

    Я сначала не понял, почему это именно задача – в том смысле, почему над ней нужно думать. Совершенно рутинная вещь, два редьюса. Первый собирает все рейты по возрасту, второй считает среднее. Вот и все.

    Можно свести два в один, как-то оптимизировать, но не суть. Главное, что кложурист вообще не видит здесь проблемы. Задача уже решена в уме, достаточно написать код в репле.

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

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

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

    Понимаете, нет инструмента! А нет инструмента, нет и понимания, что чего-то не можешь. Будешь сраться в чате, доказывая, что твой язык клевый. А как же ты узнаешь как эффективно работать с данными, если в языке ничего для этого нет? Замкнутая система.

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

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

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

    Дело не в том, что в Кложе трудно обрабатывать коллекции. Наоборот, это сильнейшая ее сторона. Разница в том, что на этот раз автора заставили делать это правильно. Отсюда ломка.

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

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

    В Кложе нельзя так, просто нельзя. В ней есть изменяемые коллекции и стейт, но это высокая планка. Язык так устроен, что если ты взялся что-то менять, то подружись сперва с неизменяемостью.

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

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

    Возвращаясь к вопросу из заголовка – Кложа нужна затем, чтобы научиться работать с данными. Чтобы при одном только виде коллекции мозг автоматом выдавал комбо из map, reduce и filter.

    Если вы пишете только на императивных языках, то скорей всего, не умеете работать с данными. Вам нормально, но вы не умеете. Не умеете, но вам нормально. Такой вот замкнутый круг. Это не страшно, и я до Кложи не умел. Посмотрел старый код на питоне и ужаснулся.

    Нет трудности в том, чтобы сесть за Кложу на недельку и повтыкать, как работать с данными. Мир после этого станет другим.

  • Прелести РЖД

    Каждое лето я вожу сына в деревню к бабушке. Поездка туда и обратно занимает два дня. Отвезти и забрать – четыре.

    Мне приходилось ездить разными классами и типами вагонов. В целом, РЖД медленно, но верно улучшается. Появляются фирменные поезда, в проводники набирают молодежь. Начальник поезда делает обход и опрашивает пассажиров.

    Все же, хотелки опережают инертную РЖД. Последние годы я наблюдаю все те же проблемы, а решения им не видно.

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

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

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

    У меня вскипает от этого голова. Нужно понять, с какой стороны прибудет состав. Мысленно соотнести номер вагона с его позицией. Если нумерация от хвоста, сделать реверс. Потом сматчить мое положение и выбрать, куда идти. Как часто я ошибаюсь? Да постоянно.

    Мне довелось путешествовать поездом в Китае. Поразило, что вокзалы Китая по уровню комфорта приближаются к аэропортам. Большие пространства, все прозрачно и чисто. Пассажиры на определенный рейс не снуют сами по себе, а объединяются в группу, как в аэропорту. Группа идет вместе по всем этапам. В конце пассажиров заводят в зал ожидания, где нет посторонних.

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

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

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

    Пару лет был в Москве зимой. Был неприятно удивлен числом милиционеров и бомжей. За каждым баннером лежит бездомный, а над ним мент с овчаркой. Насколько я понял, у мента одна задача – перегнать бомжа на другой участок. Так они и кочуют из крыла в крыло.

    Я подозреваю, что ни один значимый чиновник РЖД не садится в обычный поезд на обычном вокзале. Им подают служебные поезда, у которых другой регламент. В том и проблема: производитель не пользуется своей же услугой. В результате не понимает, какое дно производит.

  • По газонам не ходить

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

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

    Газон становится черной дырой. Он занимает место, но с ним нельзя ничего делать. Якобы это радует глаз: ты должен смотреть и радоваться. В чем радость от того, что видишь, но не можешь потрогать? Что за фетишизм?

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

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

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

    В закрытой группе Вконтакте у жильцов бомбит вот по какому поводу. На пути между домом и парковкой воткнули пятачок с газоном. Люди стали срезать путь и постепенно вытоптали дорожку. Свиньи! Понаехало быдло из деревень!

    Спрашивается, кто был тот проектировщик, который поставил препятствие поперек маршрута? Это жилой квартал, а не городок для малышей. Вот приехал человек с работы, устал. С какой стати он должен что-то обходить? Когда он покупал квартиру, он платил в том числе и за комфортный двор.

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

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

    Давайте признаем: не ходить по газону это совок. Мы слышали это в детстве от недовольных бабушек и мамаш. Нельзя без объяснения причин. На самом деле можно. Газон – часть городского пространства. Эта часть должна быть полезна человеку. Иначе от нее избавляются.

  • Общение. Идеальное окружение

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

    Казалось бы, собеседник не выгораживается – он хвалит не себя, а вещи или программы. Но долго слушать эту хвалу невозможно. Почему?

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

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

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

    Любопытство побуждает исследовать предмет не потому, что он идеален, а потому что просто хочется. Оно привносит элемент случайности, стимулирует интерес к жизни.

    Получается забавная корреляция. Есть предметы на выбор, и есть набор, которым пользуется человек. Удивительным образом оказывается, что выбранные предметы – самые лучшие. Какое совпадение! Со стороны смотрится нелепо, но человек искренне убежден: его выбор лучший.

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

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

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

  • Новый раздел: книжная полка

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

    Сейчас дочитываю еще две книги. Буду держать страничку актуальной.

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

    Время на чтение можно найти всегда. С некоторыми книгами нужно только начать, и аппетит придет в процессе.

    Долгое время я считал, что одновременно можно читать только одну книгу. Вроде как читать еще и вторую это как изменять первой. Но теперь читаю сразу две. Когда устал от одной, переключаюсь на другую.

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

    Можно верить тому, кто написал книгу, но не тому, кто толкает идеи в чатах и соцсетях.

    Чтение это особый процесс, ему нет аналогов.

Страница 1 из 41