• Большой-большой проект

    Часто слышу — Кложа не подходит для больших проектов. Даже цитируют Алекса Миллера из твиттера: “мы считаем Кложу прекрасным решением для небольших команд в быстро меняющихся условиях рынка”. Цитату пишу по памяти, видел когда-то давно.

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

    Read more →

  • Поудалял

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

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

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

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

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

    Инстаграм. Закинул туда штук десять фоток, но Инстаграм уже давно не про фотки, а своего рода Твиттер — треды, сторизы, локальные разборки… Не употребляю.

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

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

    Дропбокс. Про этот сервис я писал не раз (пост, еще пост). Вкратце — Дропбокс в свое время был революцией, но скатился в унылую массу ненужных фич. Ребята выпустили облачные документы, потом какие-то заметки, команды, менеджер паролей… Венцом стал дичайший ребрендинг, “нативное” приложение на 300 мегабайт и сто экранов установки. Забрал пару файлов, снес и закрыл учетку. Помню старый Дропбокс, скорблю.

    Queryfeed. Удалил свой главный пет-проект. Занимался им аж с 2011 года – десять лет! Вкратце, сервис воровал данные из популярных соцсетей — в основном Твиттера и Инстаграмма. В работе над ним я испробовал сотни приемов и трюков, применял всякие выкрутасы. Покупал серые прокси, ходил в сеть через Тор, парсил HTML — всего и не вспомнишь. Отдельный факт – проект пережил не одну соцсеть! В свое время подключал Google Buzz и Google Plus. Оба появились и закрылись, а мой работал.

    Сервис был платный с подпиской в Paypal. Клиентов было не очень много, но на хостинг хватало. В лучшие месяцы приходило долларов 250. Чтобы справится с нагрузкой, которая исходила от ботов и скриптов, сделал архитектуру на множество нод, чтобы в любой момент добавить новую. Ничем серьезным этот бизнес не стал, и со временем отвлекал от основной работы. Все-таки пасинг сторонних ресурсов — это паразитирование на чужом бизнесе. В общем, закрыл сервис, не стал даже спасать бекапы и прочее, просто грохнул все ноды. Ушла эпоха!

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

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

    Что там еще? Левые учетки гугла. Хостинги, которыми уже не пользуюсь. Локальные файлы столетней давности. Как же классно все это удалять — неистово советую сделать то же самое. Старое освобождает путь для нового, и это просто замечательно.

  • Смысл

    Смысл жизни — пожалуй, самый инфантильный вопрос, которым может задаться человек. В жизни особи не больше смысла, чем в существовании камня. Тем более, что сама постановка вопроса убога. При чем тут смысл? Почему не цель или причина? С этими словами в вопросе становится больше смысла (забавная игра слов).

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

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

  • Что там с книгой? Полгода спустя

    Есть несколько новостей насчет книжки.

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

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

    • Сделал публичным репозиторий книги! Милости прошу: igrishaev/clj-book. Проект целиком на LaTeX, Docker и немного Кложи. Уточню, что я не спец в LaTeX, поэтому приму любую критику и советы. Инструкции по сборке допишу в readme чуть позже.
    • Книга в процессе перевода на английский. Вместе с Евгением Бартовым мы работаем уже над седьмой главой. Впереди долгая шлифовка и адаптация правок из второго издания, но когда-нибудь английская книга выйдет. Меня уже завернули в The Pragmatic Programmer из-за проблем с правами, так что буду искать другой вариант.

    Пока что все. Как видно, почти каждый пункт тянет на отдельный пост, буду освещать по ходу дела.

  • Фон на созвоне

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

    Не знаю как у других, а в Google Meet можно поменять фон на картинку и даже загрузить свою. Прикольная штука, коллеги часто этим пользуются. Но до чего же скудная фантазия у людей! Один ставит тропической остров, второй — серверную стойку. Что за убожество.

    Фон должен быть не просто фоном, он должен вызывать какие-то эмоции, воспоминания. Говоря русским языком — МЭСАДЖ. За пять минут накидал фонов, которые могут найти отклик в собеседниках. Замечу, что фоны сохраняются, и дальше их можно переключать мышкой.

    Божественный ковер:

    Screenshot 2020-12-19 at 14 10 52

    Read more →

  • Порты и прогресс

    Сегодня утром потянулся к ноуту, чтобы вставить провод в USB Type-C. И только тогда заметил, что все четыре порта заняты.

    По часовой стрелке:

    • монитор (Type-C → Displayport, 144Hz);
    • питание ноута;
    • зарядка устройств (телефон, клавиатура, тачпад, наушники);
    • токен доступа для работы.

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

    На первых порах пришлось кое-что докупить: взял фирменный блок c тремя портами (USB, HDMI и Type-C):

    , а также китайский донгл с нового USB на простой:

    Однако сейчас я ими уже не пользуюсь. Пихать чужие флешки небезопасно, а любой файл проще кинуть в мессенджерах. HDMI не поддерживает герцовку выше 60, и с недавних пор мне стало это важно (потом напишу отдельно). Карты памяти? Проще подключить андроид родственника по проводу, чем выковыривать карточку. Тем более, что китайцы ставят ее под батарею и в другие интересные места.

    Словом, если бы мне кто-то сказал, что уже скоро все четыре порта Type-C будут заняты, я бы удивился.

    В этот момент я понял, что такое прогресс. Как бы ни стонали обыватели, новый порт лучше и удобней. Он маленький, мощный, поддерживает все известные форматы. По нему передают видео, звук, данные, электричество, словом, огонь. Не удивительно, что два метра кабеля Thunderbolt стоят 14(!) косарей: по сути это провод из ста проводов.

    Для экспериментов я купил короткую версию длиной 0.8 метра и доволен ей.

    Удивляет скорее то, что хотя в ноутах Apple везде новые порты, на других устройствах все еще старый Lightning. Даже в последних айфонах. Приходится держать для зарядки провод Type-C → Lightning. Этому пора положить конец — везде ставить Type-C.

  • Почитать на выходных (выпуск 32)

    Горячо советую прочесть эти две статьи:

    • Как писать статьи в IT-журналы и блоги

      Интервью с редактором журнала “Хакер” Андреем Письменным. Очень глубокий, дружелюбно поданый материал. Допускаю, что как и я, вы читали “Хакер” сто лет назад на бумаге. Даже если так, все равно прочитайте: столь качественного интервью не попадалось уже давно.

    • In-depth: Functional programming in C++

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

  • Базы данных в Clojure (1)

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

    Реляционные БД

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

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

    Read more →

  • Зипперы в Clojure (часть 8). Заключение

    Оглавление

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

    HTML

    И прошлых примеров видно, что зипперы подходят для работы с форматом XML. В том числе их можно применить и для HTML. Строго говоря, синтаксис HTML отличается от XML: некоторые элементы вроде <br> или <img> не имеют закрывающих тегов. Проблему можно решить с помощью парсеров, которые учитывают эти особенности. На выходе получим XML-дерево, которое поддается обходу как в примерах выше.

    Read more →

  • Помогайте (опровержение)

    Послушайте еще одну кулстори и выводы из нее.

    Недавно я смотрел код на Джаве, и не понял одну вещь. Все-таки я кложурист и в кишки JVM лажу только по необходимости. Было непонятно, почему вместо интерфейса можно передать лямбду, ведь последняя, насколько я знаю, имплементит Runnable и Callable, а в коде был левый интерфейс. Нормальный вопрос, который знает средней руки джавист. И тут Штирлиц ошибся — спросил об этом в Телеграм-чатах.

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

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

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

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

    Несколько лет назад я писал пост про помощь коллеге. Опровергаю: помогать коллегам нужно. Все равно вы спустите свободное время на Ютуб, а тут хотя бы польза — умножение коллективных знаний.

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

    Вот и сейчас я пишу этот пост после того, как ответил некоему Томасу из Швейцарии. Экран текста. Чел строит приложуху, но не идут дела. Зато благодаря моим письмам продвинулся на стадию прототипа.

    Где-то я читал басню о том, как на заре Микрософта один клиент купил Ворд и затупил. Он написал бумажное письмо с вопросами и бросил в ящик у двери офиса. Через неделю он получил ответ на четырех листах, написанный от руки одним из разработчиков. Тот чел до сих пор хранит это письмо. Вот она какая, любовь к пользователям.

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

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