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

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

Почта давно перестала быть простым (и возможно удобным) инструментом. В череде изменений интерфейса в Gmail, в чехарде перепрыгиваний с одной почты на другую, я перестал доверять почтовому сервису.
Даже если сервис предоставляет возможность подключения собственного домена, на сегодняшний день этого недостаточно.
Чуть ранее я писал, что ищу новый проект, к которому мог бы присоединиться как разработчик или engeneering manager. Пока же общаюсь с разными компаниями, есть время и на свои проекты. Сегодня, к примеру, рассказывал о своем проекте в одном классном сообществе.
Работая в распределенных командах, я заметил проблему поиска удобного времени для созвона. В маленькой команде может отсутствовать бюджет на корпоративные инструменты вроде 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? Вот уже потеряно час времени на одну координацию.

Сценарий 2: Фриланс команда с асинхронными часами
Четыре фрилансера, каждый работает в своем ритме:
Найти окно, когда все четверо онлайн одновременно — это практически головоломка. Часто просто невозможно.

Сценарий 3: Частично удалённая команда (гибридная боль)
Офис находится в Москве (9:00–18:00), но есть:
Все нужны на одном созвоне. Но когда? Австралиец уже спит, когда просыпается Московский офис. Индиец работает, но только 3-4 часа пересекаются со всеми остальными.

Сценарий 4: Асинхронные часы в одном часовом поясе
Все в одном городе (например, Москве), но разные рабочие графики:
На первый взгляд просто, но окна пересечения очень узкие. Часто получается, что единственный момент, когда все три свободны — это 14:00, и то 4 часа.

Сценарий 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 часа в день. А если кто-то берет выходной или уходит на обед — окно сжимается еще больше.
Вы просто добавляете имена коллег, их часовые пояса и часы работы. На одном экране видите 24-часовую шкалу для каждого. Синяя полоса — это рабочее время, серая — спят или не работают.
За 10 секунд видно, где пересекаются все — вот и время встречи.
Никаких гугления таблиц часовых поясов. Никаких "подождите, в Токио сейчас сколько?". Просто визуально видите.

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

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

Сначала подумал "ну выпустили и выпустили", а потом решил глянуть что там под капотом. Буквально несколько дней назад я вновь экспериментировал с браузерами, переключившись с Firefox на Brave, а потом назад. Уже не помню сколько лет я использую фокс. Кажется, еще с версии 3.5, а может и раньше, периодически переключаясь на другие браузеры, чтобы изучить их опыт использования. И вот на протяжении всех этих долгих лет использования должен сказать, что на фоксе все хорошо. Работает он понятно, предсказуемо и все еще придерживается идеи о приватности личных данных. Как всегда, не хватает оптимизаций вроде экономии батареи. Но жить с этим можно.
На днях решил автоматизировать рутинную работу при старте разработки. Не знаю, почему раньше до этого не доходил. Но вот буквально на днях пришло осознание, что есть пробел, который надо закрыть.
В чем проблема? Каждый раз переключаясь с одного проекта на другой приходится совершать одни и те же действия: открыть терминал, перейти в нужную директорию, запустить несколько разных процессов в разных вкладках, открыть редактор кода.
Я когда-то пробовал разбираться с 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 объявила о серьезных изменениях в своем API (интерфейсе для сторонних приложений), которые существенно ограничивают возможности других приложений работать с данными пользователей. Подробно можно почитать об этом у Ray Maker. Кратко, вот основные изменения:
— Сторонние приложения больше не смогут показывать данные активности пользователя Strava другим пользователям
— Запрещено использовать данные из API Strava для искусственного интеллекта и машинного обучения
— Запрещено выполнять любую аналитику или обработку данных Strava
Безусловно, после волны критики компания выпустила еще один пресс-релиз, в котором попыталась оправдаться и успокоить, сказав, что подобные изменения сделаны исключительно ради конфиденциальности данных и коснуться они лишь 0.1% приложений. К сожалению, это абсолютно ожидаемый ход и ничего кроме обмана и жонглирования данными в нём нет.
Всё выглядит на самом деле так, как кажется на первый взгляд: компания просто лишает обмена данными огромное количество приложений и концентрирует все данные только в себе. В результате это приводит к тому, что сервис Strava становится единственным сервисом, в который можно отдавать данные из разных гаджетов.
Вы не заметите этих изменений, потому что огромное количество компаний, которые разрабатывали приложения, синхронизирующиеся со Strava, в течение 30 дней (выделенные Strava) будут в мыле решать проблему работоспособности и выживания своего бизнеса.
Я уже видел подобные лицемерные заявления в своей практике и понимаю, что этот огромный корабль будет плыть туда куда ему нужно, ни смотря не на что. Но я не хочу быть пассажиром этого корабля. Поэтому с сегодняшнего дня, я удаляю аккаунт Strava.
— Интересная идея о дизайне 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. Вообще я часто пользуюсь им, для быстрого редактирования файлов. Этакая разовая работа. Но полноценно переключиться на работу с 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”.
— Вышел Neovim 0.10.
— Обзор нововведений в браузерах. Поддержка новых анимаций, нативные поповеры. Ну и ждём кастомные селекты. The latest in Web UI (Google I/O ‘24)
— Статья описывает концепцию рецептов в дизайн системе
— Отличное видео для новичков: React JS c Нуля – Курс для начинающих БЕЗ ВОДЫ
— Если вы помните, что когда-то был такой Wunderlist (который потом Microsoft купил), то знайте: разработчики вандерлиста выпустили новое приложение — Superlist. Выглядит красиво, пользоваться приятно, как и раньше.