Все записи с тэгом tools

Что не так с совеременной почтой?

·

Почта давно перестала быть простым (и возможно удобным) инструментом. В череде изменений интерфейса в Gmail, в чехарде перепрыгиваний с одной почты на другую, я перестал доверять почтовому сервису.

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

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

На почту завязано огромное количество сервисов. Даже если просто изменить доменное имя, то в старом аккаунте могут остаться важные данные. А может быть, и не останутся. Например, тот же Proton дает лишь 1 Гб бесплатного хранилища. Так что при переезде с него мне пришлось просто удалить 5 Гб данных. Как бы я ни старался все сохранить, я уже столкнулся с пробелами в истории переписки.

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

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

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

Теперь про письма. Когда-то давным-давно Google экспериментировал с Inbox. Я считаю, что это был один из очень успешных проектов, просто пользователи в то время не были готовы к такому подходу. Однако я считаю, что почтовые сообщения действительно стоит рассматривать как своего рода задачи. Их можно писать самому себе, формировать проекты. А если мы говорим о рабочих письмах, то в большинстве своем все письма можно рассматривать как сущности различных проектов.

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

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

Координатор по часовым поясам

·

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

Что такое syn-co.me?

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

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

Почему это критично?

Представьте сценарии, в которых я работал:

Сценарий 1: Глобальная команда с экстремальной разницей во времени

Нужно найти время для встречи: разработчик в Токио (9:00–18:00), дизайнер в Берлине (8:00–17:00), менеджер проекта в Сан-Франциско (9:00–18:00) и контент-менеджер в Дубае (8:00–16:00).

Разница во времени между крайними точками — 16 часов. Пересечение всего 1–2 часа в день.

Вручную считать это — занимает минут 10–15. А если встреч в день 3-4? Вот уже потеряно час времени на одну координацию.

20251202_130732_b265ab.webp

Посмотреть пример


Сценарий 2: Фриланс команда с асинхронными часами

Четыре фрилансера, каждый работает в своем ритме:

  • Фрилансер 1: 6:00–14:00 (ранний старт)
  • Фрилансер 2: 10:00–22:00 (обеденная смена)
  • Фрилансер 3: 14:00–23:00 (вечерний график)
  • Фрилансер 4: 16:00–00:00 (ночной сервис)

Найти окно, когда все четверо онлайн одновременно — это практически головоломка. Часто просто невозможно.

20251202_130833_4c7f2b.webp

Посмотреть пример


Сценарий 3: Частично удалённая команда (гибридная боль)

Офис находится в Москве (9:00–18:00), но есть:

  • разработчик в Австралии (работает 18:00–02:00 по московскому времени — ночью!)
  • стажер в Индии (12:00–20:00 московского)
  • два офисных сотрудника (9:00–18:00)

Все нужны на одном созвоне. Но когда? Австралиец уже спит, когда просыпается Московский офис. Индиец работает, но только 3-4 часа пересекаются со всеми остальными.

20251202_130927_12d6de.webp

Посмотреть пример


Сценарий 4: Асинхронные часы в одном часовом поясе

Все в одном городе (например, Москве), но разные рабочие графики:

  • "Жаворонок" работает 6:00–14:00
  • "Нормальный" сотрудник 10:00–18:00
  • "Сова" 14:00–22:00

На первый взгляд просто, но окна пересечения очень узкие. Часто получается, что единственный момент, когда все три свободны — это 14:00, и то 4 часа.

20251202_131101_5d8939.webp

Посмотреть пример


Сценарий 5: А вот стартап-команда из 10 человек

Пример, одной из команд в которой я когда-то работал — 10 человек из 10 разных городов:

Денис (Белград) 9–18
Александр (Москва) 9–18
Эмма (Лондон) 9–18
Джеймс (Сингапур) 9–18
София (Нью-Йорк) 9–18
Юки (Токио) 9–18
Лиза (Берлин) 9–18
Маркус (Лос-Анджелес) 9–18
Анна (Варшава) 8–17
Дэвид (Дубай) 7–16
Изабелла (Рим) 10–19

Все одновременно работают 9-18 — вроде просто. Но разница во времени между Лос-Анджелесом и Токио — 17 часов. Окно пересечения при такой разнице буквально 1-2 часа в день. А если кто-то берет выходной или уходит на обед — окно сжимается еще больше.

Посмотреть пример


Как это решает syn-co.me?

Вы просто добавляете имена коллег, их часовые пояса и часы работы. На одном экране видите 24-часовую шкалу для каждого. Синяя полоса — это рабочее время, серая — спят или не работают.

За 10 секунд видно, где пересекаются все — вот и время встречи.

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


Результаты

20251202_125333_67deb8.webp

За последний месяц сервис использовали 655 уникальных пользователей из разных стран:

  • 🇺🇸 51% — США
  • 🇩🇪 Германия
  • 🇬🇧 Великобритания
  • 🇫🇷 Франция
  • 🇷🇸 Сербия
  • и другие страны

20251202_125403_d86191.webp

Часть людей, используют сервис не напрямую, а через синхронизацию в Confluence. Пока сервис существует недолго, но меня определенно радует текущая динамика. В моем бэклоге еще много идей, а после сегодняшнего митапа их стало еще больше. Если вы работаете в распределённой команде и устали от координации встреч — попробуйте syn-co.me. Это займет 30 секунд.

Нам нужно поговорить о браузерах

·

Вчера листая ленты bsky наткнулся на анонс — релиз еще одного браузера.

20251129_082205_23bbc8.webp

Сначала подумал "ну выпустили и выпустили", а потом решил глянуть что там под капотом. Буквально несколько дней назад я вновь экспериментировал с браузерами, переключившись с Firefox на Brave, а потом назад. Уже не помню сколько лет я использую фокс. Кажется, еще с версии 3.5, а может и раньше, периодически переключаясь на другие браузеры, чтобы изучить их опыт использования. И вот на протяжении всех этих долгих лет использования должен сказать, что на фоксе все хорошо. Работает он понятно, предсказуемо и все еще придерживается идеи о приватности личных данных. Как всегда, не хватает оптимизаций вроде экономии батареи. Но жить с этим можно.

В какой-то момент в фоксе появились вертикальные вкладки. Я долго избегал их, но 13" все же сделали своё дело и я переключился на вертикальное отображение вкладок с открытием панели по control + z. В общем, фокс мне нравится на уровне пользовательского опыта. И пользуясь другими браузерам, как-то не возникало мысли о том, что фокс пора заменить. Возможно... до вчерашнего дня.

Не хочу кидаться громкими словами, но кажется Orion поживает на моём лэптопе дольше нескольких дней. Если сравнить его визуально с фоксом, то обратите внимание, насколько компактны могут быть их интерфейсы. На 13шке каждый пиксель важен. Именно поэтому я перешел на вертикальные табы с автоскрытием.

20251129_084123_64fb76.webp

Одна из крутых фич Ориона — клик по ссылке вне браузера открывает окно предпросмотра. На самом деле, это фишка MacOS + Safari, но Safari сильно проигрывает по кастомизации и удобству. А еще, можно открыть предпросмотр (вместо открытия новой вкладки), прочитать что-то и закрыть. В результате количество открытых вкладок резко снижается.

20251129_084733_f98e14.webp

Во что еще хочется верить — в посте разработчиков говориться о "Zero Telemetry" и "No ad or tracking technology". Если так дальше пойдет, это будет круто. Например, когда Firefox решил обновить свою политику и интегрировать Claude, это вызвало огромную волну негатива. И хотя позже Mozilla обещала удалять все данные, пользователей это особо не успокоило.

Что еще из классного в Орионе?

Заметки

20251129_101349_df2506.webp

Я не знаю зачем, но это выглядит очень мило. Прямо в браузере есть отдельная вкладка, где можно что-то записать. Увидев эту фичу, почему-то вспомнил Flock Browser (был когда-то такой). Заметки (точнее заметка, всего одна) в браузере вещь не самая нужная, конечно. Но с другой стороны, всегда знаешь что есть пространство, куда что-то можно быстро записать, а потом и экспортировать .txt или .md. В общем, небольшая приятная деталь интерфейса.

Расширения.

Браузер поддерживает расширения как из Chrome Web Store, так и из Firefox Add-ons. Еще он использует нативный WebKit. Из того, что успел заметить за день использования — многие сайты действительно быстро отрисовываются.

20251129_100617_97086f.webp

Картинка выше из статьи Orion web Browser Review 2025. В целом и правда есть ощущение, что оптимизация работы с памятью выполнена на порядок выше чем у Chrome-based и Firefox.

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

Как настроить WezTerm для удобной работы над проектами

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

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

Я когда-то пробовал разбираться с tmux, но бросил. Было непонятно, и не очень надо. Сейчас использую WezTerm. Это современный кроссплатформенный терминальный эмулятор и мультиплексер. До этого работал с iTerm2, Wrap.dev, Kitty. Пробовал даже Alacrity. Но прижился WezTerm. Он довольно производительный (не самый-самый), но норм. Написан на Rust. Поддерживает GPU-ускорение рендеринга. Имеет встроенную поддержку шрифтов с лигатурами и поддерживает конфигурацию на Lua. В общем, он стоит того, чтобы его попробовать.

Для работы над проектом я обычно две вкладки. Одна содержит 3-4 панели, в каждой из которых запускаются
— Redis-сервер
— Rails-сервер
— Сборка фронта
Еще одна вкладка в редакторе с Neovim для работы с кодом.

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

Сам файл .wezterm.lua лежит в корневой директории пользователя. В общем, ничего не обычного. Базовая конфигурация WezTerm выглядит так. Остальное в gist — пример настройки панелей.

local wezterm = require("wezterm")
local config = wezterm.config_builder()
-- Настройки шрифта и интерфейса
config.font_size = 13.0
config.font = wezterm.font("JetBrains Mono", { weight = "Bold" })
config.color_scheme = "Tokyo Night Storm"
config.line_height = 1.05
config.use_dead_keys = false
-- Настройки окна
config.window_padding = {
left = 5,
right = 5,
top = 5,
bottom = 5,
}
config.initial_cols = 120
config.initial_rows = 36
return config

И ещё раз о Strava

·

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

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

Отказ от использования Strava

·

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

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

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

Компания Strava объявила о серьезных изменениях в своем API (интерфейсе для сторонних приложений), которые существенно ограничивают возможности других приложений работать с данными пользователей. Подробно можно почитать об этом у Ray Maker. Кратко, вот основные изменения:

— Сторонние приложения больше не смогут показывать данные активности пользователя Strava другим пользователям
— Запрещено использовать данные из API Strava для искусственного интеллекта и машинного обучения
— Запрещено выполнять любую аналитику или обработку данных Strava

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

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

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

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

Подборка ссылок #03

Интересная идея о дизайне url
Web-based трекер финансов с поддержкой local-first и упором на privacy.
How We Designed a White-Label In-Car Infotainment System — классная статья и проектировании интерфейса для Android Auto.
The State of ES5 on the Web — статья о том, что пора уже перестать транспилировать код в ES5 и вместо этого использовать современные стандарты.

Опубликую сразу несколько ссылок про VIM. Во-первых, это на справочник Vim help files. Во-вторых, это книга Practical Vim: Edit Text at the Speed of Thought. И ссылка на AstroNvim, если вдруг решите сменить VS Code и попробовать что-то новенькое.

Путь к освоению VIM: от плагина до Practical VIM

·

Решил разобраться в VIM. Вообще я часто пользуюсь им, для быстрого редактирования файлов. Этакая разовая работа. Но полноценно переключиться на работу с VIM у меня не получается. По умолчанию использую VS Code + VIM плагин. Получается неплохой симбиоз: удобные хоткеи VS Code + удобная навигация внутри файла. Но одно дело удалять строчки и прыгать туда-сюда по файлы, а другое дело полноценно работать с большим проектом.

Обычно многие статьи заканчиваются командами h, j, k, l. А дальше читайте официальную документацию, там всё подробно описано. А выйти-то как? А как отступ добавить?

Так вот, отступ в режиме NORMAL задаётся через двойное нажатие >. И тут вот какая проблема: статьи-то на самом деле хорошие, просто команд и сценариев так много, что всего не перечислишь. А еще есть куча разнообразных форков со своими доработками. Например, я пользовался LunarVim. В целом, было неплохо, но некоторые вещи долгое время не исправлялись. И вот однажды я полез искать как же поправить один баг и с удивлением обнаружил, что проект не развивается.

Решил попробовать Astronvim. Проект оказался поинтереснее: быстрее, более структурированнее. И как-то так увлекся настройкой (что-то добавил, что-то переназначил), что в итоге сделал свой форк.

В какой-то момент, устав читать документацию и статьи, я купил себе книжку Practical VIM. Сначала читал демо, потом еще раз читал демо. Понял, что очень понравилось. Простой английский, легкое повествование. Текст читается прекрасно. К слову, у меня есть ещё одна книга про VIM “Изучаем vi и VIM”. Так вот в этой книге я продвинулся всего на четыре главы. В общем, “Practical VIM” понравилась больше.

И вот к примеру пара цитат из книги:

The combination of operators with motions forms a kind of grammar. The first rule is simple: an action is composed from an operator followed by a motion. Learning new motions and operators is like learning the vocabulary of Vim. If we follow the simple grammar rules, we can express more ideas as our vocabulary grows.
Neil, Drew. Practical Vim (pp. 24-25). Pragmatic Bookshelf. Kindle Edition.

и

when an operator command is invoked in duplicate, it acts upon the current line. So dd deletes the current line, while >> indents it.
Neil, Drew. Practical Vim (p. 25). Pragmatic Bookshelf. Kindle Edition.

Ещё книга содержит много отсылок к документации. При желании можно пойти и узнать больше деталей. В общем, книга классная, рекомендую.

Что касается VIM и ежедневного его использования, могу сказать, что в процессе чтения книги снова появился живой интерес к использованию. Некоторые вещи уже не выглядят болью. Еще один важный момент — готовый настроенный конфиг. Возможно, когда-нибудь я попробую всё настроить с нуля. Но вот прямо сейчас хочется использовать то, что работает из коробки. Поэтому решения вроде AstroNvim хорошо подходят.

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

Вывода у статьи не будет. Скорее это просто чекпоинт на тему “вот узучаю VIM”.

Подборка ссылок #02

— Вышел Neovim 0.10.
— Обзор нововведений в браузерах. Поддержка новых анимаций, нативные поповеры. Ну и ждём кастомные селекты. The latest in Web UI (Google I/O ‘24)
— Статья описывает концепцию рецептов в дизайн системе
— Отличное видео для новичков: React JS c Нуля – Курс для начинающих БЕЗ ВОДЫ
— Если вы помните, что когда-то был такой Wunderlist (который потом Microsoft купил), то знайте: разработчики вандерлиста выпустили новое приложение — Superlist. Выглядит красиво, пользоваться приятно, как и раньше.

Настройка VSCode

·

20241014_084139_87417a.webp

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

Шрифт Fira Code.

Плагины must have для работы с Vue: Vue(Volar, не Vetur), ESLint, Prettier, GraphQL.

Еще дополнительно у меня установлены:

— эмулятор VIM
Better Comments
Color Highlight
EditorConfig
TODO Highlight

Файл .vscode/settings.json содержит вот такой конфиг:

{
// prettier
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
// eslint
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
// to see functions arguments name (optional)
"javascript.inlayHints.parameterNames.enabled": "all",
// quick suggestions while typing (optional)
"editor.quickSuggestions": {
"strings": true
}
// Common settings
"workbench.statusBar.visible": false,
"workbench.sideBar.location": "right",
"editor.fontSize": 13,
"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true,
"editor.tabSize": 2,
"editor.fontWeight": "500",
"search.showLineNumbers": true,
// For VIM
"editor.lineNumbers": "relative",
"editor.rulers": [100],
"workbench.iconTheme": "vscode-icons",
"workbench.activityBar.location": "hidden",
"telemetry.telemetryLevel": "off",
"explorer.compactFolders": false,
"workbench.editor.showTabs": "none",
"breadcrumbs.enabled": false,
}

Настройка MacOS

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

Самая полезная ссылка — Mac OS X Setup Guide.

В первую очередь

— Atom => VS Code, neovim
iTerm, Warp
— Wunderlist => Singularity

Мессенджеры

— Skype
— Slack
— Telegram

Браузеры

Firefox

Графические программы

— Adobe Photoshop => Pixelmator

Утилиты

Macs Fan Control
The Unarchiver
Transmission
Spotify
VLC Player
Xcode: xcode-select --install

Настройка системы

Mac OS X Setup Guide

Homebrew
ohmyz.sh + .zshrc config
— Git: brew install git
NodeJS